准备环境
node1:192.168.139.2 node2:192.168.139.4 node4:192.168.139.8 node5:192.168.139.9
node1 作为target端 node2 node4 node5 作为initiator端
并且将node2 node4 node5安装cman+rgmanager后配置成一个三节点的RHCS高可用集群,因为gfs2为一个集群文件系统,必须借助HA高可用集群将故障节点Fence掉,及借助Message Layer进行节点信息传递。 因为要将发现并登入的target做成集成文件系统,所以必须在node2 node4 node5上安装gfs2-utils
先将原来用luci/ricci创建的集群服务stop掉(我以前实验做的一个集群服务,与此实验无关)
[iyunv@node2 mnt]# clusvcadm -d Web_Service Local machine disabling service:Web_Service... [iyunv@node2 mnt]# clustat Cluster Status for zxl @ Wed Dec 21 17:55:46 2016 Member Status: Quorate
Member Name ID Status ------ ---- ---- ------ node2.zxl.com 1 Online, Local, rgmanager node4.zxl.com 2 Online, rgmanager
Service Name Owner (Last) State ------- ---- ----- ------ ----- service:Web_Service (node2.zxl.com) disabled [iyunv@node2 mnt]# service rgmanager stop [iyunv@node2 mnt]# service cman stop [iyunv@node4 mnt]# service rgmanager stop [iyunv@node4 mnt]# service cman stop [iyunv@node4 mnt]# rm -rf /etc/cluster/cluster.conf [iyunv@node4 mnt]# rm -rf /etc/cluster/cluster.conf 每次配置文件改变都会有备份也删掉 [iyunv@node2 mnt]# ls /etc/cluster/ cluster.conf.bak cman-notify.d [iyunv@node2 mnt]# rm -f /etc/cluster/*
如果没有装cman,rgmanager,执行如下命令 [iyunv@node2 mnt]#yum -y install cman rgmanager
用css_tool命令创建一个集群,集群名称mycluster [iyunv@node2 mnt]# ccs_tool create mycluster [iyunv@node2 mnt]# cat /etc/cluster/cluster.conf <?xml version="1.0"?> <cluster name="mycluster" config_version="1">
<clusternodes> </clusternodes>
<fencedevices> </fencedevices>
<rm> <failoverdomains/> <resources/> </rm> </cluster>
添加Fence设备(RHCS集群必须有) [iyunv@node2 mnt]# ccs_tool addfence meatware fence_manual [iyunv@node2 mnt]# ccs_tool lsfence Name Agent meatware fence_manual
-v 指定节点拥有票数 -n 指定节点标识符 -f 指定Fence设备名称
添加三个节点,RHCS集群至少要有三个节点 [iyunv@node2 mnt]# ccs_tool addnode -v 1 -n 1 -f meatware node2.zxl.com [iyunv@node2 mnt]# ccs_tool addnode -v 1 -n 2 -f meatware node4.zxl.com [iyunv@node2 mnt]# ccs_tool addnode -v 1 -n 3 -f meatware node5.zxl.com 查看集群节点 [iyunv@node2 mnt]# ccs_tool lsnode
Cluster name: mycluster, config_version: 5
Nodename Votes Nodeid Fencetype node2.zxl.com 1 1 meatware node4.zxl.com 1 2 meatware node5.zxl.com 1 3 meatware 复制配置文件,RHCS集群会借助cssd进程自动同步 [iyunv@node2 mnt]# scp /etc/cluster/cluster.conf node4:/etc/cluster/ [iyunv@node2 mnt]# scp /etc/cluster/cluster.conf node5:/etc/cluster/ 每个节点启动cman rgmanager [iyunv@node2 mnt]# service cman start [iyunv@node2 mnt]# service rgmanager start [iyunv@node4 mnt]# service cman start [iyunv@node4 mnt]# service rgmanager start [iyunv@node5 mnt]# service cman start [iyunv@node5 mnt]# service rgmanager start [iyunv@node2 mnt]# clustat Cluster Status for mycluster @ Wed Dec 21 18:40:26 2016 Member Status: Quorate
Member Name ID Status ------ ---- ---- ------ node2.zxl.com 1 Online, Local node4.zxl.com 2 Online node5.zxl.com 3 Online
[iyunv@node2 mnt]# rpm -ql gfs2-utils /etc/rc.d/init.d/gfs2 /sbin/fsck.gfs2 /sbin/mkfs.gfs2 \\格式化创建gfs2文件系统的 /sbin/mount.gfs2 \\挂载gfs2文件系统的 /usr/sbin/gfs2_convert
mkfs.gfs2命令的使用 -j 指定日志区域个数,有几个就能被几个节点挂载,因为格式化为集群文件系统后,每个节点都要有日志记录 -J 指定日志大小,默认128M -p {lock_dlm|lock_nolock} 分布式锁管理|不用锁 -t <name> 指定锁表的名称 注:一个集群可以有多个文件系统,如一个集群中共享了两个磁盘,两个磁盘可以是gfs2和ocfs2文件系统,不同的文件系统进行加锁时,要用不同的锁表进行唯一标示,所以每个锁都要有锁名称 锁表名称的格式 cluster_name:锁表名 如:mycluster:lock_sda -D 显示详细的Debug信息
登入target,并格式化为gfs2文件系统 [iyunv@node2 mnt]# iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -l [iyunv@node2 mnt]# mkfs.gfs2 -j 2 -p lock_dlm -t mycluster:lock_sde1 /dev/sde1 Are you sure you want to proceed? [y/n] y
Device: /dev/sde1 Blocksize: 4096 Device Size 3.00 GB (787330 blocks) Filesystem Size: 3.00 GB (787328 blocks) Journals: 2 Resource Groups: 13 Locking Protocol: "lock_dlm" Lock Table: "mycluster:lock_sde1" UUID: 9ebdc83b-9a61-9a4a-3ba7-9c80e59a0a2d 格式化完成,挂载测试 [iyunv@node2 mnt]# mount -t gfs2 /dev/sde1 /mnt [iyunv@node2 mnt]# cd /mnt [iyunv@node2 mnt]# ll total 0 [iyunv@node2 mnt]# cp /etc/issue ./ [iyunv@node2 mnt]# ll total 8 -rw-r--r--. 1 root root 47 Dec 21 19:06 issue
ok,换node4 [iyunv@node4 ~]# iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -l node4不用再次格式化,直接挂载 [iyunv@node4 ~]# mount -t gfs2 /dev/sdc1 /mnt [iyunv@node4 ~]# cd /mnt [iyunv@node4 mnt]# ll \\可以看到node1复制的文件 total 8 -rw-r--r--. 1 root root 47 Dec 21 19:06 issue node4创建一个文件a.txt,会立马通知给其他节点,让其看到,这就是集群文件系统gfs2的好处 [iyunv@node4 mnt]# touch a.txt [iyunv@node2 mnt]# ll total 16 -rw-r--r--. 1 root root 0 Dec 21 19:10 a.txt -rw-r--r--. 1 root root 47 Dec 21 19:06 issue
在加一个节点node5 [iyunv@node5 ~]# iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -l 挂载不上去,因为只创建了两个集群日志文件,有几个日志几个节点就能挂载 [iyunv@node5 ~]# mount -t gfs2 /dev/sdc1 /mnt Too many nodes mounting filesystem, no free journals 添加日志 [iyunv@node2 mnt]# gfs2_jadd -j 1 /dev/sde1 \\-j 1 增加一个日志 Filesystem: /mnt Old Journals 2 New Journals 3 [iyunv@node2 mnt]# gfs2_tool journals /dev/sde1 \\此命令可以查看有几个日志,每个默认大小128M journal2 - 128MB journal1 - 128MB journal0 - 128MB 3 journal(s) found. [iyunv@node5 ~]# mount -t gfs2 /dev/sdc1 /mnt \\node5挂载成功 [iyunv@node5 ~]# cd /mnt [iyunv@node5 mnt]# touch b.txt [iyunv@node4 mnt]# ll total 24 -rw-r--r--. 1 root root 0 Dec 21 19:10 a.txt -rw-r--r--. 1 root root 0 Dec 21 19:18 b.txt -rw-r--r--. 1 root root 47 Dec 21 19:06 issue
gfs2集群文件系统一般支持的集群数量不能超过16个,超过后,性能直线下降
|