LINUX6.3下RHCS的安装文档

时间:2023-03-10 04:47:57
LINUX6.3下RHCS的安装文档

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

[root@host1 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 Aa@123456(密码) power status

[root@host1 ~]# ipmitool -I lan -H 172.16.14.2 -U root -P Aa@123456 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

到这里就配置完了。

我们可以看一下这个集群的状态。

[root@jyapp_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,服务在正常运行。

[root@jyapp_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票。死一个节点,期望值少一票。

最后验证一下切换

[root@jyapp_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: 周文屿78842844@qq.com