Centos使用Keepalived+VRRP方案配置常用的高可用性方案

轩辕暗神 7月前 ⋅ 703 阅读

这是常用的高可用性方案,通过Keepalived结合**VRRP(虚拟路由冗余协议)**实现自动IP切换。 示例说明: 机器一: IP:192.168.0.8 操作系统:Centos7.8 机器二: IP:192.168.0.46 操作系统:Centos7.8

安装Keepalived:

在两台CentOS 7机器上安装Keepalived。

yum install keepalived -y

1. Keepalived主节点配置(Server A)192.168.0.46:

vrrp_instance VI_1 {
    state MASTER                # 主节点
    interface enp2s0              # 使用的网卡名称,使用ifconfig命令查看
    virtual_router_id 51        # 虚拟路由ID,两个节点需保持一致
    priority 100                # 主节点优先级高于备节点
    advert_int 1                # 广告发送间隔时间,单位为秒
    authentication {
        auth_type PASS
        auth_pass 1234          # 密码,两台机器需一致
    }
    virtual_ipaddress {
        192.168.0.47           # 虚拟IP(设备通过此IP访问)
    }
    track_script {                     # 跟踪脚本,监控服务健康状态
        chk_nginx                      # 自定义检查脚本的名字
    }
}
# 定义一个脚本来监控服务,比如firewalld
vrrp_script chk_nginx {
    script "/etc/keepalived/check_firewalld.sh"   # 检查服务的脚本路径
    interval 2                                # 每2秒检查一次
    weight 2                                  # 如果服务正常,增加权重
}

2. Keepalived备节点完整配置(Server B)192.168.0.8:

vrrp_instance VI_1 {
    state BACKUP
    interface enp2s0
    virtual_router_id 51
    priority 90                # 优先级低于主节点
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.0.47
    }
    track_script {
        chk_nginx                     # 跟踪脚本,检查服务状态
    }
}
vrrp_script chk_nginx {
    script "/etc/keepalived/check_firewalld.sh"   # 同样的检查脚本
    interval 2                                # 每2秒检查一次
    weight 2                                  # 如果服务正常,增加权重
}

3、编辑监控脚本

192.168.0.46

vim /etc/keepalived/check_firewalld.sh

写入以下内容:

#!/bin/bash
if systemctl status firewalld >/dev/null 2>&1; then
    exit 0  # firewalld运行正常,返回0
else
    exit 1  # firewalld异常,返回1
fi

192.168.0.8

vim /etc/keepalived/check_firewalld.sh

写入以下内容:

#!/bin/bash
if systemctl status firewalld >/dev/null 2>&1; then
    exit 0  # firewalld运行正常,返回0
else
    exit 1  # firewalld异常,返回1
fi

4、设置权限和测试脚本

确保检查脚本可执行:

chmod +x /etc/keepalived/check_firewalld.sh

测试脚本运行:

/etc/keepalived/check_firewalld.sh

5. 启动Keepalived

在两台机器上启动并启用Keepalived服务:

systemctl start keepalived
systemctl enable keepalived

测试, 开3个cmd窗口,分别输入: 窗口1:

ping 192.168.0.47 -t

窗口2:

ping 192.168.0.46 -t

窗口3:

ping 192.168.0.8 -t

当拔下192.168.0.8的网线时,窗口3会提示找不到主机,窗口1会断开一会,立刻就通了,然后插上网线,窗口3等一会也会通

当拔下192.168.0.8的网线时,窗口2会提示找不到主机,窗口1会断开一会,立刻就通了,然后插上网线,窗口3等一会也会通了

两个网线都拔了,,窗口1会不通,任意插上一根网线,窗口一都会通


全部评论: 0

    我有话说: