栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Keepalived-mysql高可用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Keepalived-mysql高可用

Keepalived-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.配置/etc/keepalived/keepalived.conf 主节点
! Configuration File for keepalived
global_defs {
    router_id LVS_MASTER
}

vrrp_script chk_haproxy {
	# 检测 haproxy 状态的脚本路径
    script "/etc/keepalived/check.sh"
    
    # 检测时间间隔
    interval 2
    
    # 如果条件成立,权重+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,但是不能存在
    virtual_ipaddress {
        192.168.238.161
    }
    
    #使用在这个域中使用预先定义的脚本,上面定义的
    track_script {
        chk_haproxy
    }
    
    #表示当切换到master状态时,要执行的脚本
    notify_master "/docker/haproxy-master/script/notify.sh master"
    
    #表示当切换到backup状态时,要执行的脚本
    notify_backup "/docker/haproxy-master/script/notify.sh backup"
    
    #表示切换出现故障时要执行的脚本
    notify_fault "/docker/haproxy-master/script/notify.sh fault"
}
从节点
! Configuration File for keepalived
global_defs {
    router_id LVS_MASTER
}

vrrp_script chk_haproxy {
	# 检测 haproxy 状态的脚本路径
    script "/etc/keepalived/check.sh"
    
    # 检测时间间隔
    interval 2
    
    # 如果条件成立,权重+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
    }
    
    virtual_ipaddress {
        192.168.238.161
    }
    
    track_script {
        chk_haproxy
    }
    
    #表示当切换到master状态时,要执行的脚本
    notify_master "/docker/haproxy-slave/script/notify.sh master"
    
    #表示当切换到backup状态时,要执行的脚本
    notify_backup "/docker/haproxy-slave/script/notify.sh backup"
    
    #表示切换出现故障时要执行的脚本
    notify_fault "/docker/haproxy-slave/script/notify.sh fault"
}
创建notify.sh (执行权限 chmod +x notify.sh)
#!/bin/bash
# 
case "$1" in
    master)
    	#这里增加判断,进程存在就不执行启动了
    	if [ $(ps -C haproxy --no-header | wc -l) -ne 0 ]; then
       		docker start haproxy-master 
       		echo 'success: 已启动haproxy'
       		exit 0
		fi
		echo 'success: haproxy 进程已经存在'
		exit 0
    ;;
    backup)
        docker restart haproxy-master
        echo 'success: haproxy 重启成功'
        exit 0
    ;;
    fault)
        docker stop haproxy-master 
        echo 'success: haproxy 已停止'
        exit 0
    ;;
    *)
        echo 'Usage: `basename $0` {master|backup|fault}'
        exit 1
    ;;
esac

检测haproxy有没有发生故障,发生故障则将keepalived停掉,让出vip
vim /etc/keepalived/check.sh
#!/bin/bash
#
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
       service keepalived stop
fi

添加执行权限

chmod +x /etc/keepalived/check.sh

启动keepalived

service keepalived start

查看网卡信息

ip a|grep 161

查看keepalived日志

journalctl -u keepalived

journalctl -ex
8.本地连接
mysql -uroot -proot -P13306 -h192.168.48.128 -e "show variables like 'server_id';"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/828060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号