天天看点

高可用结合gfs2,,实现集群文件系统以及集群逻辑卷。

    为什么要集群文件系统,在什么场景中适用我就用一句话来概括,当多个节点需要读写同一个文件系统时,需要使用集群文件系统,它可以将文件系统持有的锁信息传递到各个节点。

实验一、将iSCSI共享出来的磁盘,做成gfs2文件系统,实现多个节点可挂载同一个文件系统,保证数据同步

实验平台:RHEL6 

环境拓扑:

<a href="http://s3.51cto.com/wyfs02/M00/42/81/wKioL1PYUc3zcQxAAAG8ds0pAao715.jpg" target="_blank"></a>

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'

<a href="http://s3.51cto.com/wyfs02/M02/42/88/wKioL1PYXuCQF70qAAFjLkiGTQU366.jpg" target="_blank"></a>

配置各节点登录到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磁盘分区格式化,然后每个节点重启系统。

<a href="http://s3.51cto.com/wyfs02/M01/42/94/wKiom1PYdPezihSCAAIxdTp-ciI121.jpg" target="_blank"></a>

格式化/dev/sdb1为gfs2文件系统

命令帮助:

mkfs.gfs2

    -J  //指定日志区域大小

    -j  //日志区域个数

    -p  //指定锁协议

    -t  //指定锁表名称

mkfs.gfs2 -j 3 -p lock_dlm -t gcluster:sdb1 /dev/sdb1

<a href="http://s3.51cto.com/wyfs02/M02/42/95/wKiom1PYd37zOOU3AAIyB32L2wE941.jpg" target="_blank"></a>

修改fstab指定挂载点将文件同步到各个节点,启动gfs2服务自动挂载。

<a href="http://s3.51cto.com/wyfs02/M02/42/96/wKioL1PYefCQXQRdAAHJ77mQslY166.jpg" target="_blank"></a>

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'

<a href="http://s3.51cto.com/wyfs02/M02/42/96/wKiom1PYedDz0WMIAAI3hepMV8g846.jpg" target="_blank"></a>

这就完成了集群文件系统,大家自行测试效果。

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"

<a href="http://s3.51cto.com/wyfs02/M02/42/97/wKioL1PYf8-ANFsnAAIF-wUHQ9M252.jpg" target="_blank"></a>

启动服务

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个日志区域,只能两个节点挂载,第三个节点挂载的时候会报错。

<a href="http://s3.51cto.com/wyfs02/M00/42/97/wKioL1PYgk7S-NtTAAEmuB33PXY771.jpg" target="_blank"></a>

增加一个日志区域,再挂载就不会报错了。

gfs2_jadd -j 1 /dev/cvg/cllv

扩展集群逻辑卷

<a href="http://s3.51cto.com/wyfs02/M00/42/97/wKiom1PYgerwNhG_AAGDtPX5NSQ524.jpg" target="_blank"></a>

创建只创建了5G空间,现在再给他加5G。

lvextend -L +5G /dev/cvg/cllv 

gfs2_grow /dev/cvg/cllv

<a href="http://s3.51cto.com/wyfs02/M00/42/97/wKiom1PYguiibl5RAAG6PA2f7Fc775.jpg" target="_blank"></a>

实验完成

本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1532752