毛毛雨:AM 3885999
RHCS 基于 RHEL6.0 x86_64(实验教程) 实验说明:所用的RHEL 版本均为 6.0 x86_64,宿主机支持虚拟化,内存不小于4G。
linux带薪培训实验拓扑如下:
在本实验中,为了节省资源将 ISCSI-Target 也放到 manager 一个机器上了。
vmware 创建一个虚拟机,内存3G,按下图设置使得虚拟机也支持虚拟化,vmware workstation 版本不低于7:
蓝狐Linux系统培训中心
毛毛雨:AM 3885999
毛毛雨:AM 3885999
蓝狐Linux 系统培训中心
毛毛雨:AM 3885999
在这个虚拟机中装好 rhel6,ip192.168.0.200,作为 RHCS 的管理端,继续在其上安装 kvm,kvm 的安装请查看我之前写的关于 kvm 文档,kvm 安装好后,创建两 个 vm(virtual machine) ,桥接到 192.1
68.0.200 的物理网卡上,vm 上安装好 rhel6,ip 分别为192.168.0.201和 192.168.0.202,作为 RHCS 的节点,这样的拓扑设计 的原因是我们可以在 RHCS 中使用 fence-virsh 来fence 掉 kvm 管理的 RHCS 故障节点。
使用hostname 指令设置主机名,想重启之后生效别忘了/etc/sysconfig/network,因为本环境中没有使用DNS,所以在manager 上设置/etc/hosts 添加如下三行, 再 scp 到 web1 和web2。 [root@manager ~]# vim /etc/hosts
127.0.0.1
localhost.localdomain localhost ::1
localhost6.localdomain6 localhost6
192.168.0.200
manager.sswans manager 192.168.0.201
web1.sswans web1 192.168.0.202 web2.sswans web2 manager、web1、web2 均关闭selinux、iptables。
毛毛雨:AM 3885999
在 manager上建 1个 target,2 个lun,用作导出 iscsi存储给节点使用。 主要步骤及指令如下:
fdisk 分出来两个分区sda5、6,大小为1G、10M,fdisk 之后使用 partx -a /dev/sda 重读分区,可以不用重启系统。
[root@manager ~]# yum install scsi-target-utils -y 安装iscsi-target 端
[root@manager ~]# chkconfig tgtd on ; /etc/init.d/tgtd start 随机启动;启动服务
[root@manager ~]# tgtadm -L iscsi -m target -o new -t 1 -T iqn.2011-01.sswans:disk1 创建target
[root@manager ~]# tgtadm -L iscsi -m logicalunit -o new -t 1 -l 1 -b /dev/sda5 创建lun1,对应sda5 分区
[root@manager ~]# tgtadm -L iscsi -m logicalunit -o new -t 1 -l 2 -b /dev/sda6 创建lun2,对应sda6 分区
[root@manager ~]# tgtadm -L iscsi -m target -o bind -t 1 -I ALL 设置ACL 访问控制,ALL 为任意访问
[root@manager ~]# tgt-admin --dump > /etc/f dump 保存配置,以后每次重启都会生效 安装luci工具,RHCS 管理端,请配置好yum仓库,RHCS 相关的包在 iso 镜像中的 HighAvailability 和ResilientStroage中
[root@manager ~]# yum install luci -y
[root@manager ~]# chkconfig luci on ; /etc/init.d/luci start
Point your web browser to manager.sswans:8084 to access luci 等节点安装好 ricci 后,可以使用这个 url 对节点进行管理和配置 节点web1、web2 上都执行如下动作,以web1为例:
[root@web1 ~]# yum install rgmanager -y 会自动安装 ricci、cman 等包
[root@web1 ~]# chkconfig ricci on ; /etc/init.d/ricci start
[root@web1 ~]# chkconfig NetworkManager off ; /etc/init.d/NetworkManager stop
[root@web1 ~]# chkconfig cman on ; chkconfig rgmanager on ; chkconfig modclusterd on
[root@web1 ~]# /etc/init.d/cman start ; /etc/init.d/rgmanager start;/etc/init.d/modclusterd start
使用浏览器打开luci的 url,新建一个集,名为 sSWans,添加两个节点,一个名为web1,另一个名为 web2,因为之前在两个节点上都安装了 ricci、cman等包,
蓝狐Linux系统培训中心
毛毛雨:AM 3885999
毛毛雨:AM 3885999
所以单选 use locally installed packages,enable shared storage support 选项其实就是指的 gfs,我们在后面手动装包来实施,这里不勾选。
检查节点的服务状态,确定 cman、rgmanager、ricci、modcluster 服务处于 running 状态。如有问题,请注意查看节点的/var/log/message 日志进行排错。
点击菜单中的Failover Domains,添加一个热备切换域,名为 web_FD,勾选 no Failback,勾选web1,web2 两个节点。
点击菜单中的 Resources,添加一个 ip address 资源,ip为 192.168.0.252,这个 ip就是提供服务的虚拟 ip,再添加一个 script,名为 http,脚本路径/ etc/init.d/httpd。
点击菜单中的Services,添加一个服务,名为apache,选择刚创建的热备切换域web_FD,添加资源,把刚创建的 ip 资源和脚本资源添加进来,如果服务需要使用的 资源具有先后关系,那么需要将前提资源以子资源(add a child resource)的形式添加。
在两个节点上针对httpd写一个index.html的页面,web1上 [root@web1 ~]# echo web1 > /var/www/html/index.html ,web2的index.html内容为web2, 这样待会服务启动后,我们去访问这个 apache 服务,可以通过访问到的内容来检测集提供的服务是由哪个节点完成的。
在两个节点上都监控日志tail -f /var/log/message,启动这个apache服务,查看服务启动时节点的信息,有助于更好的理解 rhcs和增加排错经验。如无意外,此时 应该可以看到apache 服务会在其中一个节点上启动,我的启动在 web1 上,在 Services 菜单可以看到,在任意节点上用指令clustat 查看更快更方便。
做到这里,我们完成了一个rhcs 的最小部署,也是一个特殊情况,也就是two_node 两节点模式,此时的集可以提供设定的web 服务,在节点web1使用init指令关机 或重启,apache服务都能正常迁移到节点web2,但是,如果提供服务的web1节点网卡故障,我们可以使用指令模拟网卡故障 [root@web1 ~]# ifdown eth0 ,那么
蓝狐Linux系统培训中心
毛毛雨:AM 3885999
毛毛雨:AM 3885999
集无法将 web服务迁移到 web2 节点上,从日志可以看到 web2 要fence掉 web1,但是没有fence method,此时,我们在正常节点web2 上使用指令
[root@web2 ~]# fence_ack_manual web1
About to override fencing for web1.
Improper use of this command can cause severe file system damage.
Continue [NO/absolutely]? absolutely
Done
意思是告诉正常节点 web2,已经成功fence掉故障节点 web1,web2 可以抢夺原本运行在web1 上的apache 服务了,注意看日志,这原本就是fence设计的原理。如
果你没有使用 fence_ack_manual 而将 web1 的网卡重新开启或者重启 web1,那么 web2 的 cman服务
会被停止掉,留意 web2 的日志,这种情况下,web2 的 cman 服务重启不了啦,你只能选择重启系统。
因此,我们的集是需要fence 设备的,下面开始添加 fence 设备,在节点 web1 和 web2 上做如下动作:
[root@web1 ~]# mv /usr/sbin/fence_apc{,.bak}
[root@web1 ~]# ln -s /usr/sbin/fence_virsh /usr/sbin/fence_apc
因为在 luci 的Fence Devices 菜单中,添加fence 设备,下拉菜单中并没有fence_virsh 项,所以上面的动作就是用fence_virsh 替换 fence_apc。
“偷龙转凤”之后,我们选择下拉菜单中的 fence_apc,其实这时候调用的是 fence_virsh,name填 virsh_fence,ip填 192.168.0.200,login填 root,password 填上对应的密码,这样子,我们就成功添加了一个可以fence kvm 节点的fence设备,接下来,将这个fence设备应用到节点上,web1为例,luci中点击 web1节点, 添加fence_method,名为web_fence,再添加fence instance,选择刚创建的virsh_fence,port 填web1,此处的web1不是web1的hostname,而是kvm 上的vm
名;节点web2 上 port 换成 web2,其他跟 web1 设置一样。
蓝狐Linux系统培训中心
毛毛雨:AM 3885999
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论