簡介node
RHCS: Redhet集羣套件,構建高可用服務器集羣
GFS: 集羣文件系統,提供多節點文件共享服務
LVM2: 集羣文件系統lvm,提供可拓展可維護的文件服務
scsi,iscsi: 存儲區域網絡,爲GFS+LVM2所構建的文件服務作傳輸shell
原理圖vim
規劃:bash
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(管理機)服務器
操做
網絡
注: 若無特殊說明操做均爲集羣節點的操做ssh
1. 節點互信 (管理機)ide
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 root@slave2.king.com
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 root@slave1.king.com:/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"
# 配置後節點在線狀況
ui
3. ipsan server的安裝與配置
# 管理機 slave4.king.com 中安裝scsi-target-utils fdisk /dev/sda partx -a /dev/sda vim /etc/tgt/targets.conf # 建立以下節點 <target iqn-2014.04.com.king.ipsan:1> backing-store /dev/clustervg/clusterlv initator-address 172.16.43.0/24 </target> . # 啓動tgtd服務 service tgtd start tgtadm -L iscsi -o show -m target
# targets 中 iqn命名爲1 , 因此下圖的 lun 能夠所見
# 全部節點對 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 協議執行探索與登錄的過程
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
# slave1 slave2 上讀寫文件
# slave2 上分區操做,以後觀察 slave1的狀況
# slave4 進行擴容
lvextend -L +2G /dev/clustervg/clusterlv
gfs2_grow /dev/clustervg/clusterlv
總結
使用 cman,gfs2,lvm2以及iscsi協議實現共享級SAN設備,多節點掛載使用的過程