opil 发表于 2013-7-15 09:03:48

基于Vmware-ESXi5.1实验RHCS虚拟Fence设备(二)

起       自从上次在ESXI5.1环境下测试完RHEL6.3版本的fence设备后,一直想着将其它版本的fence设备也测了。记得在写上篇博客时查询过红帽官方的fence设备类型兼容列表,上次测试使用的是fence_vmware_soap设备,根据兼容列表,5版本的5.7(含)以上、6版本的6.2(含)以上都可以使用。这次测试的系统版本是RHEL6.0-x64。

承       先来说说环境,基本上跟上次测试一样,同样为了方便只有一个VIP服务,不同的是为避免冲突,主机名与IP地址变了。node1—主机名=robinzs1.site;eth0=192.168.0.3;eth1=192.168.8.30node2—主机名=robinzs2.site;eth0=192.168.0.4;eth1=192.168.8.31eth0为心跳线,eth1为业务线。我在Esxi环境除默认虚拟交换机外,新创建一个虚拟交换机(一个端口组),并把两节点的eth1网卡都桥接到其上,如下图所示:VMkernel端口的IP地址是我架设esxi的vmware-workstation的第二个IP地址,而workstation的网卡是桥接模式,这样一来,两节点都可以上网,并且我用其它物理设备也可以访问测试。其实上次测试我也是这么干的,所以端口组里才会上次测试的两个主机,只不过把这步略过了,这里特此说明。当然,如果只为测试其实只要我本机能访问到就行了,我就是想试试功能,新鲜新鲜,呵呵。为节省资源,我只开了这次要实验的两台主机虚拟机的安装就不说了,基本配置与集群除fence之外的过程略过,同样直奔主题。详细过程可参见上篇博客或我的其它博客。
转       vmware-esxi5.1环境下,RHEL6.0应使用fence_vmware设备,但如果只是用luci从图形界面添加是找不到此设备的
只能在命令行下找到这时我们先将fence 设备跳过,先将其它配置搞好。直接修改配置文件,我想过用像6.3一样用css命令,可意外地发现6.0 版本竟然不支持,哈,不得不说红帽真有意思!至于其它相关命令以后再查,不做为重点,所以直接修改配置文件。
cp /etc/cluster/cluster.conf /etc/cluster/cluster.conf.bak//在任意节点上先备份文件/etc/init.d/rgmanager stop
/etc/init.d/cman stop//先将两台主机的集群服务停止vim /etc/cluster/cluster.conf       //任意节点打开配置文件这时我还是思考了一下,其fence原理应该是差不多的,所以想先参照6.3版本的fence_vmware_soap设备配置一番试试效果。找到<fencedevices>标签,添加以下内容:
1
<fencedevice agent="fence_vmware" ipaddr="192.168.0.10" login="root" name="vm_fence"passwd="robinz712"/>
可以看到,其实跟上次实验时配置文件这块内容差不多。然后再找到节点标签clusternode,添加以下内容:

<fence>
                               <method name="fence_z1">
                                       <device name="vm_fence" port="RHEL6-1"/>
                               </method>
                     </fence>
第二个节点标签添加:

<fence>
                               <method name="fence_z2">
                                       <device name="vm_fence" port="RHEL6-2"/>
                               </method>
                     </fence>


写到这里突然想到还不知道设备的UUID,不知fence_vmware设备需不需要这个参数,正好测试一番。fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o list按完回车后发现这个命令执行不了,信息如下:



fence_vmware_helper returned Please install VI Perl API package to use this tool!
Perl error: Can't locate VMware/VIRuntime.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 1) line 1.
BEGIN failed--compilation aborted at (eval 1) line 1.
Please use '-h' for usage瞅这意思应该是需要安装VI Perl API包才能执行,关于这个包组我在网上查到是vmware的vsphere组件的SDK包,找到一篇英文博客对我很有帮助,地址是:http://blog.wains.be/category/high-availability/这个软件包的名称叫做:VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64,在vmware官网可以下载,支持windows与Linux两种系统,我下载的是x64位的,不过需要在官网注册。在安装软件包之前,需要安装几个依赖的系统软件包:yum install openssl-devel*yum install perl-Compress*yum install perl-XML*yum install perl-Crypt*yum install perl-Class*yum install perl-Nagios*其实不用装这么多,如果安装系统时选择的是桌面版的话,有些已经安装好了,有些没有,因为我是先做后写所以记得不是太清楚,还是都写上去吧:)安装的目地是需要perl的系统软件包做服务支撑。安装完成后将下载的SDK软件包传到虚拟机节点中去,解压缩再安装tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.gz我一般是习惯将第三方软件包放到/home目录下,解压缩之后会发现多了一个名为vmware-vsphere-cli-distrib的目录,先来看看目录内容:有个叫vmware-install.pl的安装文件,执行它./vmware-install.pl这时需要按任键,之查看协议条款啥的。查看完协议后,按y开始配置安装。第一次安装的时候报了个错:这两行的意思是要设置http与ftp的代理路径地址,这里其实不用这么麻烦,我在网上找到一个英文的解决方法,呵呵,又给了我很大帮助。地址:http://exchange.nagios.org/directory/Addons/Configuration/Configuration-Wizards/VMware-ESX--2F-vSphere--2F-vCenter-Monitoring-Wizard/details根据文档介绍,只要敲两行命令就可以搞定export http_proxy=export ftp_proxy=这样就行了,不必要真的能用只要将地址像征性设置一下就行了,哈哈。再次执行安装,开始以为很顺利,可又遇到问题了,哈哈哈。这个报错的意思是无法在系统安装Perl模块,必须要手动安装。参照上边的地址的解决方法,在解压缩目录内,进行编译安装cd /home/vmware-vsphere-cli-distribperl Makefile.PL//Makefile.PL是目录内解压缩自带的文件,这条命令的意思是查看Makefile.PL内脚本的输出结果make install//编译安装这一步做完之后,vmware-vsphere-cli-distrib目录多出部分文件注:上述目录步骤两节点都要做!vmware-vsphere的SDK软件包安装成功,再次执行fence命令行fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o list结果如下:列出了Esxi环境下的所有虚拟主机,看来fence_vmware设备的list动作不是像fence_vmware_soap相同动作结果那样输出UUID,那是不是说在配置文件里,UUID就不用写了呢?先用命令行测试完,再用集群测试看看结果就能知道了。fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o status//查看状态
Status: ON再将-n参数值换成RHEL6-2,看看结果是否成上述相同fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o reboot//重启测试Success: Rebooted在vSphere Client界面下查看命令行效果:虚拟机重启,测试成功,再将RHEL6-2也如法炮制一番,没什么问题可以开始集群测试了。配置文件照刚开始那样修改直接可以使用,先把两节点的cman与rgmanger服务开启注:这里要特别说明一点,上次和本次是配置fence设备都是创建一个fence设备,在与节点关联时将port参数写上去。其实也可以创建两个fence 设备,将port参数都写在fence设备标签内,在与节点关联时就简单了,参数只要写对应的fence设备名称就行。我已经试过可以成功,有兴趣的兄弟可以试试:)可以在任意节点上开启luci服务,查看手动添加的fence设备上图就是 fence_vmare的设备参数,很奇怪的是为什么图形界面本身无法添加,需要手动添加,不会是故意的吧,呵呵。现在来运行clustat查看集群状态接着ping测试VIP,和本地测试ping都没有问题,不再详述。因服务在节点1上,所以当节点1的心跳网卡测试ifdown eth0在节点2上查看集群状态查看vsphere-client环境上图表示fence动作成功!再当节点2的心跳线测试,这里不详述了,应该没问题:)这里要提示一句:在当网卡之前可以用fence_node robinzs1.site来测试fence是否成功,cluster真正去做fence动作的命令其实是fence_node~!最后一项测试,将两个节点的cman与rgmanager服务都设置为开机自启,当然应该不用设置已经是自启了,要确认清楚,然后关机。关机后,先开启任意节点
看看是否能将另一节点自动开机
上图所示,在节点1开机1分多钟的时候,节点2自动开启了。最后一项测试成功~!
结       这次测试是用的RHEL6.0系统,根据fence兼容列表推断6.1应与6.0的配置方法差不多,其实无论是哪个版本,原理上无非是将虚拟平台当做fence设备。只不过没找到命令行css,还有图形界面少了vmware的fence设备感觉不爽,命令行有可能是我没研究到,但luci少设置应该是个bug,估计6.1应该会解决这个问题。下一个测试版本也是这ESXI平台fence设备最后一个测试版本,我会在RHEL5.7以下版本中找一个做为测试对象。下个周末开始~!

jxp2002 发表于 2013-7-20 22:09:02

长得真有创意,活得真有勇气!

冰恋 发表于 2013-7-27 02:09:57

走,MM,咱们化蝶去……

帝王 发表于 2013-8-1 12:53:42

微机原理闹危机,随机过程随机过,实变函数学十遍,汇编语言不会编!

qianqianling 发表于 2013-8-7 21:18:48

我妈常说,我们家要是没有电话就不会这么穷。

chj0771 发表于 2013-8-13 21:46:18

谢谢楼主,共同发展

woyoudn 发表于 2013-8-18 05:48:25

长大了娶唐僧做老公,能玩就玩一玩,不能玩就把他吃掉。
页: [1]
查看完整版本: 基于Vmware-ESXi5.1实验RHCS虚拟Fence设备(二)