暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Keepalived+haproxy集群搭建和高可用

成为DBA 2021-07-30
1145

Ke+ha集群搭建作用

Keepalived的存在其中一个作用也是防止出现haproxy节点出现单点故障,要实现故障自动转移。Keepalived集群通过VRRP(虚拟路由冗余协议)共同构建一个虚拟ip。一般情况,整个集群只对外提供一个ip。根据keeplived集群中各节点优先级,来抢占虚拟IP,若抢占虚拟IP的节点挂掉,则其他backup服务集群根据优先级选举产生新的一个master,使用虚拟ip。

环境部署

Centos7虚拟机 192.168.71.131

Centos7虚拟机 192.168.71.132

修改配置文件

Keepalived需要安装在haproxy节点上。

在192.168.71.131上通过yum安装keepalived。安装过程此处忽略

Keepalived配置文件修改

vi/etc/keepalived/keepalived.conf

router_id:指定标识该机器的route_id;

 

##添加执行的脚本

vrrp_scriptchk_haproxy

{

script"/etc/check_haproxy.sh"   #检测haproxy 状态的脚本路径

interval3    # 检测时间间隔

weight 3    #如果条件成立,权重+3

}

 

 

#### 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称

vrrp_instanceVI_1 {

    state MASTER    #master为主设备,backup为从设备

    interface ens33   #绑定虚拟 IP 的网络接口,我的是ens33

    virtual_router_id 10  ##虚拟路由的 ID 号,两个节点设置必须一样

    priority 100  #节点优先级,值范围 0-254,MASTER 要比BACKUP 高。

advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s

 

# 将 track_script 块加入 instance 配置块

#track_script{

#chk_haproxy

#}

 

## 设置验证信息,两个节点必须一致

 

    authentication {

        auth_type PASS

        auth_pass 1111

}

 

## 虚拟 IP 池, 两个节点设置必须一样

    virtual_ipaddress {

        192.168.71.200/24    #虚拟ip

注意:#主设备(priority 值大的)配置一定要加上nopreempt,否则非抢占也不起作用。

 

编写haproxy检测脚本

Vim/etc/check_haproxy.sh

输入一下内容

#!/bin/bash

START_HAPROXY="/etc/rc.d/init.d/haproxystart"

STOP_HAPROXY="/etc/rc.d/init.d/haproxystop"

LOG_FILE="/usr/local/keepalived/log/haproxy-check.log"

HAPS=`ps-C haproxy --no-header |wc -l`

date"+%Y-%m-%d %H:%M:%S" >> $LOG_FILE

echo"check haproxy status" >> $LOG_FILE

if [$HAPS -eq 0 ];then

echo$START_HAPROXY >> $LOG_FILE

$START_HAPROXY>> $LOG_FILE 2>&1

sleep 3

if [ `ps-C haproxy --no-header |wc -l` -eq 0 ];then

echo"start haproxy failed, killall keepalived" >> $LOG_FILE

killallkeepalived

fi

fi

 

赋予脚本可执行权限

Chmod +x etc/check_haproxy.sh

 

同样在192.168.71.132节点配置相同的keepalived的从节点。

 

启动keepalived

Systemctlstart keepalived.service

可以看到虚拟ip创建成功,131节点为master抢占虚拟IP。

 

关闭了131节点后虚拟ip漂移到keepalived的从节点132上。

 

总结:131节点和132节点同时也也是haproxy节点,因此keepalived集群有效的防止haproxy出现单点故障,故障无法转移的情况。


文章转载自成为DBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论