起css
自从上次在ESXI5.1环境下测试完RHEL6.3版本的fence设备后,一直想着将其它版本的fence设备也测了。记得在写上篇博客时查询过红帽官方的fence设备类型兼容列表,上次测试使用的是fence_vmware_soap设备,根据兼容列表,5版本的5.7(含)以上、6版本的6.2(含)以上均可以使用。此次测试的系统版本是RHEL6.0-x64。(5版本5.7如下测试结果请见本文结尾)
node
承linux
先来讲说环境,基本上跟上次测试同样,一样为了方便只有一个VIP服务,不一样的是为避免冲突,主机名与IP地址变了。ios
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.31vim
eth0为心跳线,eth1为业务线。我在Esxi环境除默认虚拟交换机外,新建立一个虚拟交换机(一个端口组),并把两节点的eth1网卡都桥接到其上,以下图所示:windows
VMkernel端口的IP地址是我架设esxi的vmware-workstation的第二个IP地址,而workstation的网卡是桥接模式,这样一来,两节点均可以上网,而且我用其它物理设备也能够访问测试。其实上次测试我也是这么干的,因此端口组里才会上次测试的两个主机,只不过把这步略过了,这里特此说明。固然,若是只为测试其实只要我本机能访问到就好了,我就是想试试功能,新鲜新鲜,呵呵。oracle
为节省资源,我只开了此次要实验的两台主机ide
虚拟机的安装就不说了,基本配置与集群除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的代理路径地址,这里其实不用这么麻烦,我在网上找到一个英文的解决方法,呵呵,又给了我很大帮助。
根据文档介绍,只要敲两行命令就能够搞定
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。好,小歇一会继续开始,喝茶去了~:)