简介

RHCS: Redhet集群套件,构建高可用服务器集群
GFS: 集群文件系统,提供多节点文件共享服务
LVM2: 集群文件系统lvm,提供可拓展可维护的文件服务
scsi,iscsi: 存储区域网络,为GFS+LVM2所构建的文件服务做传输


原理图

RHCS+lvm2,gfs实现ipsan存储方案_第1张图片


规划:


RHCS不支持双节点的集群,所以这里采用三节点
slave1.king.com  172.16.43.1 集群节点1
slave2.king.com  172.16.43.2 集群节点2
slave3.king.com  172.16.43.3 集群节点3
slave4.king.com  172.16.43.4 lvm2+gfs(管理机)


操作

注: 若无特殊说明操作均为集群节点的操作

1. 节点互信 (管理机)

sed -i 's@^\(HOSTNAME=\).*@\1slave1.king.com@' /etc/sysconfig/network
hostname slave1.king.com
uname -n
# 分别互信
ssh-keygen -t rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub [email protected]

2. 安装 cman,corosync,rgmanager (管理机)

ansible中配置了
vim /etc/ansible/hosts
.
[client]
slave1.king.com
slave2.king.com
slave3.king.com
.
[server]
slave4.king.com
.
# 校对集群时间 all为所有  server仅为slave4 client为slave1,slave2,slave3
ansible all -m shell -a "ntpdate 172.16.0.1"
.
# 关闭 Networkmanager 功能
ansible all -m shell -a "chkconfig NetworkManager off"
ansible all -m shell -a "service NetworkManager stop"
.
# 安装文件
ansible all -m yum -a "name=cman state=present"
ansible all -m yum -a "name=corosync state=present"
ansible all -m yum -a "name=rgmanager state=present"
ansible all -m yum -a "name=ricci state=present"
.
# 管理机 slave4.king.com 中安装cman进行集群管理
ansible server -m shell -a "ccs_tool create mycluster"
ansible server -m shell -a "ccs_tool addnode slave1.king.com -n 1 -v 1"
ansible server -m shell -a "ccs_tool addnode slave2.king.com -n 2 -v 1"
ansible server -m shell -a "ccs_tool addnode slave3.king.com -n 3 -v 1"
ansible server -m shell -a "ccs_tool addnode slave4.king.com -n 4 -v 1"
.
# 将集群信息文件同步至集群节点
scp /etc/cluster/cluster.conf [email protected]:/etc/cluster/
.
启动集群服务
ansible all -m service -a "name=rgmanager state=started enabled=yes"
ansible all -m service -a "name=ricci state=started enabled=yes"
ansible all -m service -a "name=cman state=started enabled=yes"
ansible all -m service -a "name=corosync state=started enabled=yes"

# 配置后节点在线情况

RHCS+lvm2,gfs实现ipsan存储方案_第2张图片


3. ipsan server的安装与配置

# 管理机 slave4.king.com 中安装scsi-target-utils
fdisk /dev/sda
partx -a /dev/sda
vim /etc/tgt/targets.conf
# 创建如下节点

backing-store /dev/clustervg/clusterlv
initator-address 172.16.43.0/24

.
# 启动tgtd服务
service tgtd start
tgtadm -L iscsi -o show -m target

# targets 中 iqn命名为1 , 所以下图的 lun 可以所见

RHCS+lvm2,gfs实现ipsan存储方案_第3张图片


# 所有节点对 gfs,lvm2 的支持
ansible all -m yum -a "name=gfs2-utils state=present"
ansible all -m yum -a "name=lvm2-cluster state=present"
# 在 slave4 中创建 lvm卷
ansible server -m shell -a "pvcreate /dev/sda3"
ansible server -m shell -a "vgcreate clustervg /dev/sda3"
ansible server -m shell -a "lvcreate -L 5G -n clusterlv clustervg"
# 配置使 lvm支持 全局锁及集群的支持 并启动 clvmd 服务
ansible all -m shell -a 'sed -i "s@^\([[:space:]]*locking_type\).*@\1 = 3@g" /etc/lvm/lvm.conf'
ansible all -m shell -a "lvmconf --enable-cluster"
ansible all -m service -a "name=clvmd state=started enabled=yes"


4. ipsan client的安装与配置

# 客户端安装 iscsi-initiator-utils 用以支持 iscsi 协议
ansible client -m yum -a "name=iscsi-initiator-utils state=present"
# 为客户端根据 iqn 号与服务器建立唯一联系
ansible client -m shell -a 'echo "InitiatorName=`iscsi-iname -p iqn`" > /etc/iscsi/initiator.iscsi'
# 启动 iscsi 服务
ansible client -m service -a "name=iscsi state=started enabled=yes"
ansible client -m service -a "name=iscsid state=started enabled=yes"
# 各个客户端发现 iscsi 共享存储
ansible client -m shell -a "iscsiadm -m discovery -t sendtargets -p 172.16.43.4"
# 各个客户端登陆 iscsi 共享存储
ansible client -m shell -a "iscsiadm -m node -T iqn-2014.04.com.king.ipsan:1 -p 172.16.43.4 -l"

# 客户端执行 iscsi 协议执行探索与登陆的过程

RHCS+lvm2,gfs实现ipsan存储方案_第4张图片

RHCS+lvm2,gfs实现ipsan存储方案_第5张图片


5. 测试

# 所有client节点上挂载以iscsi协议共享出来的lvm卷
ansible client -m shell -a "mount /dev/clustervg/clusterlv /media -t gfs2"


# slave1 上格式化, 注意客户端挂载服务器的共享存储在客户端本地是以新磁

# 盘的形式呈现,所以这里格式化的磁盘盘符应该为 /dev/sdb
mkfs.gfs2 -j 2 -p lock_dlm -t mycluster:gfslocktable /dev/sdb

RHCS+lvm2,gfs实现ipsan存储方案_第6张图片


# slave1 slave2 上读写文件

RHCS+lvm2,gfs实现ipsan存储方案_第7张图片


# slave2 上分区操作,之后观察 slave1的情况

RHCS+lvm2,gfs实现ipsan存储方案_第8张图片

RHCS+lvm2,gfs实现ipsan存储方案_第9张图片


# slave4 进行扩容
lvextend -L +2G /dev/clustervg/clusterlv
gfs2_grow /dev/clustervg/clusterlv


总结

   使用 cman,gfs2,lvm2以及iscsi协议实现共享级SAN设备,多节点挂载使用的过程