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

How To Set Up A Load-Balanced MySQL Cluster - Part 5 - 应用软件 - 电脑教程网

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

日期:2007-10-05   荐:
·图形化管理MySQL更轻松·mysql 时间函数用法 集合·MySQL常见问题解答及技巧·Mysql学习点滴·MySQL 5.0 新特性教程 存储过程:第三讲·远程连接mysql资料·在Linux 环境下安装 Mysql·MySQL 常用命令·如何安装mysql 5.0·Mysql使用基础知识 6 Configure The Load Balancers

Our MySQL cluster is finished now, and you could start using it now. However, we don't have a single IP address that we can use to access the cluster, which means you must configure your applications in a way that a part of it uses the MySQL cluster node 1 (sql1.example.com), and the rest uses the other node (sql2.example.com). Of course, all your applications could just use one node, but what's the point then in having a cluster if you do not split up the load between the cluster nodes? Another problem is, what happens if one of the cluster nodes fails? Then the applications that use this cluster node cannot work anymore.

The solution is to have a load balancer in front of the MySQL cluster which (as its name suggests) balances the load between the MySQL cluster nodes. The load blanacer configures a virtual IP address that is shared between the cluster nodes, and all your applications use this virtual IP address to access the cluster. If one of the nodes fails, then your applications will still work, because the load balancer redirects the requests to the working node.

Now in this scenario the load balancer becomes the bottleneck. What happens if the load balancer fails? Therefore we will configure two load balancers (loadb1.example.com and loadb2.example.com) in an active/passive setup, which means we have one active load balancer, and the other one is a hot-standby and becomes active if the active one fails. Both load balancers use heartbeat to check if the other load balancer is still alive, and both load balancers also use ldirectord, the actual load balancer the splits up the load onto the cluster nodes. heartbeat and ldirectord are provided by the Ultra Monkey package that we will install.

It is important that loadb1.example.com and loadb2.example.com have support for IPVS (IP Virtual Server) in their kernels. IPVS implements transport-layer load balancing inside the Linux kernel.

6.1 Install Ultra Monkey

Ok, let's start: first we enable IPVS on loadb1.example.com and loadb2.example.com:

loadb1.example.com / loadb2.example.com:

modprobe ip_vs_dhmodprobe ip_vs_ftpmodprobe ip_vsmodprobe ip_vs_lblcmodprobe ip_vs_lblcrmodprobe ip_vs_lcmodprobe ip_vs_nqmodprobe ip_vs_rrmodprobe ip_vs_sedmodprobe ip_vs_shmodprobe ip_vs_wlcmodprobe ip_vs_wrr

In order to load the IPVS kernel modules at boot time, we list the modules in /etc/modules:

loadb1.example.com / loadb2.example.com:

vi /etc/modules

ip_vs_dhip_vs_ftpip_vsip_vs_lblcip_vs_lblcrip_vs_lcip_vs_nqip_vs_rrip_vs_sedip_vs_ship_vs_wlcip_vs_wrr

Now we edit /etc/apt/sources.list and add the Ultra Monkey repositories (don't remove the other repositories), and then we install Ultra Monkey:

loadb1.example.com / loadb2.example.com:

vi /etc/apt/sources.list

deb http://www.ultramonkey.org/download/3/ sarge maindeb-src http://www.ultramonkey.org/download/3 sarge main

apt-get updateapt-get install ultramonkey libdbi-perl libdbd-mysql-perl libmysqlclient14-dev

Now Ultra Monkey is being installed. If you see this warning:

¦ libsensors3 not functional ¦ ¦ ¦ ¦ It appears that your kernel is not compiled with sensors support. As a ¦ ¦ result, libsensors3 will not be functional on your system. ¦ ¦ ¦ ¦ If you want to enable it, have a look at "I2C Hardware Sensors Chip ¦ ¦ support" in your kernel configuration. ¦

you can ignore it.

Answer the following questions:

Do you want to automatically load IPVS rules on boot?<-- No

Select a daemon method.<-- none

The libdbd-mysql-perl package we've just installed does not work with MySQL 5 (we use MySQL 5 on our MySQL cluster...), so we install the newest DBD::mysql Perl package:

loadb1.example.com / loadb2.example.com:

cd /tmpwget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-3.0002.tar.gztar xvfz DBD-mysql-3.0002.tar.gzcd DBD-mysql-3.0002perl Makefile.PLmakemake install

We must enable packet forwarding:

loadb1.example.com / loadb2.example.com:

vi /etc/sysctl.conf

# Enables packet forwardingnet.ipv4.ip_forward = 1

标签: