WEB开发网
开发学院数据库MySQL How To Set Up A Load-Balanced MySQL Cluster -... 阅读

How To Set Up A Load-Balanced MySQL Cluster --Part 1

 2007-11-11 15:44:47 来源:WEB开发网   
核心提示:How To Set Up A Load-Balanced MySQL(和PHP搭配之最佳组合) Cluster Version 1.0 Author: Falko Timme <ft [at] falkotimme [dot] com> Last edited 03/27/2006This tutoria

How To Set Up A Load-Balanced MySQL(和PHP搭配之最佳组合) Cluster

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>
Last edited 03/27/2006

This tutorial shows how to configure a MySQL(和PHP搭配之最佳组合) 5 cluster with three nodes: two storage nodes and one management node. This cluster is load-balanced by a high-availability load balancer that in fact has two nodes that use the Ultra Monkey package which provides heartbeat (for checking if the other node is still alive) and ldirectord (to split up the requests to the nodes of the MySQL(和PHP搭配之最佳组合) cluster).

In this document I use Debian Sarge for all nodes. Therefore the setup might differ a bit for other distributions. The MySQL(和PHP搭配之最佳组合) version I use in this setup is 5.0.19. If you do not want to use MySQL(和PHP搭配之最佳组合) 5, you can use MySQL(和PHP搭配之最佳组合) 4.1 as well, although I haven't tested it.

This howto is meant as a practical guide; it does not cover the theoretical backgrounds. They are treated in a lot of other documents in the web.

This document comes without warranty of any kind! I want to say that this is not the only way of setting up such a system. There are many ways of achieving this goal but this is the way I take. I do not issue any guarantee that this will work for you!

1 My Servers

I use the following Debian servers that are all in the same network (192.168.0.x in this example):

  • sql1.example.com: 192.168.0.101 MySQL(和PHP搭配之最佳组合) cluster node 1
  • sql2.example.com: 192.168.0.102 MySQL(和PHP搭配之最佳组合) cluster node 2
  • loadb1.example.com: 192.168.0.103 Load Balancer 1 / MySQL(和PHP搭配之最佳组合) cluster management server
  • loadb2.example.com: 192.168.0.104 Load Balancer 2

In addition to that we need a virtual IP address : 192.168.0.105. It will be assigned to the MySQL(和PHP搭配之最佳组合) cluster by the load balancer so that applications have a single IP address to access the cluster.

Although we want to have two MySQL(和PHP搭配之最佳组合) cluster nodes in our MySQL(和PHP搭配之最佳组合) cluster, we still need a third node, the MySQL(和PHP搭配之最佳组合) cluster management server, for mainly one reason: if one of the two MySQL(和PHP搭配之最佳组合) cluster nodes fails, and the management server is not running, then the data on the two cluster nodes will become inconsistent ("split brain"). We also need it for configuring the MySQL(和PHP搭配之最佳组合) cluster.

So normally we would need five machines for our setup:

2 MySQL(和PHP搭配之最佳组合) cluster nodes + 1 cluster management server + 2 Load Balancers = 5

As the MySQL(和PHP搭配之最佳组合) cluster management server does not use many resources, and the system would just sit there doing nothing, we can put our first load balancer on the same machine, which saves us one machine, so we end up with four machines.

2 Set Up The MySQL(和PHP搭配之最佳组合) Cluster Management Server

First we have to download MySQL(和PHP搭配之最佳组合) 5.0.19 (the max version!) and install the cluster management server (ndb_mgmd) and the cluster management client (ndb_mgm - it can be used to monitor what's going on in the cluster). The following steps are carried out on loadb1.example.com (192.168.0.103):

loadb1.example.com:

mkdir /usr/src/MySQL(和PHP搭配之最佳组合)-mgm
cd /usr/src/MySQL(和PHP搭配之最佳组合)-mgm
wget http://dev.MySQL(和PHP搭配之最佳组合).com/get/Downloads/MySQL(和PHP搭配之最佳组合)-5.0/MySQL(和PHP搭配之最佳组合)-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.MySQL(和PHP搭配之最佳组合).com/
tar xvfz MySQL(和PHP搭配之最佳组合)-max-5.0.19-linux-i686-glibc23.tar.gz
cd MySQL(和PHP搭配之最佳组合)-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(和PHP搭配之最佳组合)-mgm

Next, we must create the cluster configuration file, /var/lib/MySQL(和PHP搭配之最佳组合)-cluster/config.ini:

loadb1.example.com:

mkdir /var/lib/MySQL(和PHP搭配之最佳组合)-cluster
cd /var/lib/MySQL(和PHP搭配之最佳组合)-cluster
vi config.ini

[NDBD DEFAULT]
NoOfReplicas=2

[MySQL(和PHP搭配之最佳组合)D 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(和PHP搭配之最佳组合)-cluster

[NDBD]
# IP address of the second storage node
HostName=192.168.0.102
DataDir=/var/lib/MySQL(和PHP搭配之最佳组合)-cluster

# one [MySQL(和PHP搭配之最佳组合)D] per storage node
[MySQL(和PHP搭配之最佳组合)D]
[MySQL(和PHP搭配之最佳组合)D]

Please replace the IP addresses in the file appropriately.

Then we start the cluster management server:

loadb1.example.com:

ndb_mgmd -f /var/lib/MySQL(和PHP搭配之最佳组合)-cluster/config.ini

It makes sense to automatically start the management server at system boot time, so we create a very simple init script and the appropriate startup links:

loadb1.example.com:

echo 'ndb_mgmd -f /var/lib/MySQL(和PHP搭配之最佳组合)-cluster/config.ini' > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults

Tags:How To Set

编辑录入:coldstar [复制链接] [打 印]
赞助商链接