RHEL6 GFS Web HA 实现
目录
1. 实验环境
节点1:v1.domain.com 192.168.137.11 节点2:v2.domain.com 192.168.137.12 iscsi存储/配置服务器:rhel6.domain.com 192.168.137.6
修改 /etc/hosts 文件或者搭建 DNS 服务器,三台 server 的 hosts 文件如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.11 v1.domain.com v1
192.168.137.12 v2.domain.com v2
192.168.137.6 rhel6.domain.com rhel6
2. 配置集群之前
2.1 存储配置
2.1.1 iSCSI 服务器
- rhel6.domain.com上sda1和sda2为/分区和swap分区,尚余一部分磁盘空间未分配,用fdisk分出sda3一个分区(10G)准备用作iscsi共享存储。
- 安装 scsi-target-utils 软件提供 iscsi 服务
[root@rhel6 ~]# yum install scsi-target-utils - 修改/etc/tgt/targets.conf,添加:
<target iqn.2011-06.com.domain:server.target1> backing-store /dev/sda3 </target> - 重启tgtd服务,并将其设为开机启动:
[root@rhel6 ~]# /etc/init.d/tgtd restart [root@rhel6 ~]# chkconfig tgtd on - 查看服务状态,可以看到已经提供了一个10G的ISCSI LUN 1卷
- 打开防火墙端口3260或者关闭防火墙,具体设置自行解决。
2.1.2 iSCSI 客户机
- 安装iscsi客户端软件iscsi-initiator-utils
[root@v1 ~]# yum install iscsi-initiator-utils - 发现服务器rhel6.domain.com的iscsi共享卷
Rhel6为主机名,使用ip地址也可[root@v1 ~]# iscsiadm -m discovery -t sendtargets -p rhel6 - 登录ISCSI存储:
使用iscsiadm -m node -T target名称 -p targetIP地址:端口号 —login 命令[root@v1 ~]# iscsiadm -m node -T iqn.2011-06.com.domain:server.target1 -p 192.168.137.6:3260 -l - 卸载ISCSI存储命令
[root@v1 ~]# iscsiadm -m node -T iqn.2011-06.com.domain:server.target1 -p 192.168.137.6:3260 -u - 在其他的节点上挂载ISCSI
- 将iscsi设为开机启动
2.2 集群软件包安装
分为集群节点和配置管理器(Luci,RHCS 的 web 管理工具,仅仅只是配置工具,集群可脱离它正常运行)
2.2.1 集群节点
-
配置好yum源后,安装集群软件包
[root@v1 ~]# yum install ricci openais cman rgmanager lvm2-cluster gfs2-utils -
打开防火墙相应端口
端口 协议 程序 5404,5405 UDP corosync/cman 11111 TCP ricci 21064 TCP dlm 16851 TCP modclusterd -
或者直接禁用防火墙
[root@v1 ~]# /etc/init.d/iptables stop [root@rhel6 ~]# chkconfig iptables off -
关闭节点上的ACPI服务:
[root@v1 ~]# /etc/init.d/acpid stop [root@v1 ~]# chkconfig acpid off -
禁用NetworkManager
[root@v1 ~]# /etc/init.d/NetworkManager stop [root@v1 ~]# chkconfig NetworkManager off -
给软件用户ricci设置密码:
[root@v1 ~]# passwd ricci -
启动ricci服务
[root@v1 ~]# /etc/init.d/ricci start
2.2.2 集群配置管理器(luci)
可以安装在节点上,我现在安装在存储服务器上,更利于监控集群状态。
-
配置好yum源后,安装管理软件:
[root@rhel6 ~]# yum install luci -
打开软件相应端口(iptables命令)
端口 协议 程序 8084 TCP luci -
或者直接禁用防火墙
[root@rhel6 ~]# /etc/init.d/iptables stop [root@rhel6 ~]# chkconfig iptables off -
启动luci:
[root@rhel6 ~]# /etc/init.d/luci start
3. 创建集群
- 登录管理服务器的luci界面,端口8084:
- 输入用户名root和密码,登录
- 转到manage cluster界面
- 点击Create,创建集群
- 此处密码为ricci密码
- 集群创建成功
- 转到Fence Devices创建fence设备,因为不是用的服务器,没有fence设备,我随意建了一个SRF,实际生产环境中,必须使用fence硬件设备。
- 回到nodes菜单下,点击v1.domain.com,出现节点详情后点击add fence method添加一个method,
- 点击add fence instance,添加刚才设定的SRF。
4. 建立 GFS 文件系统
4.1 创建 LVM 卷
- 创建物理卷
[root@v1 ~]# pvcreate /dev/sda - 查看物理卷
[root@v1 ~]# pvdisplay - 创建卷组vg1
[root@v1 ~]# vgcreate vg1 /dev/sda - 查看卷组
[root@v1 ~]# vgdisplay - 创建逻辑卷lv1
-L 10G指定大小,-n lv1指定名称,vg1指定所在卷组[root@v1 ~]# lvcreate -L 10G -n lv1 vg1 - 现在在两台节点上手动重启/etc/clvmd服务:
[root@v1 ~]# /etc/init.d/clvmd restart - 在两边主机上都可以看到新建的lvm卷
4.2 创建 GFS2 文件系统
- 在将lvm卷lv1格式化成GFS2文件系统
-p指定lock参数,-t指定集群名:文件系统名,-j指定可以连接的节点数[root@v1 ~]# mkfs.gfs2 -p lock_dlm -t mycluster:data1 -j 4 /dev/vg1/lv1 - 节点上挂载GFS2文件系统
[root@v1 ~]# mkdir /mnt/data1 [root@v1 ~]# mount /dev/vg1/lv1 /mnt/data1/ [root@v2 ~]# mkdir /mnt/data1 [root@v2 ~]# mount /dev/vg1/lv1 /mnt/data1/ - 测试GFS2文件系统是否正常运行,在v1和v2上分别新建文件,在双方查看是否同步
- 让GFS2文件系统开机自动挂载,查看
分别修改节点/etc/fstab文件,加入[root@v1 ~]# mount ...... /dev/mapper/vg1-lv1 on /mnt/data1 type gfs2 (rw,relatime,hostdata=jid=0) [root@v2 ~]# mount ...... /dev/mapper/vg1-lv1 on /mnt/data1 type gfs2 (rw,relatime,hostdata=jid=1)
重启节点验证/dev/mapper/vg1-lv1 /mnt/data1 gfs2 defaults 0 0[root@v1 ~]# df -h
5. 建立 Web 高可用服务
5.1 配置 web 服务器
两个节点上建立web服务器,实际使用中网站根目录均应使用/mnt/data1/下的相同目录,测试中为了更好的验证,分别使用/mnt/data1/www1和/mnt/data1/www2。
- 修改两个节点上的/etc/httpd/conf/httpd.conf
DocumentRoot “/var/www/html”改为DocumentRoot “/mnt/data1/www1”[root@v1 ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot “/var/www/html”改为DocumentRoot “/mnt/data1/www2”[root@v2 ~]# vim /etc/httpd/conf/httpd.conf - 新建目录及网页文件index.html
This is v1 ![root@v2 ~]# mkdir /mnt/data1/www1 /mnt/data1/www2 [root@v2 ~]# vim /mnt/data1/www1/index.html
This is v2 ![root@v2 ~]# vim /mnt/data1/www2/index.html - 启动http服务
[root@v1 ~]# /etc/init.d/httpd start [root@v2 ~]# /etc/init.d/httpd start - 访问192.168.137.11和192.168.137.12得到:
5.2 集群中创建服务组
-
创建Web高可用需要的两个资源:
- ip地址:192.168.137.10/24
- httpd脚本:/etc/init.d/httpd
-
新建故障倒换域
-
新建服务组,添加刚才新建的两个资源进服务组
-
启动服务组
显示运行在v2上,访问192.168.137.10有:
5.3 高可用性验证
-
手动切换
刷新192.168.137.10页面
-
模拟宕机,关闭V1(现实生产应用中必须使用Fence设备!!!)