keepalived(二)vip漂移

本文详细介绍了如何使用Keepalived在两台CentOS 7服务器上搭建VRRP虚拟路由器冗余协议高可用集群,实现VIP(虚拟IP)的自动切换,确保服务连续性和稳定性。步骤包括安装配置Keepalived、设置邮件通知、脚本创建及测试验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验

内容:测试vip能否正常切换
架构图

这里写图片描述

环境
ip系统安装的软件
192.168.253.158CentOS7keepalived
192.168.253.128CentOS7keepalived

第一步:在192.168.253.128主机上安装keepalived和发邮件的工具

yum install mailx -y
yum install keepalived -y

第二步:在192.168.253.128主机上修改配置文件/etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
    notification_email {
         root@localhost
    }
    notification_email_from keepalived@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id 192.168.253.128
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 15
    priority 95
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.253.190 dev ens33
    }
    notify_master "/etc/keepalived/notify.sh master" ##这个脚本稍后会创建
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/nofify.sh fault"
}

第三步:创建keepalived状态发生变化时触发的脚本/etc/keepalived/nofify.sh

#!/bin/bash
#发邮件通知root,keepalived状态发生改变
contact='root@localhost'

notify() {
    local mailsubject="$(hostname) to be $1, vip floating"
    local mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
    echo "$mailbody" | mail -s "$mailsubject" $contact
}

case $1 in
master)
    notify master
    ;;
backup)
    notify backup
    ;;
fault)
    notify fault
    ;;
*)
    echo "Usage: $(basename $0) {master|backup|fault}"
    exit 1
    ;;
esac

第四步:在192.168.253.158上安装keepalived,将192.168.253.128的脚本与配置文件发送到192.168.253.158上
192.168.253.158端操作

yum install keepalived -y
yum install mailx -y

192.168.253.128端操作

scp /etc/keepalived/keepalived.conf  root@192.168.253.158:/etc/keepalived/keepalived.conf
scp /etc/keepalived/notify.sh  root@192.168.253.158:/etc/keepalived/notify.sh

第五步:在192.168.253.158上修改配置文件

[root@localhost ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
    notification_email {
         root@localhost
    }
    notification_email_from keepalived@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id 192.168.253.158 ##修改为当前主机的主机名,这里直接用ip了
}

vrrp_instance VI_1 {
    state BACKUP  ##设置为BACKUP节点
    interface ens33 
    virtual_router_id 15 
    priority 90   ##优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.253.190 dev ens33
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/nofify.sh fault"
}

第六步:测试
我们先启动192.168.253.158备用节点的keepalived

systemctl  start keepalived 

看一下vip是否在192.168.253.158主机上
这里写图片描述

这里写图片描述
这里可以看出192.168.253.158正在广播自己的心跳信息。

这时候我们吧192.168.253.128启动起来

systemctl  start keepalived

这里写图片描述
这里可以看到通告的人变成192.168.253.128了

这里写图片描述
vip这时候也飘过来了。说明没问题。

我们再看一下192.168.253.128主机上脚本是否成功触发了
这里写图片描述
收到邮件,成功

`keepalived` VIP(Virtual IP)不漂移是指配置`keepalived`使得VIP地址在发生健康检查失败切换到备用服务器之后,在一段时间内保持不变,直到备用服务器恢复正常并再次接管VIP。 `keepalived`是一款高可用性软件,用于在两台或多台服务器之间自动切换VIP地址,以确保服务的连续性和可靠性。VIP漂移的功能通过在配置文件中设置适当的参数来实现。关键步骤包括: ### 配置文件结构 `.vrrp.conf`文件通常包含所有`keepalived`实例的配置信息。你需要在这份配置文件中定义VIP及其关联的路由器、优先级、心跳检测等参数。 #### 实现VIP漂移的关键部分: 1. **配置主备节点**:为每个需要提供服务的VIP,分别定义一个主节点和备份节点。两个节点都会尝试获取VIP所有权。 2. **VIP属性**:在VIP定义中添加特定选项,以实现不漂移特性。例如,可以使用`track_script`指令来监控某些脚本状态,并据此决定是否应该切换VIP所有权。 ```bash vrrp_instance VI_1 { state MASTER # 当前是活动状态 interface eth0 # 使用eth0网卡 virtual_router_id 51 # 虚拟路由器ID priority 100 # 优先级值,数值越高越优先成为主节点 advertisement_interval 1 # 广播间隔时间 track_script { # 监控脚本 script_name /path/to/script.sh # 监控脚本路径 output_up 'keepalived -l' output_down 'killall keepalived' } } ``` 在这个示例中,如果`script.sh`脚本的输出为“keepalived -l”,则认为服务器状况良好,应保持当前VIP分配。相反,如果脚本输出其他内容,则认为服务器存在问题,需要将VIP所有权转移给备用节点。 3. **健康检查**:确保你的应用和服务有一个可靠的方式进行自我健康检查,以便`keepalived`能够根据实际状态调整VIP所有权。 ### 关联的`script.sh`脚本 这个脚本应该是基于你的应用程序的实际运行状况设计的。它应该能够确定应用是否正常运行,从而影响`keepalived`的状态决策。 ```bash #!/bin/bash # 检查应用是否正在运行,返回正常的退出码表示服务正常 if ps aux | grep -q "your_app_executable"; then echo "keepalived -l" else echo "killall keepalived" fi ``` ### 结论 通过上述配置,你可以实现在`keepalived`中为VIP设定不漂移策略。当主节点出现问题时,虽然VIP会被暂时转移到备用节点上,但在主节点恢复并且满足特定条件(如脚本检查结果良好)后,VIP会稳定地回到原主节点,避免不必要的频繁切换,提升用户体验和系统稳定性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值