Overview
注: 本文所述流程仅在CentOS 6.x版本验证通过
1. 部署
以下操作如非特别注明,则需要在所有节点上执行。
1.0 安装环境
主机名 | IP | OS | 硬件 |
---|---|---|---|
node0 | 192.168.3.100 | CentOS 6.x | PC 服务器 |
node1 | 192.168.3.101 | CentOS 6.x | PC 服务器 |
- | 192.168.0.110 | - | HP P4000 SAN |
1.1 安装集群
1.1.0 配置主机名
编辑hosts文件,加入主机名和IP的映射。
$ sudo cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
192.168.3.100 node0
192.168.3.101 node1
1.1.1 安装相关软件
$ sudo yum install cman openais gfs* lvm2* rgmanager system-config-cluster scsi-target-utils cluster-snmp
$ sudo /etc/init.d/iptables stop
(关闭防火墙确保实验环境通信顺畅,具体在开启防火墙的情况下需要开放的端口仍需后续验证)
(同时,确保selinux处于关闭状态)
1.1.2 配置lvm
- 将locking_type = 1,改为locking_type = 3,允启用同时读写
- 设置fallback_to_local_locking=0,以禁止回写,避免导致裂脑
1.1.3 配置集群
- 编辑/etc/cluster/cluster.conf,增加下列内容:
<?xml version="1.0"?>
<cluster config_version="2" name="gfs_cluster">
<fence_daemon post_fail_delay="0" post_join_delay="3"/>
<clusternodes>
<clusternode name="node0" nodeid="1" votes="1">
<fence>
<method name="1">
<device name="manual_fence" nodename="node0"/>
</method>
</fence>
</clusternode>
<clusternode name="node1" nodeid="2" votes="2">
<fence>
<method name="1">
<device name="manual_fence" nodename="node1"/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman/>
<fencedevices>
<fencedevice agent="fence_manual" name="manual_fence"/>
</fencedevices>
<rm>
<failoverdomains/>
<resources/>
</rm>
</cluster>
- 验证配置文件是否合法
$ sudo ccs_config_validate
1.1.4 启动集群
$ sudo service cman start
$ sudo service clvmd start
$ sudo service rgmanager start
$ sudo clusterat
Cluster Status for gfs_cluster @ Wed Jan 27 21:39:17 2016
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
node0 1 Online, Local
node1 2 Online
1.2 配置卷
1.2.1 加载iSCSI LUN
以下操作在标识为‘Local’的节点上进行
$ sudo iscsiadm -m discovery -t sendtargets -p 192.168.0.110
$ sudo iscsiadm -m node -T <iSCSI的IQN> -p 192.168.0.110 --login
$ sudo fdisk -l
(查看iSCSI LUN的设备路径)
$ sudo pvcreate /dev/sdd -----------<iSCSI LUN的设备路径, 本文为>
$ sudo vgcreate vg_iscsi /dev/sdd
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdd vg_iscsi lvm2 a-- 690.00g 690.00g
$ sudo lvcreate -L 680g -n lv_iscsi vg_iscsi
Logical volume "lv_iscsi" created
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_iscsi vg_iscsi -wi-ao---- 680.00g
$ sudo mkfs.gfs2 -j 2 -p lock_dlm -t gfs_cluster:gfs2 /dev/vg_iscsi/lv_iscsi
对于mkfs.gfs2命令来说,我们所使用的参数功能如下:
- -p:用来指定gfs的锁机制,一般情况下会选择lock_dlm,如果要选择类型,可以参考:online.
- -j:指定journal个数(可加入节点数),一般情况下应留有冗余,否则后期还得再调整;
- 查看journals:
$ sudo gfs2_tool journals /data3
- 增加journals:
$ sudo gfs2_jadd -j1 /data3
- -t:格式为ClusterName:FS_Path_Na
- ClusterName:应与前面cluster.conf中指定的集群名称相同;
- FS_Path_Name:这个块设备mount的路径;
- 最后一个参数是指定逻辑卷的详细路径;
1.3 启动GFS2服务
$ sudo mkdir /gfs2
$ sudo echo "/dev/vg_iscsi/lv_iscsi /gfs2 gfs2 rw,relatime 0 0" >> /etc/fstab
$ sudo service gfs2 start
1.4 配置开机自启动
$ sudo echo 'iscsiadm -m node -T <iSCSI的IQN> -p 192.168.0.110 --login' >> /etc/rc.local
$ sudo chkconfig --add cman
$ sudo chkconfig --add clvmd
$ sudo chkconfig --add gfs2
$ sudo chkconfig --add rgmanager
$ sudo chkconfig --level 345 cman on
$ sudo chkconfig --level 345 clvmd on
$ sudo chkconfig --level 345 gfs2 on
$ sudo chkconfig --level 345 rgmanager on
2. 后续工作
- 验证本部署方案可能存在的隐患,例如单点故障、脑裂
- 验证iSCSI多路径的配置,增强整体的稳定性
- 验证防火墙配置
- 验证lvm的配置影响及更深入的配置
- 验证集群配置
- 验证mkfs.gfs2的相关选项