Keepalived + Haproxy + mysql集群高可用

Keepalived + Haproxy + mysql集群高可用

Keepalived介绍

Keepalived的作用是检测服务器的状态,如果有一台服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其它服务器代替该服务器的工作,当服务器工作 正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

应用场景

keepalived 针对 集群A和集群B,当集群A的管理节点宕机后,让集群B的管理节点进行代理
在这里插入图片描述


环境部署

1.安装扩展

yum install gcc gcc-c++ openssl openssl-devel –y

2.下载安装包

wget -q https://www.keepalived.org/software/keepalived-1.2.18.tar.gz

3.解压并安装

tar -zxvf keepalived-1.2.18.tar.gz

./configure --prefix=/usr/local/keepalived

make && make install

4.配置keepalived配置文件目录

mkdir /etc/keepalived

5.复制配置文件到创建的目录

cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/

6.配置Linux上的keepalived服务

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

#如果需要可以添加开机自启
chkconfig keepalived on

7.配置keepalived.conf

vim /etc/keepalived/keepalived.conf
7 . 1 主节点
! Configuration File for keepalived
global_defs {
    router_id LVS_MASTER
}

vrrp_script chk_haproxy {
    #script "killall -0 haproxy"
    # 检测 haproxy 状态的脚本路径
    script "/docker/haproxy-master/script/haproxy_check.sh"

    
    # 检测时间间隔
    interval 5
    
    # 如果条件成立,权重+2
    weight 2
}

#VRRP虚拟路由冗余协议配置
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 79
    priority 100
    advert_int 1
    nopreempt
    
    #设置验证信息,组内一致
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    
    #指定虚拟VIP地址,组内一致,可以设置多个虚拟IP,但是不能存在已有的ip
    virtual_ipaddress {
        192.168.238.161
    }
    
    #使用在这个域中使用预先定义的脚本,上面定义的
    track_script {
        chk_haproxy
    }
    
}
7 . 2 从节点
vim /etc/keepalived/keepalived.conf

state 设置为 BACKUP

从priority的值 比主的priority值低, 如果从priority值比主priority值要高,就会抢占ip,其他配置都相同

! Configuration File for keepalived
global_defs {
    router_id LVS_MASTER
}

vrrp_script chk_haproxy {
	#script "killall -0 haproxy"
    # 检测 haproxy 状态的脚本路径
    script "/docker/haproxy-master/script/haproxy_check.sh"
    
    # 检测时间间隔
    interval 5
    
    # 如果条件成立,权重+2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 79
    priority 80
    advert_int 1
    nopreempt
    
    #设置验证信息,组内一致
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    
    #指定虚拟VIP地址,组内一致,可以设置多个虚拟IP,但是不能存在已有的ip
    virtual_ipaddress {
        192.168.238.161
    }
    
    #使用在这个域中使用预先定义的脚本,上面定义的
    track_script {
        chk_haproxy
    }
    
}
7 . 3 检测 haproxy配置

检测haproxy有没有发生故障,发生故障则将keepalived停掉,让出vip

vim /docker/haproxy-master/script/haproxy_check.sh
#!/bin/bash
     LOGFILE="/etc/keepalived/log/keepalived-haproxy-state.log"
     date >> $LOGFILE
     if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
        docker restart haproxy-master
        echo "fail: docker restart haproxy-master" >> $LOGFILE
        
        sleep 3

        if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
            echo "start haproxy failed, killall keepalived" >> $LOG_FILE
            
            service keepalived stop
        fi
     else
        echo "success:  haproxy-master is running" >> $LOGFILE
     fi


shell测试

在这里插入图片描述

在这里插入图片描述

7 . 4 添加执行权限
chmod +x /docker/haproxy-master/script/haproxy_check.sh
7 . 5 启动keepalived
service keepalived start

测试

在这里插入图片描述

在这里插入图片描述

7 . 6 查看网卡信息
ip a|grep 161
7 . 7 查看keepalived日志
journalctl -u keepalived

journalctl -ex

8.本地连接

ip为haproxy中定义的ip

mysql -uroot -proot -P13306 -h192.168.238.161 -e "show variables like 'server_id';"

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值