阿里云在VPC网络下发布了HAVIP,能够实现arp宣告IP。
一般结构,但不知道阿里云如何盛情 HAVIP
VPC:192.168.1.0/24
ECS:
nginx1:192.168.1.1
nginx2:192.168.1.2
HAVIP:192.168.1.3
绑定到havip的公网EIP:121.43.187.37
MASTER服务器(nginx1)配置文件/etc/keepalived/keepalived.conf内容以及解释如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ! Configuration File for keepalived #配置global_defs,主要用于标示机器,以及故障时通知 global_defs { router_id Nginx1 } #配置vrrp_script,主要用于健康检查,以及检查失败后执行的动作。 vrrp_script chk_nginx { #健康检查脚本,当脚本返回值不为0时认为失败 script "/etc/keepalived/ck_ng.sh" #检查频率,以下配置每2秒检查1次 interval 2 #当检查失败后,将vrrp_instance的priority减小5 weight -5 #连续监测失败3次,才认为真的健康检查失败。并调整优先级 fall 3 #连续监测2次成功,就认为成功。但不调整优先级 rise 2 }
#定义对外提供服务的VIP vrrp_instance配置 vrrp_instance VI_1 { #指定vrrp_instance的初始状态,是MASTER还是BackUP主要还是看优先级。 state MASTER #指定vrrp_instance绑定的网卡,最终会通过指定的网卡宣告VIP interface eth0 #发送心跳包的源IP,可使用绑定的网卡IP,也可以使用本服务器上的其他IP unicast_src_ip 192.168.1.1 #相当于VRID,用于在一个网内区分组播,需要组播域内内唯一。 virtual_router_id 55 #本机的优先级,VRID相同的机器中,优先级最高的会被选举为MASTER priority 101 #心跳间隔,下面配置,MASTER会每隔1秒发送一个报文高职组内其他机器,自己还活着。 advert_int 1 #定义主从的验证方式以及密码,一般使用PASS(最长8位,超过了只会识别前8位作为密码) authentication { auth_type PASS auth_pass aliyun } #VIP,在阿里云下就是刚才创建的HAVIP virtual_ipaddress { 192.168.1.3 } #本vrrp_instance所引用的脚本配置,名称就是vrrp_script 定义的容器名 track_script { chk_nginx } } |
BACKUP服务器(nginx2)的配置需要修改:
1 2 3 | state MASTER改为 state BACKUP unicast_src_ip 192.168.1.1改为backup服务器实际的IP unicast_src_ip 192.168.1.2 priority 101改小一些,比如 priority 100 |
其它保持一致即可
为了实现nginx服务异常的时候能够自动切换,需要自己写一个脚本,脚本没有硬性的要求,能够实现目标即可.