-
基于
VMware
搭建
RHCS
故障转移实验
(Xray
整理
)
1
简介
1.1
实验环境
< br>在
PC
机上使用
VMware
Workstation
搭建两台虚拟服务器,安装
Red
Hat
Enterprise
Linux
(版本
6.5
)
32
位,每台虚拟机设置
1
processors
,
3
core
s
,
1G
内存,
2
张网卡(备
用)
,
1
个
40G
的本地硬盘,一个
20G
的
share
< br>盘。
1.2
实验任务
使用基于
Web
管理方式的
Conga
工具创建、
管理两节点
Cluster
,
然后以一个简单的
web
服务
(httpd)
作切换测试。
Httpd
p>
成功后,测试
HA_LVM.
。
1.3
基本概念
?
Conga:
分为
< br>Luci(
管理工具
,Server
端
)
及
Ricci(
用于接收和传递
Luci
指令的服务程
序
,Agent)
两部分
,
其中
Luci
安装在任一管理工作站上
,Ricci
安装在被管理的
Cluster
节点
上。
?
脑裂
(Head-split)
:
p>
当前激活的
Cluster
节点因为处理
器忙或者其他原因暂时停止响应时
,
其他节点可能误认为该节点
”已死”
,
从而夺取共享磁盘的访问权
,
此时极有可能假死节
点重新对共享文件系统产生读写操作
p>
,
从而导致共享磁盘文件系统损坏。
?
Fence
:
为了防止”脑裂”现象的产生
,
使
用
fence
设备对”故障”节点进行”屏蔽”措施
,
如重启该设备
,
从而尝
试恢复其节点功能
.
Fence
设
备可以是交换机
,
或者
IPMI
等
.
这里
我们采用
PE2900
的
BMC
充当
Fence
设备。
?
Cman:
cluster manager,Cluster
组件之一
,
用于
cluster
的配置
,
控制
,
查询
,
仲裁计算等
。
?
Rgmanager:
Resource group man
ager,Cluster
组件之一
,
提供用户定义的资源组切换服务。
?
Failover domain:
cluster
环境中服务
failover
的区域。
1.4
原理介绍
?
cman
集群管理器:
cman
是一个基于内核的对称通用集群管理器。
它由两部分组成:连接管理器
(cnxman)
,用于处理成员
、消息、投票数、事件通知和过渡;服务管理器
(SM)
,用于
处理那些需要通
过各种方式进行集群管理的应用及外部系统。
c
man
是
RHCS
中最核心的服务,<
/p>
可通过系统中的
serivce
命令进行
启
/
停操作;
DLM
< br>、
GFS
、
CLVM
及
Fence
都依赖于
c
man
群集管理器
。
?
rgmanager
资料组管理器:
rgmanager(Resource
Group
Manager)
基于<
/p>
cman
并使用
DLM
< br>动态锁管理
机制。与
cman
一
样,
rgmanager
也是
RHCS
中的一个核心服务,可通过系统中的
serivce
命令进行启
/
停操作;
r
gmanager
管理并为集群中的
Service(
服务
)
和
Resour
ces(
资源
)
提供
< br>Failover
错误切换功能。
?
Service
< br>(
服务
)
:每个服务都被指定存
在于一个
Failover
Domain
中,并与多个
Resources(
资源
< br>)
关联。
每个服务可以理解为实际操作中的一个应用,<
/p>
如
Web
服务器、
Java
中间件、
数据库、
文件共享
系统、
邮件系统等。
这些应用在运行时不但对应用程序本身有要
求
(
如某个运行指令或多个运行脚本的组合
)
,
还要提供对诸如虚拟
IP
p>
、文件系统等资源的支持。
?
Failover
Domain
(
错误切换域
)
:
每个
Failover Doma
in
都与两个或两个以上的
Node(
服务器节点
)
进行绑定,
Failov
er Domain
指定了集群中某个
Service
运行时的范围,
也就是指定此
Service<
/p>
将会由哪
些服务器提供
Failover
错误切换功能。
每个
Node
都允许与多个
Failover Domain
进行绑定,也就是说
每个
Node
都可
以为多个
Service
服务,因此可以实现
< br>
主动
/
主动
(
双活动
)
方式的集群配置
。
?
Resources(
资源
):Resource
s
指的是组成一个应用所需的各种组件,通常包括:应用程序、虚拟
IP
、
文件系统。资源与
Serv
ice
组合时,往往还会体现出一定的层次关系,例如:通常系统都要求确认虚
拟
IP
及文件系统都已经正常连接及挂载后,才
可以运行某个应用程序,这个顺序一旦调转,就会使
应用程序运行出错。
?
Fence
机制
:
在
RHCS
集群运行时,
为了避免因出现不可预知的情况而造成的
脑裂
现象
(
如:
心跳线断
连,此时两台服务
器都无法找到对方,无法向对方发出操作指令,都各自认为自己是主节点;又或者
主服务
器系统崩溃,系统能接收到备用服务器的操作指令,但无法返回运行情况的确认信号,导致备
用服务器无法获知系统资源的使用情况
)
,
系统要求通过
Fence
机制来保障系统切换时的
p>
I/O
使用安全。
如上所述,
Fence
主要就是通过服务器或存储本身的硬件
管理接口,
又或者是外部电源管理设备,
来对
< br>服务器或存储发起直接的硬件管理指令,
控制服务器或存储链路的开关
。
因此,
Fence
机制
也被称为
屏
障
技术
。
当
p>
脑裂
发生时彻底断开问题服务器的所有
p>
I/O
连接,
保证问题服务器不能对集群中
的
I/O
资源
(
共
享的文件系统资源
)
进行任何操作
,严格保证集群环境中企业核心数据的完整性。
2
安装配置
HA
2.1
创建虚拟机
在
PC
机上安装
VMware
Workstation8.0
,
并创建创建两台虚拟机,
p>
按照实验环境要求设
置,
2.2
创建共享磁盘
用
vmware-vdiskmanager
创建
shareDisk
并且磁盘适配器的类型是
lsi contoller
的
20GB
大小的硬盘
。
打开
MS
DOS,
进入,进入
VM
安装目录,输
入下面命令:
vmware-vdiskmanager
-c -t 0 -s 20GB -a lsilogic D:
vmware-
vdiskmanager
参考:
-c
创建虚拟磁盘。你必须用
-a,
-s
和
-t
并指定选项参数,然后你需要指定所要创建的
虚拟磁盘文件的文件名。
-a [ ide | buslogic | lsilogic ]
指定磁盘适配器的类型。
你在创建新的虚拟磁盘时必须指定
p>
其类型。选择以下类型之一:
ide
——
IDE
接口适配器
buslogic
——
BusLogic
SCSI
接口适配器
lsilogic
——
LSI
Logic SCSI
接口适配器
-s
[GB|MB]
指定虚拟磁盘
的大小。确定大小用
GB
或
MB
做单位。你必须在创建磁盘
时指定其大小。
尽
管你必须指定虚拟磁盘的大小,
但当你增长它的大小时,
你不能
用
-s
这个
选项。可以指定的磁盘大小
规定:
IDE
和
SCSI
适配器都为最小
100MB
,最大
< br>950GB
。
-t
[0|1|2|3]
你在创建一个新的虚拟磁盘或者重新配
置一个虚拟磁盘时必须指定虚拟磁
盘的类型。指定以下类型之一:
0
——
创建一个包含在单一虚拟文件中的可增长虚拟磁盘
1
——
创
建一个被分割为每个文件
2GB
大小的可增长虚拟磁盘
2
——
创建一个包含在单一虚拟文件中的预分配虚拟磁盘
3
——
创
建一个被分割为每个文件
2GB
大小的预分配虚拟磁盘
2.3
配置共享磁盘
分别到两台虚拟机的目录,打开
Red Hat
Linux
和
Red Hat
Linux ,
在最后空白处添加这几段内容
t =
lDev =
Bus =
这段是打开
scsi1
上的使用,并且设置成
virtual, controller
设置成
lsilogic
然后添加
scsi1:t =
scsi1: =
scsi1:me =
D:
g =
cheMaxSize =
cheMaxReadAheadSize =
cheMinReadAheadSize =
chePageSize =
yncedWrites =
设置完后,保存,然后重新启动
VM
,打开
VM
的配置,可以看到多了一个
盘
2.4
安装
linux
系统
将下载好的
linux
安装
ios
加到虚拟机的光驱中,然后启动
2.5
创建共享盘的
lv
安装完系统后,<
/p>
在一台机上使用
fdisk
命令和标准<
/p>
LVM
和文件系统命令生成逻辑卷和文件系统。
?
fdisk
–
l
查看分区
?
使用
fdisk /dev/dsb
命
令创建
LVM
分区
?
在
sdb
1
上创建卷组和逻辑卷,并创建
ext4
的文件系统
?
?
重启两台服务器后,通过
fdisk
-
l
可以看到文件系统。
创建挂载目录并挂载(节点
2
上也要创建目录)<
/p>
mkdir /webdb
或者挂载到
/var/www/html
#mount /dev/share_vg/ha_lv /webdb
#df
–
h
//
挂载文件系统
好像可以不用设置自动挂载,由
HA
自动挂载
#vi
/etc/fstab
/dev/crmsapdg/lv_sap /usr/sap ext4
defaults 1 1
2.6
创建集群存储
GFS2
?
先手动启动
cman
和
clvmd
命令,以便监
控集群卷的中存储设备的状态:
?
分别在
node1,node2
启动<
/p>
CLVM
的集成
cluster
锁服务
#lvmconf
--enable-cluster
#chkconfig
clvmd on
# service cman
start
# service clvmd
start
# service rgmanager
start
?
关闭
selinux
修改
/etc/selinux/config
文件
将
SE
LINUX=enforcing
改为
SELINUX=dis
abled
重启机器
不关闭
selinux
,在
node2
挂载
gfs2
时会出错
以下操作在节点
1
< br>端执行:
?
先用
fdisk
–
< br>l
查看,发现
sdb
分为
sb1(10G)
,在上面创建
sdb2
?
在
p>
/dev/sdb
上创建
sdb2
?
创建物理卷和卷组和逻辑卷:
#
pvcreate /dev/sdb2
PV
创建完后,重
启,在另一台上
pvs
,看看是否同步,不同步关闭电源重启<
/p>
# pvscan
#
vgcreate data_vg /dev/sdb2
# lvcreate
-L 5G -n db_lv data_vg
如果提示错误如下:
Error
locking on node node2: Volume group for uuid not
found:
QkM2JYKg5EfFuFL6LzJsg7oAfK4zVrky
tMVzdziWDmVhBGggTsbr47W1HDEu8FdB
Failed
to activate new LV.
出现以上提示,需要在
node2
上创建物理卷
node2
节点上:
# pvcreate /dev/sdb1
创建后需要重启
< br>然后回到
node1
创建
lv
?
在新
建的逻辑卷上创建
gfs2
文件系统:
# 2 -j 2 -p lock_dlm -t testweb:data
/dev/data_vg/db_lv
如果
node2
找不到,在
node2
上也执行。
参数说明:
??
-p
:用来指定
gfs
的锁机制,一般情况下会选择
lock_dlm
,如果不加此参数,当在两个
系统中同时挂载此分区时就会像
EXT3
格式一样,两个系统的信息不能同步。
??
-j
:指定
journal
个数
(
可加入节点数
)
,一般情况下应留有冗余,否则后期还得再调整;
??
查看
journa
ls
:
# gfs2_tool journals
/data3
??
增加
journals
:
# gfs2_jadd
-j1 /data3
##
增加一个
journals
p>
??
-t
:指定
D
LM
锁所在的表名称,
mycluster
就是
RHCS
集群的名称,必须与
文件中
Cluster
标签的
name
值相同。
格
式为
ClusterName:FS_Path_Name
<
/p>
??
ClusterName
:应与前面
中指定的集群名称相同;
??
FS_Path_Name
:这个块设备
p>
mount
的路径;
??
最后一个参数是指定逻辑卷的详细路径;
?
创建目录挂载文件系统
#
mkdir /maildb
# mount -t gfs2
/dev/data_vg/db_lv
/maildb
–
v
?
<
/p>
将刚刚创建的逻辑卷加入到
/etc/fstab
文件中,使其开机自动映射:
# echo
?
启动<
/p>
gfs2
服务:
# service gfs2 start
?
节点
2<
/p>
端执行:
操作前可以先执行
pvs,lvs
命令,看看是否能够正常显示节点
1
端创建的物理卷和逻辑卷信
息,如果看不到
< br>(
先尝试
lvscan)
,则说
明并未使用共享存储,或者配置有异常,仍然需要排
查,需要等问题解决后,再执行下列
的命令。
# mkdir
/maildb
# echo
# service gfs2 start
?
执行
#
clustat
可以查询各成员节点的状态。
[root@hdnode5 ~]# clustat