nginx的安装和配置这里不赘述。nginx可以用来单纯的提供web服务,也可以用来提供负载均衡(upstream)。
keepalived在阿里源里有2.13版本的,可以直接安装,也可以下载源码安装(建议尝试用源码安装,比较自主)。
源码下载地址:http://www.keepalived.org/download.html
keepalived分为master和backup。
MASTER:
vim /etc/keepalived/keepalived.conf
global_defs { router_id nginx_01 #标识本节点的名称,通常为hostname } ## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。 ##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0, ##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。 vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 #每2秒检测一次nginx的运行状态 weight -20 #失败一次,将自己的优先级-20 } vrrp_instance VI_1 { state MASTER # 状态,主节点为MASTER,备份节点为BACKUP interface enp0s3 # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口 virtual_router_id 51 # 虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址 mcast_src_ip 192.168.1.201 # 本机IP地址 priority 100 # 节点优先级,值范围0~254,MASTER要比BACKUP高 advert_int 1 # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒 # 设置验证信息,两个节点必须一致 authentication { auth_type PASS auth_pass 1111 } # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个 virtual_ipaddress { 192.168.1.210 } track_script { chk_nginx # nginx存活状态检测脚本 } }
BACKUP:
vim /etc/keepalived/keepalived.conf
global_defs { router_id nginx_02 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface enp0s3 virtual_router_id 51 mcast_src_ip 192.168.1.202 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.210 } track_script { chk_nginx } }
在MASTER和BACKUP的/etc/keepalivd文件夹里创建nginx_check.sh。内容如下:
#!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ];then /opt/nginx/sbin/nginx #尝试重新启动nginx sleep 2 #睡眠2秒 if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then killall keepalived #启动失败,将keepalived服务杀死。将vip漂移到其它备份节点 fi fi
分别启动master和backup上的keepalived。
注意:启动顺序,先master,然后