起
自从上次在ESXI5.1环境下测试完RHEL6.3版本的fence设备后,一直想着将其它版本的fence设备也测了。记得在写上篇博客时查询过红帽官方的fence设备类型兼容列表,上次测试使用的是fence_vmware_soap设备,根据兼容列表,5版本的5.7(含)以上、6版本的6.2(含)以上都可以使用。这次测试的系统版本是RHEL6.0-x64。(5版本5.7以下测试结果请见本文结尾)
承
先来说说环境,基本上跟上次测试一样,同样为了方便只有一个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>标签,添加以下内容:
<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-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以下版本中找一个做为测试对象。
本来想测试RHEL5.7以下版本单开一篇博,可测下来发现与本篇所测内容基本相同,所以把大慨情况加以说明。
(1)我测试的版本是RHEL5.6,因为以前测试的系统都是64位,所以这次用的是32位系统;
使用的fence设备同样是fence_vmware,而且同样要安装VMware-vSphere-Perl-SDK包;
不过这里要说明是,虽然vmware官网同样提供32位的包,但同样要安装64的包。
(2)安装方法稍有不同:先把所需系统软件包装好;
在软年包解压缩目录下直接运行perl Makefile.PL命令,再运行make install编译安装即可;
如果运行./vmware-install.pl命令,我等了一个小时没有执行完,后来直接编译安装就可以用。这么看好像红帽6版本也可以这么干,呵呵,有机会再试吧。安装好后可以运行行fence_vmware命令测试能否执行。
结
到此,根据红帽官网提供的兼容列表,基于ESXI5.1环境的红帽基本所有版本的fence设备都测试完了,没测试的版本见兼容列表就可以了。下一步是测试xen-server环境的fence设备与HA搭建,与虚拟环境下的数据库集群。至于数据库是哪个产品,还在考虑当中,有可能是oracle。好,小歇一会继续开始,喝茶去了~:)