haproxy keepalived_如何一步一步搭建mycat+haproxy+keepalived高可用负载均衡集群

概述

随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系型数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——MyCat。

下面介绍下基于mycat+haproxy+keepalived搭建高可用负载均衡mysql集群中的keepalived和最终测试部分。

b8a0cbb5570db3a1fbdaa718630df5a2.png

一、keepalived安装

1、安装依赖

yum install -y openssl-devel openssl libnl libnl-devel libnfnetlink-devel
533a05730ae4b4c29c55d7072421018f.png

2、keepalived编译安装

wget http://www.keepalived.org/software/keepalived-2.0.5.tar.gztar -xvf keepalived-2.0.5.tar.gzcd keepalived-2.0.5./configure --prefix=/usr/local/keepalivedmake && make installcp /usr/local/keepalived/sbin/keepalived /usr/sbin/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/cp ./keepalived/etc/init.d/keepalived /etc/init.d/mkdir /etc/keepalivedcd /etc/keepalived/cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalivedmkdir -p /usr/local/keepalived/var/log
6a5196cc6f94cb0e8378daf465a80811.png
684265db8459f66febd0da8eb24d4e20.png

3、keepalived配置

# vim /etc/keepalived/keepalived.conf

#######配置主机1的keepalived##########! Configuration Fileforkeepalivedvrrp_script chk_http_port {script"/etc/keepalived/scripts/check_haproxy.sh"interval 2weight 2}vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}virtual_ipaddress {172.26.151.99 dev ens160 scope global}notify_master /etc/keepalived/scripts/haproxy_master.shnotify_backup /etc/keepalived/scripts/haproxy_backup.shnotify_fault /etc/keepalived/scripts/haproxy_fault.shnotify_stop /etc/keepalived/scripts/haproxy_stop.sh}##########################配置主机2的keepalived(网卡为ens160)##########################! Configuration File for keepalived#VRRP脚本vrrp_script chk_http_port {#执行的脚本script"/etc/keepalived/scripts/check_haproxy.sh" #脚本执行间隔interval 2#脚本结果导致的优先级变更:2表示优先级+10;-2则表示优先级-2weight 2}#vrrp实例vrrp_instance VI_1 {state BACKUP#本机网卡interface ens160##VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组virtual_router_id 51#优先级,数值愈大,优先级越高priority 120#检查间隔,默认1秒advert_int 1#设置认证authentication {#认证方式auth_type PASS#认证密码auth_pass 1111}track_script {#调用脚本check_haproxy.sh检查haproxy是否存活chk_http_port}#虚拟IP地址池,可以有多个IP,每个IP占一行virtual_ipaddress {172.26.151.99 dev ens160 scope global}#指定当切换到master时,执行的脚本notify_master /etc/keepalived/scripts/haproxy_master.sh#指定当切换到backup时,执行的脚本notify_backup /etc/keepalived/scripts/haproxy_backup.sh#故障时执行的脚本notify_fault /etc/keepalived/scripts/haproxy_fault.shnotify_stop /etc/keepalived/scripts/haproxy_stop.sh}

chmod 600 /etc/keepalived/keepalived.conf --权限需要600

4、创建配置文件和脚本

4.1、创建检查haproxy是否存活的脚本

#mkdir /etc/keepalived/scripts#vim /etc/keepalived/scripts/check_haproxy.sh=====================================================#!/bin/bashSTARTHAPROXY="/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]" >> $LOGFILEA=`ps -C haproxy --no-header |wc -l`echo "[check_haproxy status]" >> $LOGFILEdate >> $LOGFILE#如果没有haproxy进程存在,就启动haproxy,停止keepalived,并写入日志if [ $A -eq 0 ];thenecho $STARTHAPROXY >> $LOGFILE$STARTHAPROXY >> $LOGFILE 2>&1sleep 5fiif [ `ps -C haproxy --no-header |wc -l` -eq 0 ];thenexit 0elseexit 1fi=====================================================

4.2、创建切换到MASTER与BACKUP脚本

#vim /etc/keepalived/scripts/haproxy_master.sh#vim /etc/keepalived/scripts/haproxy_backup.sh===========两个文件中增加以下内容==========================#!/bin/bashSTARTHAPROXY=`/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]" >> $LOGFILEdate >> $LOGFILEecho "Being master...." >> $LOGFILE 2>&1echo "stop haproxy...." >> $LOGFILE 2>&1$STOPHAPROXY >> $LOGFILE 2>&1echo "start haproxy...." >> $LOGFILE 2>&1$STARTHAPROXY >> $LOGFILE 2>&1echo "haproxy stared ..." >> $LOGFILE=====================================================

4.3、创建故障时执行的脚本

# vim /etc/keepalived/scripts/haproxy_fault.sh=====================================================#!/bin/bashLOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.logecho "[fault]" >> $LOGFILEdate >> $LOGFILE=====================================================

4.4、创建停止vrrp脚本

#vim /etc/keepalived/scripts/haproxy_stop.sh===============================================#!/bin/bashLOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.logecho "[stop]" >> $LOGFILEdate >> $LOGFILE===============================================

5、授权

chmod 777 /etc/keepalived/scripts/*

6、启动keepalived并加入开机自启动

systemctl start keepalived.servicesystemctl enable keepalived.service
ad09b2d1a800532e0023de8cba142d3d.png

二、最终测试

1、在浏览器输入http://172.26.151.99:48800/admin_stats

98f3343354ea41b4ccd9506afae93e8b.png

2、两台haproxy查看8067与9067端口是否在监听

17324ff8915a3e785caf62989e733586.png

3、连接8067端口

mysql -uroot -pxxxx -hxxxx -P8067
783670c41e59d1ee96ff1ada0a4ba69b.png

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值