nginx1.14.0版本高可用——keepalived双机热备

nginx不支持主从,所以我们需要使用keepalive支持高可用。

keepalived重要知识点

在局域网内,每个主机上各安装一个keepalived,注意关闭防火墙firewalld,然后设定一个VIP(虚拟IP),主keepalived会获得授权在自己的主机上设置一个虚拟IP提供给应用层使用。

一旦此keepalived用shell脚本监测到此机器上的nginx挂掉之后,立刻kill掉自己,同时也注销VIP。

局域网内另一个keepalived感知(需关闭防火墙才能互相感知)到主keepalived挂掉,会把虚拟IP在自己所在机器上虚拟一个,此操作叫IP漂移。从而达到应用层对某个nginx挂掉无感知。

安装keepalived

yum -y update

yum -y remove keepalived

yum install keepalived –y
使用yum安装的会有一个默认配置文件模板
路径为/etc/keepalived/keepalived.conf
启动keepalived服务
systemctl start keepalived  

如果是这样就是启动成功了:

如果是这样就是启动失败,要检查是否是conf文件没改正确:

keepalived配置——发送邮件设置

global_defs {
   notification_email {              收件邮箱列表
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1              发件邮箱设置
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

keepalived 配置——获取网卡名称

查看本机网卡: IP a

keepalived.conf 配置——VIP配置 (virtual IP)

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/etc/keepalived/chk_nginx.sh"           监测nginx是否存活脚本,如果否,keepalived将kill掉自己
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state MASTER               字符串标识,可以随便写,比如backup
    interface eno16777736
    virtual_router_id 51
    priority 100     指定keepalived的优先级,最高优先级为主,可以设置所在机器的虚拟IP,其它从keepalived则不能。
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200  指定一个虚拟IP :  VIP,后续做IP漂移。这个IP也是应用访问的IP
#192.168.10.210 可以设置多个虚拟IP
   } 
  track_script {
    chk_nginx 此虚拟IP检测存活对象的脚本,这里检测nginx
  }

}

 chk_nginx.sh脚本

A=`ps -C nginx --no-header |wc -l`     检测nginx存活数,如果是0,则是nginx已经挂掉了
if [ $A -eq 0 ]  ;   then     
echo 'nginx server is died'     
killall keepalived         kill掉自己
fi

keepalived启动、停止、查看存活状态命令

systemctl start keepalived.service       启动

systemctl stop keepalived.service       停止

systemctl status keepalived.service     查看状态

nginx启动、停止、查看运行状态

cd nginx目录

./sbin/nginx -t   检查nginx.conf脚本语法是否正常

./sbin/nginx     启动

./sbin/nginx -s stop     停止      Stop 是快速关闭,不管有没有正在处理的请求。
./sbin/nginx -s quit     退出       Quit 是一个优雅的关闭方式,Nginx在退出前完成已经接受的连接请求。

./sbin/nginx -s reload   重启

ps -ef|grep nginx       查看运行状态

ps -C nginx --no-header |wc -l   查看存活数。一般情况下,2是正常数,因为一个nginx启动会有两个nginx进程?
posted on 2019-03-22 10:01  梦幻朵颜  阅读(507)  评论(0编辑  收藏  举报