Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103655158
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-04-29 07:52:32

    来源:赛迪网    作者:Eric

你应该看到像这样的输出:

mysql> SELECT * FROM testtable;

+——+

| i |

+——+

| 1 |

| 2 |

+——+

2 rows in set (0.05 sec)

所以每个群集节点都有着相同的数据!

现在让我们看看如果我们停止节点1(sql1.example.com):运行

sql1.example.com:

killall ndbd

并检查

ps aux | grep ndbd | grep -iv grep

看看所有的ndbd进程已经结束了。如果你仍然看见ndbd进程,再运行

killall ndbd

直到所有的ndbd进程都结束。

现在让在我们的管理服务器上,检查群集的状态(loadb1.example.com):

loadb1.example.com:

ndb_mgm

在ndb_mgm控制台上输入

show;

你应该看到这些:

ndb_mgm> show;

Connected to Management Server at: localhost:1186

Cluster Configuration

———————

[ndbd(NDB)] 2 node(s)

id=2 (not connected, accepting connect from 192.168.0.101)

id=3 @192.168.0.102 (Version: 5.0.19, Nodegroup: 0, Master)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @192.168.0.103 (Version: 5.0.19)

[mysqld(API)] 2 node(s)

id=4 @192.168.0.101 (Version: 5.0.19)

id=5 @192.168.0.102 (Version: 5.0.19)

ndb_mgm>

你看见,sql1.example.com节点没有连接上了。

输入:

quit;

退出ndb_mgm控制台。

让我们检查sql2.example.com节点:

sql2.example.com:

mysql -u root -p

USE mysqlclustertest;

SELECT * FROM testtable;

quit;

SELECT查询出的结果应该依然是:

mysql> SELECT * FROM testtable;

+——+

| i |

+——+

| 1 |

| 2 |

+——+

2 rows in set (0.17 sec)

Ok,所有的测试都正常,现在让我们再次启动sql1.test.com节点:

sql1.example.com:

ndbd

五 如何重新启动群集

现在让我们设想你由于修改了loadb1.test.com节点上的/var/lib/mysql-cluster/config.ini

或者其它原因,需要重新启动MySQL群集。为了这样做,你要使用loadb1.example.com节点上的

ndb_mgm群集管理客户端:

loadb1.test.com:

ndb_mgm

在ndb_mgm控制台上,你输入

shutdown;

你将看到像这样的信息:

ndb_mgm> shutdown;

Node 3: Cluster shutdown initiated

Node 2: Node shutdown completed.

2 NDB Cluster node(s) have shutdown.

NDB Cluster management server shutdown.

ndb_mgm>

这意味着群集节点sql1.test.com和sql2.test.com,已经群集管理服务器都已经关闭。

运行

quit;

退出 ndb_mgm 控制台。

为启动群集管理服务器,在loadb1.test.com上这样做:

loadb1.test.com:

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

并在sql1.test.com 和 sql2.test.com 上运行:

sql1.example.com / sql2.example.com:

ndbd

或者,你刚修改过loadb1.test.com上的/var/lib/mysql-cluster/config.ini文件:

ndbd –initial

在这之后,你可以在loadb1.test.com上检查看看群集是否已经重启:

loadb1.test.com:

ndb_mgm

在ndb_mgm控制台,输入

show;

来查看当前群集的状态。所有节点重启后可能需要一点点时间来报告已经连接上。

输入:

quit;

退出ndb_mgm控制台。

六 配置负载均衡

我们的MySQL群集已经现在完成了,你现在可以开始使用它了。然而,我们没有一个访问群集的

单独的IP地址,这意味着你必须配置应用程序一部分使用MySQL群集节点1(sql1.test.com),另

外的部分使用节点2(sql2.test.com).当然,所有的应用程序只是需要使用一个节点,但如果你

不想在群集节点之间分流负载,那你拥有一个群集的目的是什么?另外一个问题是,如果一个群集

节点坏掉了怎么办?那么使用这个群集节点的应用程序将根本不能够工作了。

这里的解决方案是在MySQL群集前端配置一个负载均衡器来在每个MySQL群集节点之间平衡负载。

负载均衡器在群集节点之间配置一个共享的虚拟IP地址,所有你的应用程序使用这个虚拟IP地址来

访问群集。如果其中一个节点坏掉,那么你的应用程序将仍然可以工作,因为负载均衡器将请求转移

到了工作正常的另外一个节点。

现在在这个例子中负载均衡器成为了瓶颈。如果这个负载均衡器坏掉了怎么办呢?因此我们将以(active/passive)

主动/被动安装方式来配置两个负载均衡器。这意味着我们有一个负载均衡器是主动的,另外一个是

热备的,当主动的那个坏掉了,它将会变为主动。每个负载均衡器都使用heartbeat(心跳)来检查

另外一个负载均衡器的活动情况,同时负载均衡器也使用ldirectord,它负责将流量分配到群集节点。

heartbeat和ldirectord都在我们将要安装的 Ultra Monkey 安装包中。

loadb1.test.com 和 loadb2.test.com 节点的系统内核支持IPVS(IP虚拟服务器) 非常重要。

IPVS是在Linux内核的传输层执行负载均衡的。

6.1 安装 Ultra Monkey

好,现在让我们开始: 首先我们启用loadb1.test.com 和 loadb2.test.com节点上IPVS:

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

modprobe ip_vs_dh

modprobe ip_vs_ftp

modprobe ip_vs

modprobe ip_vs_lblc

modprobe ip_vs_lblcr

modprobe ip_vs_lc

modprobe ip_vs_nq

modprobe ip_vs_rr

modprobe ip_vs_sed

modprobe ip_vs_sh

modprobe ip_vs_wlc

modprobe ip_vs_wrr

为了在启动时IPVS模块,我们在/etc/modules列举了模块:

loadb1.test.com / loadb2.test.com:

vi /etc/modules

ip_vs_dh

ip_vs_ftp

ip_vs

ip_vs_lblc

ip_vs_lblcr

ip_vs_lc

ip_vs_nq

ip_vs_rr

ip_vs_sed

ip_vs_sh

ip_vs_wlc

ip_vs_wrr

现在我们编辑/etc/apt/sources.list,添加 Ultra Monkey 的下载点,然后我们安装Ultra Monkey:

loadb1.test.com / loadb2.test.com:

vi /etc/apt/sources.list

deb sarge main

deb-src sarge main

apt-get update

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

现在Ultra Monkey已经安装了,如果你看到下面这样的警告:

| 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.

你可以忽略它。

回答下面的问题:

Do you want to automatically load IPVS rules on boot?

<-- No

Select a daemon method.

<-- none

我刚安装的libdbd-mysql-perl安装包不能够在MySQL 5(我们在MySQL群集上使用MySQL 5),

因此我们安装最新的DBD::mysql Perl安装包:

阅读(692) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~