原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://robinzs.blog.51cto.com/2834668/1248812
起
记得上回实验过RHCS6.3在KVM虚拟机下的三节点命令搭建HA,从那时起一直想将虚拟机如何配置fence设备整理出一份文档。先来说说我已经知道的,从上次的实验可以得出结论kvm虚拟环境支持RHCS的fence设备是fence_virtsh。但KVM单机版应用并不广泛,据说RHEV在中国南方地区应用较广,从搭建角度来说要比Vmware的ESXi复杂很多,而且至少需要一台物理主机一台虚拟主机才能实现,所以这次先ESXi为虚拟环境。
承
现阶段虚拟化的主流与大玩家之一是Vmware的vcenter-server,可惜同样的,物理设备提供不了全套的实验环境,不过单以RHCS的的实验而言,只要能装一台ESXi 也就够了,我的实验版本是5.1。由于RHCS的fence设备类型对不同RHEL版本兼容性不同,而RHEL业内较常用版本是5与6,所以我先从RHEL6.3开始测试,集群服务尽量简单,以测试fence设备为主。环境规划如下:
无论实验的RHEL版本怎么变,上述这个拓扩图是不变的。没办法,为个实验花几千大元买个物理机有些不值,花钱容易挣钱难那!闲话少说,接下为是具体规划内容:
ESXi地址:192.168.0.10
vsphere-client连接界面:
虚拟主机名:s1.example.com s1;s2.example.com s2
虚拟机地址:心跳eth0―192.168.0.1,192.168.0.2;业务eth1―192.168.8.20,192.168.8.21
集群服务:为简单从事,服务就一个VIP―192.168.8.50
转
第一个测试系统RHEL6.3-64位
安装系统就不用说了,是个人就行。
安装完系统后要做一系列的基本设置,这里也不再繁述(具体见上篇博客)。直奔主题HA设置,这次我是用LUCI做的,将做完的结果记录下来。首先添加节点:
添加fence设备:
fence设备类型选择VMware_fence_soap,是RHEL部分系统的ESXi虚拟fence设备。做到这里我查了红帽官网的fence设备对不同RHEL版本的兼容列表
可以看到,对RHEL5版本中5.7和以上版本都支持;6版本支持6.2及以上版本。其实这个兼容列表还有很多内容,包括了所有的fence设备,还有对RHEV的兼容情况都有。地址是:https://access.redhat.com/site/articles/28601
名称随便写,我写的是esxi_fence,这么写明白一些;
IP地址填ESXi平台的IP地址;
用户名与密码填写ESXi的帐号,我直接写的是root用户。
设备添加完成,与节点关联,以s1为例:
节点的fence设备名称是fence_s1
在关联的时候还需要填写port与uuid两项,port指对ESXi而言的虚拟机名称,uudi是指虚拟机在ESXi的设备id,这两者在虚拟平台是唯一的。
port好说
两个虚拟机主机分别叫RHEL6.3-1与RHEL6.3-2
uuid如何来找,说到这里不得不提一下ESXi的底层是什么,其实就是个Linux,而虚拟机对其而言就是设备,可以通过SSH登陆进去(之前要将ESXi的SSH连接开启)
上图为ESXi5.1的根目录文件,虚拟机设备文件在/vmfs/volumes/datastore1下,我一共创建两个虚拟机,所以有两个目录,目录名也就是虚拟主机名称。以RHEL6.3-1为例,查看该目录下文件:
用vi打开RHEL6.3-1.vmx,找到uuid关键字:
uuid.location = "56 4d 89 20 d6 4f 44 7c-1e 04 19 ad 4b 5a 82 81",这就是它的uuid号。不过直接填上去是不行的,uuid有一定的格式。应该填写什么,回到LUCI界面,刚才只不过是扩充部分内容,呵呵
这时打开任意节点的命令行界面,运行命令
fence_vmware_soap -a 192.168.0.10 -z -l root -p robinz712 -o list
这行命令行的效果是列出ESXi平台的所有集群结点的UUID
直接根据对应的虚拟机名称将uuid填写上去即可。
具体fence_vmware_soap设备都有什么参数,附上红帽官方文档的说明
接下来将ssl选中,fence设备与节点就关联完了。
接下来是故障域、资源、服务,不做为重点就简单一代而过了
故障域设置
开始时说过,为简单从事,只有一个服务,就是VIP
好,截图到这里算是设置完了,集群也启动了。
在集群测试之前,先用命令行测试esxi的虚拟fence功能是否正常,以s1节点为例
fence_vmware_soap -a 192.168.0.10 -z -l root -p robinz712 -n RHEL6.3-1 -o status
查看虚拟fence设备状态
Status: ON
出现上述结果代表虚拟fence设备能够使用,也可以使用上述命令重启节点,将-o参数改为reboot即可,而且我也做过测试能够成功,这个功能在接着测试集群的时候详加说明。
down心跳网卡测试集群,现在服务在s1节点上,我现在当s1的eth0网卡
ifdown eth0
这时将视角转到ESXi的平台界面的底部,查看操作记录
可以看到ESXi是根据设备uuid号查找设备并进行虚拟fence动作的
再来看看集群状态
这时s1重启完成,而s2也已经接管服务。同样的,down业务网卡迁移服务正常,过程不再繁述。
最后一项测试是两个虚拟主机都关机的情况下,先开启s1节点,到集群服务启动后,会自动远程开启s2节点
上图所示测试成功!
结
到此,ESXi5.1平台下的RHEL6.3版本的集群fence设备测试完成,根据红帽官方的兼容列表6.2版本与5版本的5.7以上系统都可以使用fence_vmware_soap设备,故这几个版本不再做为主要测试对象。下一篇开始实验6.0与5.6版本fence设备配置。
另
附上cluster.conf 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?
xml
version
=
"1.0"
?>
<
cluster
config_version
=
"9"
name
=
"esxi_cluster"
>
<
clusternodes
>
<
clusternode
name
=
"s1.example.com"
nodeid
=
"1"
>
<
fence
>
<
method
name
=
"fence_s1"
>
<
device
name
=
"esxi_fence"
port
=
"RHEL6.3-1"
ssl
=
"on"
uuid
=
"564d8920-d64f-447c-1e04-19ad4b5a8281"
/>
</
method
>
</
fence
>
</
clusternode
>
<
clusternode
name
=
"s2.example.com"
nodeid
=
"2"
>
<
fence
>
<
method
name
=
"fence_s2"
>
<
device
name
=
"esxi_fence"
port
=
"RHEL6.3-2"
ssl
=
"on"
uuid
=
"564df200-c159-b022-416e-3c9fba63fe9b"
/>
</
method
>
</
fence
>
</
clusternode
>
</
clusternodes
>
<
cman
expected_votes
=
"1"
two_node
=
"1"
/>
<
fencedevices
>
<
fencedevice
agent
=
"fence_vmware_soap"
ipaddr
=
"192.168.0.10"
login
=
"root"
name
=
"esxi_fence"
passwd
=
"robinz712"
/>
</
fencedevices
>
<
rm
>
<
resources
>
<
ip
address
=
"192.168.8.50"
/>
</
resources
>
<
failoverdomains
>
<
failoverdomain
name
=
"esxi_domain"
nofailback
=
"1"
ordered
=
"1"
restricted
=
"1"
>
<
failoverdomainnode
name
=
"s1.example.com"
priority
=
"1"
/>
<
failoverdomainnode
name
=
"s2.example.com"
priority
=
"2"
/>
</
failoverdomain
>
</
failoverdomains
>
<
service
domain
=
"esxi_domain"
exclusive
=
"1"
name
=
"esxi_service"
recovery
=
"relocate"
>
<
ip
ref
=
"192.168.8.50"
/>
</
service
>
</
rm
>
</
cluster
>
|