原文大部分内容摘自 https://blog.csdn.net/yinwenjie/article/details/47130609
本文简单记录 Keepalived 软件的安装配置操作.
准备两台服务器,分别安装好 nginx web 服务器.
再分别独立安装Keepalived系统
我们的目标是“在一台工作的Nginx崩溃的情况下,系统能够检测到,并自动将请求切换到另外一台备份的Nginx服务器上”。所以,之前安装的两台Nginx,一台是Master服务器是主要的工作服务器,另一台是备份服务器,在Master服务器出现问题后,由后者接替其工作。如下图所示(外网的请求使用一个由keepalived控制的虚拟的浮动IP进行访问):
使用yum 安装好 keepalived.
下面的脚本代码为检测 nginx 服务器是否正常运行,如果没有运行则尝试启动 nginx,休眠2s后再次检测nginx运行状态,如果为运行,则退出此主机上的 keepalived,由其他 keepalived 接管.
#!/bin/sh if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then systecmctl start nginx fi sleep 2 if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then systecmctl stop keepalived fi
! Configuration File for keepalived # global setting , notify email setting global_defs { #节点id,每个节点都不同 router_id LVS_V1 } #检测 nginx 运行状态的脚本 vrrp_script chknginx { script "/opt/checknginx.sh" interval 10 } # instance setting vrrp_instance VI_1 { # 节点角色,MASTER(一个) 和 BACKUP(多个),按角色选中填写 state BACKUP interface eth1 # 这里一定是一样的 virtual_router_id 52 # 这里的优先级比Master节点低 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } # 虚拟ip,对外提供,客户端访问此ip即为访问 keepalived 中MASTER 所在主机 virtual_ipaddress { 192.168.1.100 } track_script { chknginx } }
keepalived的切换可以是自动的,但是却做不到毫秒级别,他怎么都需要几秒钟的时间进行切换
这就有一个问题,虽然在主节点出现问题我们转向备份节点时,这个延时无可避免,但是在我们修复主节点后,实际上并没有必要再马上做一次切换,所以Keepalived提供了一种非抢占模式,来满足这个要求
此模式下keepalived 的配置
! Configuration File for keepalived # global setting , notify email setting global_defs { router_id LVS_V1 } vrrp_script chknginx { script "/opt/checknginx.sh" interval 10 # 一旦节点失效,节点的优先级就减少2 # 有多少个keepalived节点,就填写多少数量。 # 这样保证这个节点的优先级比其他节点都低 weight -2 # fall 表示多少次检查失败,就算节点失效。默认1 #fall 1 } vrrp_instance VI_1 { #state状态都是BACKUP表示是主要工作节点。 state BACKUP interface eth1 virtual_router_id 52 # 这个关键配置项,设置为“非抢占”模式 nopreempt # 每个节点的优先级一定要不一样 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } #虚拟地址和绑定的端口,如果有多个,就绑定多个 #dev 是指定浮动IP要绑定的网卡设备号 virtual_ipaddress { 192.168.61.100 } #设置的检查脚本 #关联上方的“vrrp_script chknginx” track_script { chknginx } }
来源:博客园
作者:shangsharon
链接:https://www.cnblogs.com/shangsharon/p/11557587.html