LINUX6.3下RHCS的安装及集群的配置文档
环境:
目前要给华为E6000系列的两个刀片安装RHCS,每一块刀片有两个业务网口和一个管理网口,但是看不见不物理网卡,而是连接到刀片自身携带的一个交换机板卡。两台刀片主要是实现服务器地址的漂移,即运行服务的机器出现故障,服务可以顺利切换到另外一台,当然也可以添加其他资源(比如apache,脚本)实现集群功能,不过内容都相同,只是在配置界面的时候添加的资源不一样。
刀片1,2的hosts文件:
172.16.32.1 host1
172.16.32.2 host2
172.16.14.21 hosthb1
172.16.14.22 hosthb2
172.16.14.1 host1_ipmi
172.16.14.2 host2_ipmi
172.16.32.15 service
简单说明一下地址含义,第一组为业务地址,配置在网卡eth0上;第二组为心跳地址,配置在网卡eth1上,这个地址与QDISK有关;第三组为每一块刀片的管理地址,配置在BMC芯片上,这个地址是与fence设备有关的,最后一个地址为服务地址,即在集群中真正提供服务的地址。
解释一下RHCS里的几个重点的关键词,弄明白这些个东西是什么和工作原理很重要。
Fence device:即隔离设备。一个集群中有两台机器,其中占有资源提供服务,当这台机器出现问题,另一台机器就会接管资源与服务,可是如果出问题的设备如果是假死,那么他可能仍然占用着资源(共享存储之类的),这样就可能会造成两台机器同时对存储进行读写而产生错误,学名脑裂现象。这时候就需要fence设备了,当一台设备出现问题,则通过BMC芯片去控制它的电源使它断电、重启,这样资源就会被释放了。隔离设备可以理解为BMC芯片,BMC芯片可以控制服务器电源的开关,重启。之前我们说过每一个刀片都有一个BMC口(管理口),但这个口在操作系统层面上是看不到,不像其他网卡用ifconfig能看到eth0,eth1的详细信息。想要管理这个口可以安装操作系统自带的ipmi相关程序包
freeipmi-0.7.16-3.el6.i686.rpm
freeipmi-0.7.16-3.el6.x86_64.rpm
freeipmi-bmc-watchdog-0.7.16-3.el6.x86_64.rpm
freeipmi-ipmidetectd-0.7.16-3.el6.x86_64.rpm
ipmitool-1.8.11-13.el6.x86_64.rpm
OpenIPMI-2.0.16-12.el6.x86_64.rpm
OpenIPMI-libs-2.0.16-12.el6.x86_64.rpm
64位机器装64位的就好,关于IPMI给的接口的具体用法后面再介绍。程序包安装完了以后就可以通过IPMI这个软件包与BMC芯片联系起来。另外BMC网口对应一个管理地址,这个地址是需要进入到刀片BIOS里的IPMI相关选项里设置的,要设置它的用户名、密码和IP地址,这些信息在配置集群的时候会用到。我们把BMC的地址和eth1的地址设在同一网段,这样系统就可以与BMC芯片进行通讯了,进而控制服务器的启停。
QDISK:俗称仲裁盘,通过心跳地址用来判断集群里的设备状态是否正常。一般1G大小的共享存储即可。
Failover Domain:失败域,即节点切换策略
软件安装之前先把ip地址都配置好,包括修改bios里面的ipmi配置。
RHCS软件安装:
安装RHCS需要用到系统自带光盘中的一些软件包,具体如下:
HighAvailability LoadBalancer Packages ResilientStorage ScalableFileSystem Server
先将这些包(文件夹)拷贝至/mnt目录下,也可以不拷贝,把YUM源设置好就可以了。
Yum源的设置
# vi /etc/yum.repos.d/rhel-source.repo
[[email protected] yum.repos.d]# cat rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///mnt/Packages
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-source-beta]
name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source
baseurl=file:///mnt/Packages
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[Server]
name=Server
baseurl=file:///mnt/Server
enabled=1
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=file:///mnt/HighAvailability
enabled=1
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=file:///mnt/LoadBalancer
enabled=1
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=file:///mnt/ScalableFileSystem
enabled=1
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=file:///mnt/ResilientStorage
enabled=1
gpgcheck=0
保证每个软件包的baseurl路径正确即可。
安装软件:
# yum install cluster-glue resource-agents pacemaker
选Y
# yum install luci ricci cman openais rgmanager lvm2-cluster gfs2-utils
选Y
启动HA服务:
# service luci start
# service ricci start
# service rgmanager start
# service cman start
改变服务的运行级别:
cman 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rgmanager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
luci 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ricci 0:off 1:off 2:on 3:on 4:on 5:on 6:off
修改ricci用户的密码
Passwd ricci,改为root用户密码即可。
创建QDISK盘
用法:mkqdisk -L | -f <label> | -c <device> -l <label>
mkqdisk -c /dev/sdb -l qdisk
这里把一块1G的/dev/qdisk配置成了一块叫qdisk的仲裁盘
Ping一下心跳和BMC口的地址,应该都OK。
看一下host1能否管理host2电源模块
ipmitool -I lan -H 172.16.14.2(第二台机器的BMC口地址) -U root(用户名) -P [email protected](密码) power status
[[email protected] ~]# ipmitool -I lan -H 172.16.14.2 -U root -P [email protected] power status
Chassis Power is on
集群的创建
在确保主节点的luci,ricci服务起来之后,进入https://172.16.32.1:8084集群配置页面。
用你设置的ricci密码登陆以后开始创建集群:
加节点:
这里的jyapp_01hb,jyapp_02hb就是我们hosthb1,hosthb2。
配置基本默认,没什么好说的。
Fence Devices的添加:
选择IPMI LAN,当然各厂家的FENCE设备不一样根据情况配置。
输入之前配置好的用户名,密码,IP地址
两台设备两个fence 设备。
创建完成之后跟节点关联。
先添加fence method,方法名随便,之后关联起来创建的fence实例。一一对应即可。
FAILOVER DOMAIN配置:
失败域配置,Prioritized即有优先级,Restricetd限定运行服务节点的机器范围,no fackback 不回切,当故障机器恢复可用以后,服务不回切。优先级的值越低,优先级别越高,0不可用。
RESOURCE添加:
资源添加,这里我们只添加一个服务器地址(漂移地址)
Note:后面我们又添加了一个脚本资源,脚本的作用是启动一个中间件然后启动应用,而且必须有先后顺序,这个顺序的实现在脚本中可以实现。而脚本的启用和服务地址的启动也有先后顺序,必须是先让服务地址启用之后应用才可以启动。所以在添加这两个资源的时候就有点不一样了,需要先添加服务地址资源,然后添加服务资源的child resource,先有parent才有child.这样就有先后顺序了。如果在顺序上没有要求,增加两个同级的资源即可。脚本内容及解释见文档末尾。
SERVICE GROUP添加:
服务配置,选择好我们的失败域,自动开始打勾,run exclusive,服务只会在“没有运行其他服务的节点”上运行,可以不选;恢复策略选择重新定位,即切换到另一个节点。
默认的不说了,需要设置的说一下,多播地址最好设置一个,不设置也默认的,但是一个业务系统中如果有多套RHCS,多播地址就要不一样了。
QDISK,用我们设置的label来识别,工作机制是每2秒ping一下网关,ping通得1分,不通不得分,ping 10次,最小得分为1分,则不需要切换。也就是说连续10次ping这个网关只要其中有一次是通的则OK。
ping -c1 -t1 172.16.14.254
到这里就配置完了。
我们可以看一下这个集群的状态。
[[email protected]_01 ~]# clustat
Cluster Status for jyapp_cluster @ Tue Dec 24 14:25:50 2013
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
jyapp_01hb 1 Online, Local, rgmanager
jyapp_02hb 2 Online, rgmanager
/dev/block/8:16 0 Online, Quorum Disk
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:jysg jyapp_01hb started
都ONLINE,服务在正常运行。
[[email protected]_01 ~]# cman_tool status
Version: 6.2.0
Config Version: 19
Cluster Name: jyapp_cluster
Cluster Id: 469
Cluster Member: Yes
Cluster Generation: 28
Membership state: Cluster-Member
Nodes: 2
Expected votes: 3
Quorum device votes: 1
Total votes: 3
Node votes: 1
Quorum: 2
Active subsystems: 11
Flags:
Ports Bound: 0 11 177 178
Node name: jyapp_01hb
Node ID: 1
Multicast addresses: 239.192.14.111
Node addresses: 172.16.14.21
用cman_tool status看到个票数都正常,每个节点一票,QDISK一票,总共3票,期望值是3票。死一个节点,期望值少一票。
最后验证一下切换
[[email protected]_01 ~]# clusvcadm -r jysg
Trying to relocate service:jysg...Success
service:jysg is now running on jyapp_02hb
节点手动切换成功。经过测试,网卡故障,断电都能正常切换。
脚本:
#!/bin/bash
start() {
su - tuxedo -c "tmboot -y"
RETVAL=$?
su - trade -c "cd /home/trade/app/bin && tmboot -y"
RETVAL=$?
return $RETVAL
}
stop() {
su - trade -c "cd /home/trade/app/bin && tmshutdown -y"
RETVAL=$?
su - tuxedo -c "tmshutdown -y"
RETVAL=$?
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
RETVAL=0
;;
restart)
stop
start
;;
*)
echo $"Usage: tuxedo.sh {start|stop|restart}"
RETVAL=2
esac
exit $RETVAL
该脚本先是定义了两个函数,启动应用,停止应用。每次执行都会有一个返回值。主程序执行的时候就会根据返回值的不同值执行不同的操作,启动,停止,目前状态,重新加载。
from: 周文屿[email protected]