概述
随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系型数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——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.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
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
二、最终测试
1、在浏览器输入http://172.26.151.99:48800/admin_stats
2、两台haproxy查看8067与9067端口是否在监听
3、连接8067端口
mysql -uroot -pxxxx -hxxxx -P8067
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~