mycat+haproxy+keepalived搭建高可用负载均衡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 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 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 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端口是否在监听 3、连接8067端口 mysql -uroot -pxxxx -hxxxx -P8067 觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~ (编辑:应用网_常德站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |