CentOS 7 Keepalived 高可用 安装 配置

325 阅读2分钟

环境

host1 192.168.0.1  # 主机1

host2 192.168.0.2  # 主机2

serviceIP 192.168.0.3  # 服务IP 虚拟IP 浮动IP

规则:

谁先启动谁是master,绑定服务IP;

故障节点为master时,发生切换;

故障节点恢复后,不发生切换;

 

开始

yum install -y keepalived # 安装keepalived

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.`date +%Y%m%d_%H%M%S` # 备份配置文件

# 写入配置文件
cat << \EOF > /etc/keepalived/keepalived.conf
# node1

# 全局参数
global_defs {

   # 启动keepalived时有警告
   # Keepalived_vrrp: WARNING - default user 'keepalived_script' for script execution does not exist - please create.
   # 添加下面2个参数
   script_user root
   enable_script_security
}

# 健康检查脚本,检查Haproxy状态,脚本返回0正常,返回非0失败,失败后节点降级 weight -15
# 名字自定义
vrrp_script maint-checkHaproxy {
    script "/etc/keepalived/checkHaproxy.sh"
    interval 3 # 检查间隔3秒
    weight -15 # 降低本节点权重
    fall 2   # 2次失败算失败
    rise 2   # 2次成功算成功
    timeout 2  # 超时
}

# 实例1,名字自定义
vrrp_instance Vs_1 {
    state BACKUP # 定义节点主/备,主MASTER,备BACKUP,这里2个节点均为BACKUP
    interface ens16 # 服务IP绑定的网卡
    virtual_router_id 32 # 集群号,所有节点需要相同
    priority 100 # 权重,weight -15 降低权重值,2个节点权重一致,降低权重后会发生切换
    advert_int 1 # 检测间隔

    # 抢占模式,(nopreempt非抢占模式),配置为抢占模式时,当节点权重降低时,另外一个高权重节点会抢占服务,发生切换;
    # 如果为非抢占模式,上面配置的检查脚本在检查到服务失败后,降低权重,但是不会发生切换。
    !nopreempt

    authentication {
        auth_type PASS
        auth_pass 1717 # 各节点密码一致
    }

# 单播模式

   # keepalived在组播模式下所有的信息都会向224.0.0.18的组播地址发送,产生众多的无用信息,并且会产生干扰和冲突,所以需要改为单播。
   # 这是一种安全的方法,避免局域网内有大量的keepalived造成虚拟路由id的冲突。
   # 单薄模式需要关闭vrrp_strict,严格遵守vrrp协议这个选项
   # 需要在VIP实例配置段加入单播的源地址和目标地址
   # 在全局配置中global_defs那一段,不能配置vrrp_strict参数,如果有需注释。
   # 否则会因为不是组播而无法启动keepalived
    unicast_src_ip 192.168.0.1 # 本端,源地址
    unicast_peer { 
    192.168.0.2 # 对端,目标地址
    }
    virtual_ipaddress {
        192.168.0.3/24 dev ens16 # 服务IP
    }
    track_script {
        maint-checkHaproxy # 健康检查脚本,与上面同名;如果不配置也可以,就不检查状态。
    }
    track_interface {
            ens16 # 检查网卡健康
    }
}
EOF

# 节点2配置priority 100权重一致;
# 单播模式那里需要修改相应IP地址;
# 其他配置相同,节点2同样为BACKUP。

# /etc/keepalived/checkHaproxy.sh 健康检查脚本,返回0或者其他
# 节点2需修改对应地址
cat << \EOF >  /etc/keepalived/checkHaproxy.sh
#!/bin/bash
/usr/bin/curl -I http://192.168.0.1:1080 &>/dev/null
exit $?
EOF

systemctl start keepalived
systemctl enable keepalived

配合HAproxy 使用

Docker HAproxy 配置


参考文档

wsgzao.github.io/post/keepal…

zhuanlan.zhihu.com/p/125084805

blog.51cto.com/11886307/24…

blog.csdn.net/u013168176/…