起 自从上次在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.30 node2—主机名=robinzs2.site;eth0=192.168.0.4;eth1=192.168.8.31 eth0为心跳线,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>标签,添加以下内容:
[backcolor=white !important][Shell] 纯文本查看 复制代码 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 按完回车后发现这个命令执行不了,信息如下:
[Shell] 纯文本查看 复制代码
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-distrib perl 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以下版本中找一个做为测试对象。下个周末开始~!
|