第⼆篇:mysql负载均衡、⾼可⽤⽅案:
mysqlcluster+haproxy+keep。。。
上⼀篇介绍了mysqlcluster的安装和配置,本篇将描述⾼可⽤的mysql集组建⽅式,⾼可⽤的mysql集有多种⽅式,本篇介绍的是mysqlcluster+haproxy+keepalived⽅案,
下篇将介绍通过普通版本的mysql+haproxy+keepalived实现主从复制,读写分离的⾼可⽤⽅案。
⼀、⽅案概述
在此⽅案中引⼊了haproxy和keepalived两个⼯具:
1.
1. Haproxy主要功能是进⾏负载均衡
2. Keepalived的主要功能是检查mysql可⽤状态,辅助切换
⽅案拓扑关系如下:
此⽅案中:
1)mysqlcluster集部分
管理节点: 192.168.136.215, 192.168.136.115
数据节点和mysql节点:192.168.136.216, 192.168.136.217,。。。
其他红⾊标注的表⽰实际环境下可以进⾏横向扩展(数据节点和mysql节点可以分别部署)
2)负载均衡和⾼可⽤
部署节点:192.168.136.215, 192.168.136.115
虚拟路由节点:192.168.136.200
也可以另外单独两台服务器进⾏部署,虚拟节点是⾯向⽤户(web调⽤)的节点
⼆、部署mysqlcluster
参见上⼀篇,mysqlcluster的部署,在此基础上,新增加192.168.136.115节点的部署,细节和215服务器的部署⼀致(略)。
115和215的配置⽂件/var/lib/mysql-cluster/config.ini需要进⾏修改:
/var/lib/mysql-cluster/config.ini内容如下:
[ndbd default]
NoOfReplicas= 2
DataMemory= 512M
IndexMemory= 18M
[ndb_mgmd]
NodeId= 1
HostName= 192.168.136.215 # hostname is a valid network adress DataDir= /var/lib/mysql-cluster #
[ndb_mgmd]
NodeId= 2
HostName= 192.168.136.115 # hostname is a valid network adress DataDir= /var/lib/mysql-cluster #
[ndbd]
NodeId= 3
HostName= 192.168.136.216 # hostname is a valid network adress DataDir= /var/lib/mysql-cluster
[ndbd]
NodeId= 5
HostName= 192.168.136.217 # hostname is a valid network adress DataDir= /var/lib/mysql-cluster
[mysqld]
hostname=192.168.136.216
[mysqld]
hostname=192.168.136.217
[mysqld]
[mysqld]
根据拓扑图,新增了115服务器作为管理节点(mgm),因此在216,217服务器上,修改⼀下配置⽂件,增加⼀个mgm节点,具体内容如下:
vim /etc/myf
[mysqld]
#skip-grant-tables
ndbcluster
ndb-connectstring=192.168.136.215,192.168.136.115
[mysql_cluster]
ndb-connectstring=192.168.136.215,192.168.136.115
三、部署haproxy
Haproxy部署在192.168.136.215和192.168.136.115上,作⽤是实现负载均衡,通过部署在mysql节点(216,217)服务器上的监控脚本和监控服务,来⾃动判断外部的请求应该发送到哪个节点。
3.1 Haproxy下载、编译、安装
⾸先下载haproxy, ⽹址被墙了,因此下⾯提供了⼆个链接:
wget -P /home/soft /download/1.7/src/haproxy-1.8.
wget -P /home/soft /components/cache/haproxy/haproxy-1.8.
下载完成后,解压缩
tar -vxf haproxy-1.8.
设定部署⽬录为/usr/local/haproxy
所以进⼊haproxy-1.8.10⽬录后,执⾏如下编译和安装命令
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
#TARGET=linux26,ARCH=x86_64#26以上的都⽤linux26
#TARGET是指内核版本,ARCH指定CPU架构
[root@mysql-1 haproxy-1.8.10]# make install PREFIX=/usr/local/haproxy
install -d "/usr/local/haproxy/sbin"
install haproxy "/usr/local/haproxy/sbin"
install -d "/usr/local/haproxy/share/man"/man1
install -m 644 doc/haproxy.1 "/usr/local/haproxy/share/man"/man1
install -d "/usr/local/haproxy/doc/haproxy"
for x in 51Degrees-device-detection architecture close-options configuration cookie-options DeviceAtlas-device-detection intro linux-syn-cookies lua management netscaler-client-ip-insertion-protocol network-namespaces peers peers-v2.0 proxy-protocol SPOE WURFL-device-detection; do \
install -m 644 doc/$x.txt "/usr/local/haproxy/doc/haproxy" ; \
done
[root@mysql-1 haproxy-1.8.10]#
[root@mysql-1 haproxy-1.8.10]#
创建相关的⽬录
mkdir -pv /usr/local/haproxy/{conf,run,log}
3.2 创建proxy的启动脚本
启动脚本 vim /etc/init.d/haproxy,具体内容如下:
#! /bin/bash
# chkconfig: - 85 15
# description: haproxy is a World Wide Web server. It is used to serve
PROGDIR=/usr/local/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/conf/$f
PIDFILE=$PROGDIR/run/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=$PROGDIR/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
if [ $(pidof haproxy | wc -l) -gt 0 ]
then
echo "$PROGNAME is Runing"
else
echo -n "Starting $DESC: $PROGNAME"
$DAEMON -f $CONFIG
echo "."
fi
}
stop()
{
if [ $(pidof haproxy | wc -l) -le 0 ]
then
echo "$PROGNAME is not running."
else
echo -n "Stopping $DESC: $PROGNAME"
cat $PIDFILE | xargs kill
echo "."
fi
}
reload()
{ echo -n "reloading $DESC: $PROGNAME"
$DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE) }
case "$1" in
mysql下载starting the serverstart)
start
;;
stop)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论