关于使用Keepalived实现Nginx的自动重启及双主热备高可用问题

目录
  • 1、概述
  • 2、使用Keepalived实现Nginx的自动重启
    • 2.1 借助Shell脚本,完成Nginx的重启
    • 2.2 为脚本赋予运行权限
    • 2.3 在Keepalived配置文件中增加配置
    • 2.4 重启Keepalived服务
  • 3、双主热备的搭建
    • 3.1 双主热备概述
    • 3.2 场景说明
    • 3.3 修改A服务器配置
    • 3.4 修改B服务器配置
    • 3.5 重启两台服务器的Keepalived
    • 3.6 设置DNS轮询
  • 4、云服务器的负载均衡
  • 5、综述

1、概述

之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下。

1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服务,但Nginx服务如果负载过大宕了,虚拟ip是不会指向备机的。

2)双机主备的特点是,只有1台机器在提供服务,备机在主机的Keepalived服务宕掉后才会提供服务,大大的造成了资源的浪费。

3)目前比较流行租用云服务器去运营公司的产品,那云服务器支不支持虚拟IP呢?

今天我们就上述的三个问题来讲解一下。

2、使用Keepalived实现Nginx的自动重启

2.1 借助Shell脚本,完成Nginx的重启

Keepalived不能直接启动Nginx,但可以执行shell脚本,因此这里我们需要借助Shell脚本启动Nginx。

在 /etc/keepalived 目录下,新建一个脚本 check_nginx.sh,以下是脚本的具体内容:

#!/bin/bash

# 执行查看Nginx进程的命令,并放在变量A中
A=`ps -C nginx --no-header | wc -l`

# 判断是否宕机,如果宕机尝试重启,如果重启不成功,则停止Keepalived
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 3
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        killall keepalived

    fi
fi

脚本来源于网络

2.2 为脚本赋予运行权限

# chmod +x /etc/keepalived/check_nginx.sh

2.3 在Keepalived配置文件中增加配置

打开Keepalived配置文件,# vi /etc/keepalived/keepalived.conf

修改配置文件,增加vrrp_script 和track_script的配置,配置如下:

global_defs {

   # 全局唯一的主机标识
   router_id server_a

}

vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 3 # 每隔3秒运行一次Shell脚本
    weight 10 # 脚本运行成功,权重加10
}

vrrp_instance VI_1 {

    # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
    state MASTER
    # 绑定的网卡
    interface ens33
    # 虚拟路由id,保证主备节点是一致的
    virtual_router_id 51
    # 权重
    priority 100
    # 同步检查时间,间隔默认1秒
    advert_int 1
    # 认证授权的密码,所有主备需要一样
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx
    }

    # 虚拟IP
    virtual_ipaddress {
        192.168.1.88
    }
}

2.4 重启Keepalived服务

重启后,发现,Nginx停掉后,很快会自动启动。

3、双主热备的搭建

3.1 双主热备概述

由于双机主备机制,每次只会由一台服务器对外提供服务,且主备机的配置是相同的,因此极大地造成了资源的浪费。

双主热备则解决了这个问题,双主热备的原理是两台服务器利用Keepalived互为主备,因此需要两个虚拟IP,再利用DNS轮询的配置,让一个域名按轮询的方式分别路由到两个虚拟IP上,最终达到高可用的目的。

3.2 场景说明

虚拟IP1:192.168.1.88

虚拟IP2:192.168.1.66

A服务器IP(主):192.168.1.144

B服务器IP(备):192.168.1.22

3.3 修改A服务器配置

配置如下:

! Configuration File for keepalived

global_defs {

   # 全局唯一的主机标识
   router_id server_a

}

vrrp_instance VI_1 {

    # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
    state MASTER
    # 绑定的网卡
    interface ens33
    # 虚拟路由id,保证主备节点是一致的
    virtual_router_id 51
    # 权重
    priority 100
    # 同步检查时间,间隔默认1秒
    advert_int 1
    # 认证授权的密码,所有主备需要一样
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP
    virtual_ipaddress {
        192.168.1.88
    }
}

vrrp_instance VI_2 {

    # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
    state BACKUP
    # 绑定的网卡
    interface ens33
    # 虚拟路由id,保证主备节点是一致的
    virtual_router_id 52
    # 权重
    priority 80
    # 同步检查时间,间隔默认1秒
    advert_int 1
    # 认证授权的密码,所有主备需要一样
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP
    virtual_ipaddress {
        192.168.1.66
    }
}

3.4 修改B服务器配置

配置如下:

! Configuration File for keepalived

global_defs {

   router_id server_b

}

vrrp_instance VI_1 {

    # 设置为备机
    state BACKUP
    interface ens33
    virtual_router_id 51
    # 权重设置的要比主机低
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP需要主备设置成一样
    virtual_ipaddress {
        192.168.1.88
    }
}

vrrp_instance VI_2 {

    # 设置为主机
    state MASTER
    interface ens33
    virtual_router_id 52
    # 权重设置的要比主机低
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP需要主备设置成一样
    virtual_ipaddress {
        192.168.1.66
    }
}

3.5 重启两台服务器的Keepalived

重启Keepalived即可。

3.6 设置DNS轮询

联系网络运营商解决。

4、云服务器的负载均衡

现在,很多公司都会选择租用云服务器运行自己的产品,因为更划算、更稳定,有专业人员负责运维。

但使用了云服务器,就要受云服务运营商的限制。

就拿虚拟IP这个事儿来说,一些云服务运营商就是不支持的。

如果不支持虚拟IP,则Keepalived这个方案就只能放弃了。

但即使Keepalived用不了,Nginx的高可用还是有解决方案的,很多云服务商都已经推出了自己的负载均衡服务(例如:阿里云的负载均衡 SLB 和 腾讯云的负载均衡 CLB)。我们直接租用就好了,不需要我们自己去配置。

5、综述

今天大概聊了一下KeepAlived自动重启Nginx,Keepalived的双主热备高可用的搭建,以及云服务器负载均衡的解决方案,希望能对大家有所帮助。

到此这篇关于使用Keepalived实现Nginx的自动重启及双主热备高可用的文章就介绍到这了,更多相关Keepalived实现Nginx的自动重启内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nginx+Keepalived实现双机热备

    一.Keepalived Keepalived是保证集群高可用的服务软件,网络中优先级高的节点为master负责响应VIP的ARP包,将VIP和MAC地址映射关系告诉网络内其他主机,还会以多播的形式向网络中发送VRRP通告,告知自己的优先级.backup节点只负责处理master发出的多播包,当发现master的优先级没自己高,或者没收到master的VRRP通告时,backup将自己切换到master状态. 二.环境搭建 环境:QEMU-KVM.客户机Debian(9.4.0) 虚拟机QEMU

  • Nginx+Keepalived实现双机主备的方法

    前言 首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,起初是专为LVS负载均衡软件设计的,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用. Keepalived以VRRP协议为实现基础,VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个). VRRP出现的目的就是为了

  • Docker+keepalived+nginx实现主从热备的方法示例

    前言 为解决单点故障,我们需要配置主从热备方案,服务器数量有限,故使用Docker模拟安装配置. 本次配置默认已经安装了Docker. 配置环境:centos7 64位 docker版本:Docker version 17.12.1-ce, build 7390fc6 1,拉取centos7镜像 docker pull centos:7 2,创建容器 docker run -it -d --name centos1 -d centos:7 3,进入容器centos1 docker exec -i

  • Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)

    1.组件及实现的功能 Keepalived:实现对Haproxy服务的高可用,并采用双主模型配置; Haproxy:实现对Nginx的负载均衡和读写分离; Nginx:实现对HTTP请求的高速处理; 2.架构设计图 3.Keepalived部署 在两个节点上都需要执行安装keepalived,命令如下: $ yum -y install keepalived 修改 172.16.25.109 节点上 keepalived.conf 文件配置,命令如下 $ vim /etc/keepalived/

  • Keepalived实现Nginx负载均衡高可用的示例代码

    第一章:keepalived介绍 VRRP协议 目的就是为了解决静态路由单点故障问题的 第二章: keepalived工作原理 2.1 作为系统网络服务的高可用功能(failover) keepalived高可用功能实现的基本原理为: 两台主机同时安装好keepalived软件并启动服务,开始正常工作时 角色为Master的主机获得所有资源并对用户提供服务 角色为Backup的主机作为Master主机的热备; 当角色为Master的主机失效或出现故障时 角色为Backup的主机将自动接管Mast

  • nginx+keepalived 高可用主从配置详解

    本文介绍了nginx+keepalived 高可用主从配置详解,分享给大家,具体如下: 一.系统环境及软件版本 CentOS 6.6 x64 keepalived-1.2.18.tar.gz nginx-1.6.2.tar.gz 主服务器:192.168.38.64 从服务器:192.168.38.66 VIP :192.168.38.100 二.nginx安装 (主从安装一致) 1.安装依赖环境 复制代码 代码如下: yum install gcc gcc-c++ make automake

  • keepalived双机热备nginx的配置方法

    nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,但传统的方式总是有他的可取之处,并且多学一些东西也很好.以后也会写如何使用docker跑nginx集群. 环境准备: 2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119 配置keepa

  • 关于使用Keepalived实现Nginx的自动重启及双主热备高可用问题

    目录 1.概述 2.使用Keepalived实现Nginx的自动重启 2.1 借助Shell脚本,完成Nginx的重启 2.2 为脚本赋予运行权限 2.3 在Keepalived配置文件中增加配置 2.4 重启Keepalived服务 3.双主热备的搭建 3.1 双主热备概述 3.2 场景说明 3.3 修改A服务器配置 3.4 修改B服务器配置 3.5 重启两台服务器的Keepalived 3.6 设置DNS轮询 4.云服务器的负载均衡 5.综述 1.概述 之前我们使用Keepalived实现了

  • Ubuntu搭建Mysql+Keepalived高可用的实现(双主热备)

    Mysql5.5双机热备 实现方案 安装两台Mysql 安装Mysql5.5 sudo apt-get update apt-get install aptitude aptitude install mysql-server-5.5 或 sudo apt-cache search mariadb-server apt-get install -y mariadb-server-5.5 卸载 sudo apt-get remove mysql-* dpkg -l |grep ^rc|awk '{

  • haproxy+keepalived实现高可用负载均衡(理论篇)

    HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,并且能通过允许.拒绝.交换.增加.修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则. 我现在用HAProxy主要在于它有以下优点,这里我

  • keepalived结合nginx实现nginx高可用的方法

    1.简介 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障.一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性.Keepalived是VRRP的完美实现,因此在介绍keepalived之前,先介绍

  • PHP脚本监控Nginx 502错误并自动重启php-fpm

    最近服务器时不时出现Nginx 502 Bad Gateway,如果在电脑旁边还好,要是半夜或者出去了,怎么办? 没关系,写个脚本检测服务状态,发现异常,自动重启. 自动重启脚本: 复制代码 代码如下: <?php $url = 'http://blog.rebill.info'; $cmd = '/usr/local/php/sbin/php-fpm restart';   for($i = 0; $i < 5; $i ++){         $exec = "curl  con

  • keepalived+nginx高可用实现方法示例

    1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能.keepalived除了能够管理LVS软件外,还能支持其他服务的高可用解决方案. keepalived通过VRRP协议实现高可用功能的.VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议.VRRP出现的目的就是为了解决静态路由单点故障问题,它能保证当个别节点宕机时,整个网络可以不

  • Vmware部署Nginx+KeepAlived集群双主架构的问题及解决方法

    前言 用nginx做负载均衡,作为架构的最前端或中间层,随着日益增长的访问量,需要给负载均衡做高可用架构,利用keepalived解决单点风险,一旦 nginx宕机能快速切换到备份服务器. Vmware网络配置可能遇到的问题解决方法 启动VMware DHCP Service和VMware NAT Service两个服务 在网络适配器开启网络共享,允许其他网络打勾保存,重启虚拟机 安装 节点部署 节点 地址 服务 centos7_1 192.168.211.130 Keepalived+Ngin

  • keepalived对nginx进行高可用搭建及原理详解

    目录 一.Keepalived介绍 二.Keepalived的应用场景 三.Keepalived的工作原理 1 VRRP协议 2 核心组件 3 分层工作 4 工作状态 四.Keepalived使用 1 配置介绍 2 使用keepalived对nginx进行高可用搭建 2.1 环境准备 2.2 nginx软件安装和配置 2.3 Keepalived软件安装 2.4 监听存活脚本 2.5 最终配置文件 2.6 启动主从的Keepalived 2.7 查看VIP是否启动 2.8 测试 五.需要注意的问

  • Keepalived+Nginx+Tomcat 实现高可用Web集群的示例代码

    Keepalived+Nginx+Tomcat 实现高可用Web集群 一.Nginx的安装过程 1.下载Nginx安装包,安装依赖环境包 (1)安装 C++编译环境 yum -y install gcc #C++ (2)安装pcre yum -y install pcre-devel (3)安装zlib yum -y install zlib-devel (4)安装Nginx 定位到nginx 解压文件位置,执行编译安装命令 [root@localhost nginx-1.12.2]# pwd

随机推荐