为什么要集群文件系统,在什么场景中适用我就用一句话来概括,当多个节点需要读写同一个文件系统时,需要使用集群文件系统,它可以将文件系统持有的锁信息传递到各个节点。
实验一、将iSCSI共享出来的磁盘,做成gfs2文件系统,实现多个节点可挂载同一个文件系统,保证数据同步
实验平台:RHEL6
环境拓扑:
ansible配置前面文章有讲到 略
iSCSI服务器配置 略
用控制端让三个节点安装需要的程序包。
- ansible all -m shell -a ‘yum install cman rgmanager -y‘
- ansible all -m shell -a ‘yum install gfs2-utils -y‘
- ansible all -m shell -a ‘yum install iscsi-initiator-utils -y‘
设置各节点时间同步
- ansible all -m shell -a ‘ntpdate asia.pool.ntp.org‘
- ansible all -m shell -a ‘date‘
配置各节点登录到iSCSI-Server
- ansible all -m shell -a ‘iscsiadm -m discovery -t sendtargets -p 192.168.18.205‘
- ansible all -m shell -a ‘iscsiadm -m node -T iqn.2014-07.com.tuchao:share1 -p 192.168.18.205:3260 -l‘
登录成功后,用fdisk -l 可以看到iSCSI共享出来的磁盘sdb。
来到admin1.tuchao.com配置高可用。
创建一个集群
- ccs_tool create gcluster
命令执行成功后,会在/etc/cluster目录下生成一个cluster.conf的文件。
添加节点
- ccs_tool addnode -n 1 admin1.tuchao.com
- ccs_tool addnode -n 2 admin2.tuchao.com
- ccs_tool addnode -n 3 admin3.tuchao.com
将配置文件同步到各个节点
- scp cluster.conf admin2:/etc/cluster/
- scp cluster.conf admin3:/etc/cluster/
启动各个节点的cman和rgmanager,并设置开机自启动。
- ansible all -m shell -a ‘service cman start‘
- ansible all -m shell -a ‘service rgmanager start‘
- ansible all -m shell -a ‘chkconfig cman on‘
- ansible all -m shell -a ‘chkconfig rgmanager on‘
来到节点一对共享的iSCSI磁盘分区格式化,然后每个节点重启系统。
格式化/dev/sdb1为gfs2文件系统
命令帮助:
mkfs.gfs2
-J //指定日志区域大小
-j //日志区域个数
-p //指定锁协议
-t //指定锁表名称
- mkfs.gfs2 -j 3 -p lock_dlm -t gcluster:sdb1 /dev/sdb1
修改fstab指定挂载点将文件同步到各个节点,启动gfs2服务自动挂载。
- scp /etc/fstab admin2:/etc/
- scp /etc/fstab admin3:/etc/
- ansible all -m shell -a ‘service gfs2 start‘
- ansible all -m shell -a ‘chkconfig gfs2 on‘
这就完成了集群文件系统,大家自行测试效果。
gfs2_grow //重新检查磁盘边界,与集群逻辑卷扩展配合使用。
gfs2_jadd //添加一个日志区域
gfs2_tool freeze //冻结设备
gfs2_tool journals //显示日志区域
实验二、集群逻辑卷创建与扩展。
首先安装支持的程序包
- ansible all -m shell -a ‘yum install lvm2-cluster -y‘
修改三个节点的逻辑卷锁类型为集群类型,验并证/etc/lvm/lvm.conf文件。
- ansible all -m shell -a ‘lvmconf --enable-cluster‘
- ansible all -m shell -a "grep -i ‘^[[:space:]]*locking_type‘ /etc/lvm/lvm.conf"
启动服务
- ansible all -m shell -a "service clvmd start"
创建pv,vg,lv,格式化挂载。
- pvcreate /dev/sdb2
- vgcreate cvg /dev/sdb2
- mkfs.gfs2 -j 2 -p lock_dlm -t gcluster:cllv /dev/cvg/cllv
由于我们这里指定了2个日志区域,只能两个节点挂载,第三个节点挂载的时候会报错。
增加一个日志区域,再挂载就不会报错了。
- gfs2_jadd -j 1 /dev/cvg/cllv
扩展集群逻辑卷
创建只创建了5G空间,现在再给他加5G。
lvextend -L +5G /dev/cvg/cllv
gfs2_grow /dev/cvg/cllv
实验完成
高可用结合gfs2,,实现集群文件系统以及集群逻辑卷。