You are on page 1of 23

使用 RedHat AS 3.

0 自带 cluster 软件进行 HA 配置(修改版)


作者:七月飞雪 Email:xushli@163.net

初稿日期:2004 年 8 月 2 日

修改日期:2004 年 8 月 4 日

修改说明:

在本文最后,增加和图形界面下配置相对应的 Console 下 HA 配置的详细命令,如果您

的系统上没有安装 Xwindow,请在阅读完第三章前两小节后,跳过直接阅读第五章

写在前面的东东:

此篇文章参考了chinaunix论坛rdd兄弟文章http://www.chinaunix.net/jh/4/325828.html

(Vmware下RedHat AS 2.1 集群配置StepbyStep)的部分内容,另外参考了redhat官方网站上

说明文档《Red Hat Cluster Suite Configuring and Managing a Cluster》,较之AS2.1 的HA配置,

AS3.0 上的配置更加人性化,不过较之AS2.1 的配置也有了不少不一样的地方,这也是我没

能按rdd兄弟的文章配置成功的原因,网络上又几乎没有关于redhat AS3.0HA配置中文资

料,连E文的很少,我找来找去只找到了redhat官方网站上的配置说明,本人E文不好,只

好拿着金山词霸一个词一个词的去阅读这 200 多页的文档,相信读完这个文档,本人的计算

机英语水平又会提高不少。^_^

在这里感谢我亲爱的老婆对我的支持,这一个星期来我都研究到深夜1点多,电脑前的

凳子总“嘎嘎”做响,肯定打扰了老婆的睡觉,她昨天晚上还陪我一起阅读E文文档到凌晨

1点多,我才会死啃那晦涩的E文,于今天凌晨2:15分配置成功!

此外也严重感谢屋里的那几个死蚊子,在我腿上叮了好几个大包,让我保持了清醒的头

脑,今天晚上回家我就回赠送它们点驱蚊药!

不好意思,废话太多了,进入正题,GO ON!

―――――――――――――――――――――――――――――――――――――――

实施系统软硬件环境

硬件:p4 2.4G,80G,512M DDR

宿主机系统:win2000pro sp4

虚拟机软件:Vmware GSX Server 3.1


www.Chinaunix.net 七月飞雪 Email:xushli@163.net

一、安装 Vmware GSX Server 3.1 和 Redhat AS3.0 的基本系统

1.安装 Vmware GSX Server 3.1

相信大家都安装过 workstation,过程都差不多,这里就不多废话了,有一点要提醒

大家注意的是,VMware GSX Server 2.5 无法打开 Vmware workstation4.52 虚拟出来的

系统,GSX Server 2.5 比 4.52 出来的要早,所以。。。。。。。(是不是又废话了?^_^)

2.安装 Redhat AS3.0

是否安装 Xwindow 系统由自行决定,设置此系统 hostname 为 linux1,ip 为 10.0.0.155

3.COPY 并配置另一套 AS3.0 系统

将安装的第一套系统的文件复制到另一个文件夹,用编辑器打开 rhel3.vmx 文件修

改 displayName = "Linux1"到"Linux2"

然后修改此系统的虚拟硬件配置,将网卡删除如下图所示,进行此步的原因是因为

从第一套系统 COPY 过来的文件如果同时运行,两个系统的MAC地址会发生冲突

由于将网卡删除,所以必须删除后启动第二套系统,启动过程中 kudzu 进程会提示

系统有多余的配置文件(就是已经被删除网卡的配置文件),选择将多余的配置文

件删除,然后再关闭 linux2 系统,重新给 linux2 添一块网卡。再启动 linux2


------------------------------------------------------------------------------------------------------------ 2

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

启动 linux2,启动过程中,由于重新添加了网卡,所以系统检测到了它,再重新配

置网卡,设置 linux2 IP 地址为 10.0.0.156,其它同 linux1。

(注:这样有人可能会觉得麻烦,不过网卡MAC地址冲突,这也是没办法的事,

谁让咱们偷懒不想再重装一套系统呢)

这时候检查以下各文件,修改主机名,网络配置文件

#vi /etc/sysconfig/network

将 HOSTNAME=linux1 改为 HOSTNAME=linux2

#vi /etc/hosts

将 10.0.0.155 linux1 修改为 10.0.0.156 linux2

(注:有些朋友可能会问,怎么不直接把 hosts 文件里把 linux1,心跳地址都写进

去,其实我现在这么做是为了让文档更清晰些,到下一步的时候再添加这些,虽

然稍微麻烦点,但是可以避免一些朋友看不明白)

这样两套完整的 AS3.0 的系统就配置成功,进入第二阶段

二、使用 Vmware 虚拟出HA必需硬件设备,并进行配置

1.给两个系统各虚拟一个新的网卡

关掉两个系统,给两系统各一个增加以网桥方式工作的网卡,方法与第一图类似

2.创建共享磁盘

给 HA 系统创建共享磁盘 sdb,大小为 500M(自定义),如下图所示

先打开 linux1 系统的设置,创建磁盘,磁盘文件名为,share.vmdk

选中 Allocate all disk space now 这一选项

------------------------------------------------------------------------------------------------------------ 3

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

建议将新加磁盘的装入点设为 scsi 1:0,如下图所示,这就是系统的裸设备

然后打开 linux2 的设置,同样给 linux2 添加共享磁盘,不过这次选择已经存在的磁盘,

------------------------------------------------------------------------------------------------------------ 4

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

使用的共享磁盘就是刚才为 linux1 创建的那个磁盘,如下图所示

同样在 Configuration editor 里面修改共享磁盘的”Vitual disk node”为 scsi 1:0

这样,就给两个系统各创建了一个新网卡,又创建了一个共享磁盘。由于系统启动

的时候会锁定磁盘,所以当启动 linux1 后共享磁盘被锁定了,linux2 就起不来了,因此

必须做一下设置,用编辑器打开两个 Vmware 文件夹的 rhel3.vmx 文件,最后增加一行:


------------------------------------------------------------------------------------------------------------ 5

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

Disk.locking = false

这样硬件就配置好了

3.配置新添加的网卡

启动 linux1 系统,系统在启动时候会检测到新添加的网卡,选择配置,将第二块

网卡的 IP 设置为 192.168.123.1,其它默认

修改 linux1 系统的/etc/hosts 文件,改后内容如下

10.0.0.155 linux1

192.168.123.1 linux1

10.0.0.156 linux2

192.168.123.2 linux2

同时启动 linux2 系统,设置方法同 linux1

4.配置共享磁盘

在 linux1 里,

在 shell 里运行

#fdisk /dev/sdb //注使用 parted 也可以

将添加的共享磁盘,分为两个区:sdb1 和 sdb2,各 250M 大小

在两台服务器上分别编辑/etc/sysconfig/rawdevices 文件,将分区绑定到裸设备:

#vi /etc/sysconfig/rawdevices

加入

/dev/raw/raw1 /dev/sdb1

/dev/raw/raw2 /dev/sdb2

重启服务

#service rawdevices restart

启动完成后执行#raw –qa,会显示以下内容

/dev/raw/raw1: bound to major 8, minor 17

/dev/raw/raw2: bound to major 8, minor 18

格式化共享磁盘,每个块大小为4K
mkfs.ext3 -j -b 4096 /dev/sdb1

mkfs.ext3 -j -b 4096 /dev/sdb2

------------------------------------------------------------------------------------------------------------ 6

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

注:使用-b 选项将磁盘区块设置为4K,过小的区块会导致磁盘检查的时候耗费

过多的时间

然后在 linux2 里修改/etc/sysconfig/rawdevices 同上,


然后重新启动 rawdevices 服务,

raw –qa 检查系统

至此,硬件准备工作完成

三、安装并配置基本的 HA 系统

在这里我们只将 AS3.0 自带的 CLUSTER 服务配置好,涉及到具体的 http,ftp,mysql,oracle

的HA服务会在下一部分介绍

1.安装确认系统内安装了 AS3.0 的 HA 软件包

我们在这里要用到的软件包主要有两个,clumanager 和 redhat-config-cluster

请用 rpm –q 命令检查系统是否安装这两个软件包

2.如果没有安装可以通过以下方法安装

使用 ISO 或光盘,AS3.0 共有十一张光盘,我们平时常用的只有前四张,另外三张

为缘代码光盘,最后有四张扩展光盘,其中扩展光盘的第三张是集群软件,还包括

了 IPVS 等软件,从光盘上安装,如下图

------------------------------------------------------------------------------------------------------------ 7

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

或者通过网络上下载到这两个软件包进行单独安装
rpm --Uvh clumanager-<version>.<arch>.rpm
rpm --Uvh redhat-config-cluster-<version>.noarch.rpm
注:网络上比较多的是 src 软件包,下载下来以后得使用 rpmbuild 命令进行重新编译,
然后在安装
3.开始基本的HA配置

在 linux1 系统上,启动 xwindows,我这里是 gnome,开始运行配置工具

选择左下角图标 => 系统设置 =>服务器设置 => Cluster

(或者在命令行里运行#redhat-config-cluster)

出现以下画面(图里左上角乱码是因为我用的是远程XWINDOWS,设置有问题)

------------------------------------------------------------------------------------------------------------ 8

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

下一步操作,点菜单栏里的群集->配置

------------------------------------------------------------------------------------------------------------ 9

转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

出现下图所示

------------------------------------------------------------------------------------------------------------ 10
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

在 Cluster Name 处可以更改你设置集群的名字,在这里我设置为 test_cluster

然后我们开始添加集群内的成员,点菜单栏->新建 如下图所示

(注:此时保证列表处选中 Members,才可以出现下面内容)

将两台机器 Ip 都填写进去,如下图

在这里选中菜单栏里的 cluster->shared state,可以查看裸设备设置,如下图

------------------------------------------------------------------------------------------------------------ 11
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

点击确定继续

然后打开菜单栏 clusterÆdaemon properties 出现以下窗口

这个窗口就是集群的配置窗口,详细的说明请查看 redhat 的官方文档

有一个说明的就是中间的那个滑动条,就是配置服务器探测等待 15 秒,我们不能设

的太小,这里我们就默认使用 15 秒

在 clumembd 这个窗口里选中 Enable Broadcast Heartbeating 然后点确定,这时候会弹

出一个窗口提示

因为我们配置的就是双节点的 HA,所以不用管它,直接点确定

然后在 cluster configuration 选择保存后退出此窗口

在菜单栏 群集Æ启动本地群集守护进程,稍等一会儿,就会出现以下状态

------------------------------------------------------------------------------------------------------------ 12
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

这里就显示在 linux1 上的 cluster 配置成功

然后我们就要配置 linux2 了,配置 linux2 其实很简单,将 linux1 系统下/etc/cluster.xml

文件 COPY 到 linux2 的/etc/目录下就可以了

(注:cluster.xml 是在安装完两个软件包的时候不会产生,它是在第一次运行

redhat-config-cluster 命令的时候产生的,和 AS2.1 里的 cluster.conf 储存内

容相同,只不过换了格式而已。这就是集群主要的配置文件,一定要确保集群上

每个节点的此文件都是相同的,另外在 redhat 的官方文档上强烈警告用户:不要

去手动的修改这个 xml 文件)

将此文件 copy 上 linux2 以后,在 linux2 命令行里执行

#service clumanager start

系统显示执行成功,再稍等一会儿,你就会发现在 linux1 上出现了变化,如下图

------------------------------------------------------------------------------------------------------------ 13
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

启动关闭集群服务的命令是 service clumanager start | stop

注:如果你在配置完成以后不想用图形界面监控节点运行,在 shell 里运行

#clustat –i 10 / / 状态监控,每 10 秒中刷新一次

出现如下结果
Cluster Status - test_cluster
13:57:22
Cluster Quorum Incarnation #1
Shared State: Shared Raw Device Driver v1.2
Member Status
------------------ ----------
10.0.0.155 Active <-- You are here
10.0.0.156 Active
Service Status Owner (Last) Last Transition Chk Restarts
-------------- -------- ---------------- --------------- --- --------
------------------------------------------------------------------------------------------------------------ 14
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

这样,一个没有包含任何服务的“裸”的集群系统就配置成功了,因为它没有包含

任何应用,也没有什么意义,下一步我们就在上面配置一个大家最常用的 http 服

务来测试一下

四、举例说明:配置 HTTP Server 的 HA 服务

1.给 http 服务增加共享磁盘

磁盘上将存储两个系统上 apache 共用的程序文件,也就是说,把 apache 的

DocumnetRoot 放到这个共享磁盘上,创建方法同创建裸设备时一样,请注意,这个共

享磁盘的作用不同于上面的裸设备

2.创建共享磁盘加载点,配置两台机器上的 http 服务

启动两台机器,我这里新添加硬盘为 sdc,我以 ext3 格式将其格式化,在每个机器

的根目录下创建文件夹 www,为 apache 的 web 目录,同时将创建的 sdc1 分区加载到/www

目录下

#mkdir /www

#mount /dev/sdc1 /www //这一步只在 linux1 上进行就行

然后安装 apache,这就不用多说了吧,指出一点是,两台机器上的 apache 安装必须

完全一样,包括配置文件,安装完成后,修改 httpd.conf,将其根目录指向/www,我这

里是用的是 AS3.0 自带的 apache2.0 的 RPM 包,

在 linux1 上,进入/www 目录,在此目录下保存一个 index.html 作测试使用

这样,两台机器上的 http 服务就完全配置完成

3.配置基于此集群的 http 服务

在 linux1 的 xwindows,启动集群配置工具(参看上),增加名为 httpd 的服务如图

------------------------------------------------------------------------------------------------------------ 15
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

点菜单栏"新建"服务名为”httpd”,检测时间间隔设置为 4 秒,httpd 服务的启动脚本

就是 apache 的启动脚本,我这里使用的是 rpm 包默认安装的脚本/etc/rc.d/init.d/httpd

点"确定",就增加了一个服务如下图所示

------------------------------------------------------------------------------------------------------------ 16
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

如上图所示,选中 httpd 这个 service,单击菜单栏的”Add Child”,出现如下图

先给 httpd 服务增加共享设备 Add Device,设备点为我们创建的 sdc1,加载点为/www,

格式为 ext3,模式为”rw”读写模式

点确定,在给此服务添加一个 IP 地址,这个 IP 就是客户浏览器访问的 IP,我们设置为

10.0.0.157,掩码同网络设置,这里设置为 255.0.0.0,广播地址设置为 10.0.0.255

这样就完全添加成功了,如下图

------------------------------------------------------------------------------------------------------------ 17
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

保存设置,回到集群监控状态

以上所有操作均是在 linux1 上进行,现在为保证 linux1 和 linux2 集群配置相同,将 linux1

的/etc/cluster.xml 复制到 linux2 的/etc/cluster.xml,同时启动两台机器上的集群服务,再次

查看监控状态图,就发现有新的服务添加了,点击上面的"启用"及"运行"此服务,

HTTP 服务就开始运行了

------------------------------------------------------------------------------------------------------------ 18
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

这样,整个集群下的 http 服务就配置完成,并开始运行了

五、图形界面下配置相对应的 Console 下 HA 配置的详细命令

与图形界面配置相对应,Redhat 也提供了 Console 环境下的详细配置命令,其中主要

的配置命令就是 redhat-config-cluster-cmd 这个命令,还有其它的一组命令如 clusvcadm、

clushutdown 等,下面就同样以配置 httpd 服务为例子,对 Console 下的 HA 配置命令进行

详细的说明,请参照第四章节阅读

1、 列出当前集群名字

redhat-config-cluster-cmd --cluster

2、 设置当前集群名字为“test_cluster”

redhat-config-cluster-cmd --cluster --name='test_cluster'

3、 显示当前裸设备状态

redhat-config-cluster-cmd –sharedstate

4、 添加一个集群节点,名字为“10.0.0.155”

------------------------------------------------------------------------------------------------------------ 19
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

redhat-config-cluster-cmd --add_member --name=10.0.0.155

5、 修改一个节点名字由 member2 到 member3

redhat-config-cluster-cmd --member=member2 --name=member3

6、 删除一个名为 member3 的节点

redhat-config-cluster-cmd --member=member3 --del_member

7、 列出当前集群内的服务

redhat-config-cluster-cmd –services

8、 添加一个名为 httpd 的服务

redhat-config-cluster-cmd --add_service --name=httpd

9、 列出名为 httpd 的这个服务下的子节点

redhat-config-cluster-cmd --service=httpd

10、设置 httpd 服务的相关信息,检测时间,启动脚本等等

redhat-config-cluster-cmd --service=httpd \

--checkinterval=15 \

--userscript=/etc/rc.d/init.d/httpd

11、删除名为 httpd 的集群服务

redhat-config-cluster-cmd --service=httpd \

--del_service

12、列出 httpd 服务的 ip 地址

redhat-config-cluster-cmd --service=httpd \

--service_ipaddresses

13、设置 httpd 的对外服务 IP 地址为 10.0.0.157

redhat-config-cluster-cmd --service=httpd \

--add_service_ipaddress \

--ipaddress=10.0.0.157

14、设置对方服务 ip 的掩码地址及广播地址

redhat-config-cluster-cmd --service=httpd \

--service_ipaddress=10.0.0.157 \

--netmask=255.0.0.0 \
------------------------------------------------------------------------------------------------------------ 20
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

--broadcast=10.0.0.255

15、删除 httpd 服务的 10.0.0.157 的这个 IP 地址

redhat-config-cluster-cmd --service=httpd \

--service_ipaddress=10.0.0.157 \

--del_service_ipaddress

16、列出 httpd 服务的设备

redhat-config-cluster-cmd --service=httpd \

--devices

17、给 httpd 服务添加共享磁盘 sdc1

redhat-config-cluster-cmd --service=httpd \

--add_device \

--name=/dev/sdc1

18、设置共享磁盘的参数

redhat-config-cluster-cmd --service=httpd \

--device=/dev/sdc1 \

--mount \

--mountpoint=/www \

--fstype=ext3 \

--options=rw \

19、启用 10.0.0.155 节点上的 httpd 服务

clusvcadm -e httpd -m 10.0.0.155

20、禁用 10.0.0.155 节点上的 httpd 服务

clusvcadm -d httpd -m 10.0.0.155

21、停止 10.0.0.155 节点上的 httpd 服务

clusvcadm -s httpd -m 10.0.0.155

更多信息请在控制台执行以下命令

#man redhat-config-cluster-cmd

------------------------------------------------------------------------------------------------------------ 21
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

六、对配置好的服务进行简单的测试

1.基本功能的测试

在 win 的机器上 IE 里输入 10.0.0.157,你就可以看到你准备在/www 目录下的测试页

2.故障测试

任意的关闭掉其中一台机器,你就会发现 10.0.0.157 依然可以访问,你用 ssh 工具

去连接这个 IP 地址,就会发现你连接的就是现在正在运行的机器了。

3.手动的去关闭 apache 服务,集群软件依然会将 apache 服务启动起来,也就是说:

此时的服务由集群软件控制,而不是人为去控制了,除非你将 clumanger 服务停掉。

七、附加配置好的/etc/cluster.xml 供大家参考(Redhat 官方警告:勿要手动修改此文件)


<?xml version="1.0"?>
<cluconfig version="3.0">
<clumembd broadcast="yes" interval="750000" loglevel="5" multicast="no"
multicast_ipaddress="" thread="yes" tko_count="20"/>
<cluquorumd loglevel="5" pinginterval="2" tiebreaker_ip=""/>
<clurmtabd loglevel="5" pollinterval="4"/>
<clusvcmgrd loglevel="5"/>
<clulockd loglevel="5"/>
<cluster config_viewnumber="11" key="24bc70bf34ca71f0473ae3ddc34e2fc3"
name="test_cluster"/>
<sharedstate driver="libsharedraw.so" rawprimary="/dev/raw/raw1"
rawshadow="/dev/raw/raw2" type="raw"/>
<members>
<member id="0" name="10.0.0.155" watchdog="yes"/>
<member id="1" name="10.0.0.156" watchdog="yes"/>
</members>
<services>
<service checkinterval="4" failoverdomain="None" id="0" name="httpd"
userscript="/etc/rc.d/init.d/httpd">
<service_ipaddresses>
<service_ipaddress broadcast="10.0.0.255" id="0" ipaddress="10.0.0.157"
netmask="255.0.0.0"/>
</service_ipaddresses>
<device id="0" name="/dev/sdc1" sharename="">
<mount forceunmount="yes" fstype="ext3" mountpoint="/www" options="rw"/>
</device>
</service>
</services>
<failoverdomains/>
</cluconfig>
------------------------------------------------------------------------------------------------------------ 22
转载时请保留作者的个人信息,谢谢
www.Chinaunix.net 七月飞雪 Email:xushli@163.net

七、后记

使用 AS3.0 的集群软件,配置还是相当灵活的,在其官方文档上,就举例说明了如何里

用这个软件来配置 Oracle、MySQL、Samba、NFS、HTTP 等多种服务,我也正在准备去配

置一下 Oracle 的HA服务。

由于本人水平有限,本文里肯定有不少错误,其实有的地方我也是一知半解,有错误的

地方请大家指出,最近无事,我一直在研究集群、负载均衡这方面的东西,下一步就是作研

究一下 lvs 了,对此感兴趣的朋友可以一起来研究研究,Email:xushli@163.net。

在CU里混了两年多了,第一次认真的写篇东西,真是惭愧啊。。。。。。。。

CU 之七月飞雪

2004-8-2

转载时请保留作者的个人信息,谢谢

------------------------------------------------------------------------------------------------------------ 23
转载时请保留作者的个人信息,谢谢

You might also like