加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_常德站长网 (https://www.0736zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

发布时间:2022-12-14 15:04:22 所属栏目:MySql教程 来源:转载
导读: 概述
随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时

概述

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

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

一、keepalived安装

1、安装依赖

yum install -y openssl-devel openssl libnl libnl-devel libnfnetlink-devel

mysql集群_mysql cluster 集群_mysql集群

2、keepalived编译安装

wget http://www.keepalived.org/software/keepalived-2.0.5.tar.gz
tar -xvf keepalived-2.0.5.tar.gz
cd keepalived-2.0.5
./configure --prefix=/usr/local/keepalived
make && make install
cp /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/keepalived
cd /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
mkdir -p /usr/local/keepalived/var/log

mysql集群_mysql cluster 集群_mysql集群

mysql集群_mysql cluster 集群_mysql集群

3、keepalived配置

# vim /etc/keepalived/keepalived.conf

#######配置主机1的keepalived##########
! Configuration Fileforkeepalived
vrrp_script chk_http_port {
script"/etc/keepalived/scripts/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
172.26.151.99 dev ens160 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
}
##########################配置主机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则表示优先级-2
weight 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.sh
notify_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/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
#如果没有haproxy进程存在,就启动haproxy,停止keepalived,并写入日志
if [ $A -eq 0 ];then
echo $STARTHAPROXY >> $LOGFILE
$STARTHAPROXY >> $LOGFILE 2>&1
sleep 5
fi
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then

mysql集群_mysql cluster 集群_mysql集群

exit 0 else exit 1 fi =====================================================

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

#vim /etc/keepalived/scripts/haproxy_master.sh
#vim /etc/keepalived/scripts/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 "Being master...." >> $LOGFILE 2>&1
echo "stop haproxy...." >> $LOGFILE 2>&1
$STOPHAPROXY >> $LOGFILE 2>&1
echo "start haproxy...." >> $LOGFILE 2>&1
$STARTHAPROXY >> $LOGFILE 2>&1
echo "haproxy stared ..." >> $LOGFILE
=====================================================

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

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

4.4、创建停止vrrp脚本

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

5、授权

chmod 777 /etc/keepalived/scripts/*

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

systemctl start keepalived.service
systemctl enable keepalived.service

二、最终测试

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

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

mysql集群_mysql集群_mysql cluster 集群

3、连接8067端口

mysql -uroot -pxxxx -hxxxx -P8067

mysql集群_mysql cluster 集群_mysql集群

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

mysql cluster 集群_mysql集群_mysql集群

(编辑:应用网_常德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!