您的位置主页 > MYSQL

配置高可用性的MySQL服务器负载均衡群集

这篇论坛文章(赛迪网技术社区)主要介绍了配置一个高可用性的MySQL服务器负载均衡群集的具体过程,详细内容请参考下文:
本文将告诉你如何配置一个三个节点的MySQL 5数据库服务器群集:两个存储节点和一个
管理节点。这个群集是由用提供“heartbeat心跳”(用来检查另外一个节点是否活动)和
“ldirectord”(将请求分发到MySQL群集的节点)的Ultra Monkey安装包的两个节点组成的
一个高可用性负载均衡器。

本文我们的每个节点使用Debian Sarge Linux系统。其它Linux发行版本的安装可能一点点
区别。MySQL的版本我们使用5.0.19。如果你不想使用MySQL 5,你也可以使用MySQL 4.1,尽
管我还没有测试过。

本文是一篇实践应用指导;它没有涉及太多的理论。关于群集的理论你可以在网上找到很多。

一 服务器

我使用下面的Debian服务器,它们都在同一个网段(本例如:192.168.0.x):
sql1.test.com: 192.168.0.101 MySQL 群集节点 1
sql2.test.com: 192.168.0.102 MySQL 群集节点 2
loadb1.test.com: 192.168.0.103 负载均衡 1 / MySQL 群集管理服务器
loadb2.test.com: 192.168.0.104 负载均衡 2
另外我们需要一个虚拟IP地址:192.168.0.105。它会安排给这个MySQL群集的负载均衡,以便于
应用程序通过统一单独的IP地址来访问群集。

尽管我们想在MySQL群集中使用两个节点,但是我们仍然需要第三个节点,MySQL群集管理服务器
,主要的一个原因是:如果其中一个MySQL群集节点坏了,而MySQL群集管理服务器没有运行,那
么两个群集节点上的数据将会不一致(“split brain”)。我们需要它来配置MySQL群集.

因此我们的安装一般需要五台机器:

2个MySQL群集节点 + 1个群集管理服务器 + 2个负载均衡 = 5

因为群集管理服务器没有使用多少资源,系统将会空着什么都不做,所以我们可以把我们的第一
个负载均衡和它一起放在同一台机器上,这样可以节约我们一台服务器,所以最好我们只需要四台
机器。

二 配置MySQL群集管理服务器

首先我们要下载MySQL 5.0.19,并安装群集管理服务器(ndb_mgmd)和群集管理客户端 (ndb_mgm - 它
可以用来监控群集的运行情况). 下面的步骤是在loadb1.test.com (192.168.0.103)上进行的:

loadb1.test.com:

mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm

下一步,我们必须创建群集的配置文件,/var/lib/mysql-cluster/config.ini:

loadb1.test.com:

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini

―――-
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Section for the cluster management node
[NDB_MGMD]
# IP address of the management node (this system)
HostName=192.168.0.103
# Section for the storage nodes
[NDBD]
# IP address of the first storage node
HostName=192.168.0.101
DataDir= /var/lib/mysql-cluster
[NDBD]
# IP address of the second storage node
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]
―――-
实际应用中请将文件中的IP地址换成你相应的IP。



然后我们启动群集管理服务器:

loadb1.test.com:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

我们应该也需要在服务器启动时能够自动启动管理服务器,所以我们创建了一个非常简单的初始化
脚本和相应的启动连接:

loadb1.test.com:

echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults

三 配置MySQL群集节点(存储节点)

现在我们将分别在sql1.test.com和sql2.test.com上安装mysql-max-5.0.19:
sql1.example.com / sql2.example.com:

groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql-max-5.0.19-linux-i686-glibc23 mysql
cd mysql
scripts/mysql_install_db