高可用方案
keepalived高可用
keepalived高可用之非抢占式模式
本文档使用 MrDoc 发布
-
+
home page
keepalived高可用之非抢占式模式
在使用keepalived(VIP)作为Nginx主从高可用时,通常架构如下:  # keepalived的作用 负责VIP漂移,作为一个应用端的一个桥梁或者代理,应用不直接访问后端主机的IP地址,而是访问一个虚拟IP,这个虚拟IP(VIP)可以在异常情况下漂移到备用后端主机中,使得应用可以对后端服务进行透明访问,即使`主节点`实例宕机,VIP可以漂移至`备节点`实例,实现对应用的无感知切换 keepalived负责VIP的切换,负责对后端节点不可访问时及网络不可达时的监控,负责两个Nginx实例间有效沟通的一个检测和后续操作的触发器。 # keepalived的抢占性说明 ## 抢占模式 当keepalived的主节点服务宕机或主机宕机之后VIP漂移到了备节点,当主节点恢复后主动将VIP再次抢回 keepalived默认工作在抢占模式下 ## 非抢占模式 当主节点服务宕机或主机宕机后并再次上线时不再抢回VIP。 此处需要注意非抢占模式的keepalived其工作机制必须都为BACKUP,并且仅需主开启nopreempt选项 ## Keepalived配置重点说明 1. 优先启动的节点为`MASTER`节点 1. 主备节点的`state`必须都是`BACKUP` 2. 主节点必须配置`nopreempt`参数,备节点上不能配置`nopreempt`参数 3. 主备节点均不能配置`priority`参数,否则会根据优先级抢占 4. 主备节点均无需配置`preempt delay`参数 5. 主备节点均需配置`advert_int`参数,默认为1,如果不符合非抢占预期,则调整该值到5-30s后测试 6. 主备keepalived在开机自启动时,建议延迟3分钟后启动,否则可能会因网络不可达导致主从选举或切换不符合预期 # 配置参数说明 ## 环境信息 **IP信息** > - 主节点物理IP: 192.168.88.217 > - 备节点物理IP: 192.168.88.219 > - 共用虚拟IP: 192.168.88.220 **主机信息** > - 操作系统:Kylin Linux Advanced Server release V10 (Tercel) > - 内核信息:4.19.90-17.ky10.x86_64 该示例以Nginx为后端服务进行演示 ## 217-主节点配置 ```bash [root@localhost ~]# cat /etc/keepalived/keepalived.conf global_defs { router_id sz-lvs1 vrrp_skip_check_adv_addr vrrp_iptables } vrrp_script check_nginx { script "/usr/libexec/keepalived/check_nginx.sh" interval 2 } vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 100 nopreempt #preempt delay 300 #priority 100 advert_int 5 authentication { auth_type PASS auth_pass 2461 } unicast_src_ip 192.168.88.217 unicast_peer { # 多个IP换行 192.168.88.219 } virtual_ipaddress { 192.168.88.220/24 dev ens192 } track_script { check_nginx } } [root@localhost ~]# ``` ## 219-备节点配置 ```bash [root@localhost ~]# cat /etc/keepalived/keepalived.conf global_defs { router_id sz-lvs2 vrrp_skip_check_adv_addr vrrp_iptables } vrrp_script check_nginx { script "/usr/libexec/keepalived/check_nginx.sh" interval 2 } vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 100 #nopreempt #preempt delay 300 #priority 90 advert_int 5 authentication { auth_type PASS auth_pass 2461 } unicast_src_ip 192.168.88.219 unicast_peer { # 多个IP换行 192.168.88.217 } virtual_ipaddress { 192.168.88.220/24 dev ens192 } track_script { check_nginx } } [root@localhost ~]# ``` ## 检测脚本配置 ```bash [root@localhost ~]# cat /usr/libexec/keepalived/check_nginx.sh #!/bin/bash count=`netstat -ntpl | grep 80 | wc -l` if [ $count -gt 0 ]; then exit 0 else exit 1 fi [root@localhost ~]# ``` 脚本授权执行权限 ```bash chmod +x /usr/libexec/keepalived/check_nginx.sh ``` # 主备服务漂移验证 当Master节点下的Nginx服务停止运行,但主机和keepalived 正常运行的情况下 VIP将从Master节点漂移到Slave节点,Slave节点由原来的`BACKUP身份`升级为`MASTER身份`,由Slave节点继续提供服务 当Master节点下Nginx再次恢复后,Master不会变为`MASTER身份`,也不会抢占Slave节点的`MASTER身份` 
Nathan
April 11, 2024, 1:23 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password