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

2019-10-17 17:56:24于丽

(2).Master

    设置定时通告定时器; 用VRRP虚拟MAC地址响应路由器IP地址的ARP请求; 转发目的MAC是VRRP虚拟MAC的数据包; 如果是虚拟路由器IP的拥有者,将接受目的地址是虚拟路由器IP的数据包,否则丢弃; 当收到shutdown的事件时删除定时通告定时器,发送优先权级为0的通告包,转初始化状态; 如果定时通告定时器超时时,发送VRRP通告信息; 收到VRRP通告信息时,如果优先权为0,发送VRRP通告信息;否则判断数据的优先级是否高于本机,或相等而且实际IP地址大于本地实际IP,设置定时通告定时器,复位主机超时定时器,转BACKUP状态;否则的话,丢弃该通告包;

(3).Backup

    设置主机超时定时器; 不能响应针对虚拟路由器IP的ARP请求信息; 丢弃所有目的MAC地址是虚拟路由器MAC地址的数据包; 不接受目的是虚拟路由器IP的所有数据包; 当收到shutdown的事件时删除主机超时定时器,转初始化状态; 主机超时定时器超时的时候,发送VRRP通告信息,广播ARP地址信息,转MASTER状态; 收到VRRP通告信息时,如果优先权为0,表示进入MASTER选举;否则判断数据的优先级是否高于本机,如果高的话承认MASTER有效,复位主机超时定时器;否则的话,丢弃该通告包;

4.ARP查询处理

当内部主机通过ARP查询虚拟路由器IP地址对应的MAC地址时,MASTER路由器回复的MAC地址为虚拟的VRRP的MAC地址,而不是实际网卡的 MAC地址,这样在路由器切换时让内网机器觉察不到;而在路由器重新启动时,不能主动发送本机网卡的实际MAC地址。如果虚拟路由器开启的ARP代理 (proxy_arp)功能,代理的ARP回应也回应VRRP虚拟MAC地址。

2.搭建环境

1.服务器1:10.63.0.154  安装keeplived并设置priority 优先值为100
2.服务器2:10.63.0.155  安装keeplived并设置priority 优先值为98
3.设置两台服务器对应的虚拟ip为:10.63.0.158

3.安装keepalived主节点

本次安装keepalived采用yum的模式,在服务器1上安装,主要操作步骤如下:

1.安装ipvsadm,指令:yum install ipvsadm,安装完成后,可通过指令ipvsadm –v查看版本号。
2.安装keepalived,指令:yum install keepalived,安装完成后,可通过指令Keepalived –v查看版本号。
3.创建/usr/local/nginx/nginx_check.sh脚本。脚本内容如下: 

#!/bin/bash
#判断nginx服务是否启动,如果不存在,调用nginx启用命令,并停止2秒,若#启动失败,杀掉keepalived
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then 
 /usr/sbin/nginx
 sleep 2
 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
  killall keepalived
 fi
fi

设置nginx_check.sh权限,设置命令为:chmod  777   /usr/local/nginx/nginx_check.sh