如何设置负载平衡的MySQL集群

如何设置负载均衡的MySQL集群

版本1.0
作者:Falko Timme

本教程将介绍如何配置具有三个节点的MySQL 5集群:两个存储节点和一个管理节点。 此群集由高可用性负载平衡器负载平衡,实际上有两个节点使用Ultra Monkey包,它提供心跳 (用于检查其他节点是否仍然存在)和ldirectord (将请求分解为节点的MySQL集群)。

在本文中,我对所有节点使用Debian Sarge。 因此,其他分布的设置可能会有所不同。 我在这个设置中使用的MySQL版本是5.0.19。 如果你不想使用MySQL 5,你也可以使用MySQL 4.1,尽管我还没有测试它。

这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1我的服务器

我使用以下Debian服务器都在同一个网络(本例中为192.168.0.x):

  • sql1.example.com:192.168.0.101 MySQL群集节点1
  • sql2.example.com:192.168.0.102 MySQL集群节点2
  • loadb1.example.com:192.168.0.103负载均衡器1 / MySQL集群管理服务器
  • loadb2.example.com:192.168.0.104负载平衡器2

除此之外,我们需要一个虚拟IP地址: 192.168.0.105 。 它将由负载平衡器分配给MySQL集群,以便应用程序具有访问集群的单个IP地址。

虽然我们希望在我们的MySQL集群中有两个MySQL集群节点,但是我们仍然需要一个第三个节点,即MySQL集群管理服务器,主要是一个原因:如果两个MySQL集群节点中的一个失败,并且管理服务器没有运行,那么两个集群节点上的数据将变得不一致(“ 分裂脑 ”)。 我们还需要它来配置MySQL集群。

所以通常我们需要五台机器进行设置:

2 MySQL cluster nodes + 1 cluster management server + 2 Load Balancers = 5

由于MySQL集群管理服务器不使用许多资源,系统只会坐在那里什么都不做,我们可以将第一个负载平衡器放在同一台机器上,这样可以节省我们一台机器,所以我们最终得到了四台机器。

2设置MySQL群集管理服务器

首先,我们必须下载MySQL 5.0.19( 最大版本!),并安装集群管理服务器( ndb_mgmd )和集群管理客户机( ndb_mgm - 可以用来监视集群中发生的情况)。 在loadb1.example.com192.168.0.103 )上执行以下步骤:

loadb1.example.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.example.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地址。

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

loadb1.example.com:

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

在系统引导时自动启动管理服务器是有意义的,因此我们创建了一个非常简单的初始化脚本和相应的启动链接:

loadb1.example.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
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏