基于 HAproxy 1.6.3 Keepalived 在 Centos 7 中实现 mysql mariadb galera cluster 集群分发读写 —— 下篇

27 篇文章 0 订阅

2 周前写了 haproxy keepalived 的上篇

《基于 HAproxy 1.6.3 Keepalived 在 Centos 7 中实现mysql mariadb galera cluster 集群分发读写 —— 上篇》

由于网络环境发生了变化,VM环境如下:

VM1 192.168.13.183
VM2 192.168.13.184
VM3 192.168.13.185

VIP 192.168.13.179

keepalived 安装

下载并解压缩 keepalived

wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz

tar xvf keepalived-1.2.19.tar.gz 

编译安装 keepalived

[root@miwifi-r1cm-srv keepalived-1.2.19]# ./configure --prefix=/usr/local/keepalived
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
…
checking for strtol... yes
checking for uname... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating genhash/Makefile
config.status: creating keepalived/core/Makefile
config.status: creating lib/config.h
config.status: creating keepalived.spec
config.status: creating keepalived/Makefile
config.status: creating lib/Makefile
config.status: creating keepalived/vrrp/Makefile
config.status: creating keepalived/check/Makefile
config.status: creating keepalived/libipvs-2.6/Makefile

Keepalived configuration
------------------------
Keepalived version       : 1.2.19
Compiler                 : gcc
Compiler flags           : -g -O2 -DFALLBACK_LIBNL1
Extra Lib                : -lssl -lcrypto -lcrypt  -lnl  
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
IPVS use libnl           : Yes
fwmark socket support    : Yes
Use VRRP Framework       : Yes
Use VRRP VMAC            : Yes
SNMP support             : No
SHA1 support             : No
Use Debug flags          : No


[root@miwifi-r1cm-srv keepalived-1.2.19]#  make && make install

建立 keepalived 目录并复制相关配置文件

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

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

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived 
mkdir -p /usr/local/keepalived/var/logmkdir /etc/keepalived/scripts

touch /etc/keepalived/keepalived.conf

配置文件 keepalived.conf , master 和 backup 配置文件基本相同,只要 priority 进行相应调整就好

! Configuration File for keepalived

vrrp_script chk_http_port { 
    script  "/etc/keepalived/scripts/check_haproxy.sh" 
    interval    2 
    weight  2 
} 

vrrp_instance VI_1 { 
    state MASTER 
    interface eno16777736       #对外提供服务网络接口 ,网络设置号
    virtual_router_id 51    #VRRP 组名,两个结点必须设置成一样
    priority 150        #数值愈多,优先级越高,192.168.13.185 上改为 120
    advert_int 1        #同步通知间隔
    authentication {    #验证密码。类型主要有 PASS、AH 丟种,通常使用类型为 PASS, 据说 AH 使用时有问题 
        auth_type PASS 
        auth_pass 1111 
    } 

    track_script { 
        chk_http_port 
    } 

    virtual_ipaddress {

        192.168.13.179 dev eno16777736 scope global 
    } 

    notify_master   "/etc/keepalived/scripts/haproxy_master.sh" 
    notify_backup   "/etc/keepalived/scripts/haproxy_backup.sh" 
    notify_fault    "/etc/keepalived/scripts/haproxy_fault.sh" 
    notify_stop     "/etc/keepalived/scripts/haproxy_stop.sh" 
}


脚本 check_haproxy.sh

#! /bin/bash
STARTHAPROXY="/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg" 
STOPKEEPALIVED="/etc/init.d/keepalived stop" 
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo "[check_haproxy status]"  >> $LOGFILE
A="ps -C haproxy --no-header |wc -l"
echo "[check_haproxy status]" >> $LOGFILE
date >> $LOGFILE 

if [ `ps -C sbin/haproxy --no-header |wc -l` -eq 0 ];then
    echo $STARTHAPROXY >> $LOGFILE
    $STARTHAPROXY  >>  $LOGFILE 2>&1
    sleep 5
fi

if [ `ps -C sbin/haproxy --no-header |wc -l` -eq 0 ];then
    exit 0
else
    exit 1 
fi

脚本 haproxy_master.sh 和 haproxy_backup.sh 基本类似

#!/bin/bash
STARTHAPROXY="/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg" 
STOPHAPROXY="ps -ef | grep sbin/haproxy | grep -v grep | awk {print $2} | xargs kill -s 9"
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"

echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "beging master...." >> $LOGFILE 2>&1 

echo "stop haproxy...." >> $LOGFILE 2>&1 
ps -ef | grep sbin/haproxy | grep -v grep | awk '{print $2}' | xargs kill -s 9 >> $LOGFILE 2>&1 

echo "start haproxy...." >> $LOGFILE 2>&1 
$STARTHAPROXY >> $LOGFILE 2>&1 

echo "haproxy stared ..." >> $LOGFILE

脚本 haproxy_fault.sh

#!/bin/bash 
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"

echo "[fault]" >> $LOGFILE
date >> $LOGFILE

脚本 haproxy_stop.sh

#!/bin/bash
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo "[stop]" >> $LOGFILE
date >> $LOGFILE

分别启动 183 和 185 的 keepalived

[root@miwifi-r1cm-srv init.d]# service keepalived start
Starting keepalived (via systemctl):                       [  确定  ]

验证下访问是否成功

访问 192.168.13.179 下的 haproxy state

这里写图片描述

访问 192.168.13.179 : 3306 口数据库
这里写图片描述

手动停止 keepalived 服务 或 关停网络,vip 会自动漂浮,179 可以正常访问。

留一个issue, rsyslog 还没有配置成功,回头再补一篇专门说这个事。

如果再做 nginx 或是 mycat 接入的,haproxy 和 keepalived 做一些简单的调整就OK了,后面有机会再来写吧。

本篇完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值