簡介
RHCS: Redhet叢集套件,建構高可用伺服器叢集
GFS: 叢集檔案系統,提供多節點檔案共享服務
LVM2: 叢集檔案系統lvm,提供可拓展可維護的檔案服務
scsi,iscsi: 存儲區域網絡,為GFS+LVM2所建構的檔案服務做傳輸
原理圖
<a href="http://s3.51cto.com/wyfs02/M00/25/38/wKioL1NaUMLyQplnAAGYkTD1E4w988.jpg" target="_blank"></a>
規劃:
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. 節點互信 (管理機)
1
2
3
4
5
6
<code>sed</code> <code>-i </code><code>'s@^\(HOSTNAME=\).*@\1slave1.king.com@'</code> <code>/etc/sysconfig/network</code>
<code>hostname</code> <code>slave1.king.com</code>
<code>uname</code> <code>-n</code>
<code># 分别互信</code>
<code>ssh</code><code>-keygen -t rsa -P </code><code>''</code>
<code>ssh</code><code>-copy-</code><code>id</code> <code>-i .</code><code>ssh</code><code>/id_rsa</code><code>.pub [email protected]</code>
2. 安裝 cman,corosync,rgmanager (管理機)
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<code>ansible中配置了</code>
<code>vim </code><code>/etc/ansible/hosts</code>
<code>.</code>
<code>[client]</code>
<code>slave1.king.com</code>
<code>slave2.king.com</code>
<code>slave3.king.com</code>
<code>[server]</code>
<code>slave4.king.com</code>
<code># 校對叢集時間 all為所有 server僅為slave4 client為slave1,slave2,slave3</code>
<code>ansible all -m shell -a </code><code>"ntpdate 172.16.0.1"</code>
<code># 關閉 Networkmanager 功能</code>
<code>ansible all -m shell -a </code><code>"chkconfig NetworkManager off"</code>
<code>ansible all -m shell -a </code><code>"service NetworkManager stop"</code>
<code># 安裝檔案</code>
<code>ansible all -m yum -a </code><code>"name=cman state=present"</code>
<code>ansible all -m yum -a </code><code>"name=corosync state=present"</code>
<code>ansible all -m yum -a </code><code>"name=rgmanager state=present"</code>
<code>ansible all -m yum -a </code><code>"name=ricci state=present"</code>
<code># 管理機 slave4.king.com 中安裝cman進行叢集管理</code>
<code>ansible server -m shell -a </code><code>"ccs_tool create mycluster"</code>
<code>ansible server -m shell -a </code><code>"ccs_tool addnode slave1.king.com -n 1 -v 1"</code>
<code>ansible server -m shell -a </code><code>"ccs_tool addnode slave2.king.com -n 2 -v 1"</code>
<code>ansible server -m shell -a </code><code>"ccs_tool addnode slave3.king.com -n 3 -v 1"</code>
<code>ansible server -m shell -a </code><code>"ccs_tool addnode slave4.king.com -n 4 -v 1"</code>
<code># 将叢集資訊檔案同步至叢集節點</code>
<code>scp</code> <code>/etc/cluster/cluster</code><code>.conf [email protected]:</code><code>/etc/cluster/</code>
<code>啟動叢集服務</code>
<code>ansible all -m service -a </code><code>"name=rgmanager state=started enabled=yes"</code>
<code>ansible all -m service -a </code><code>"name=ricci state=started enabled=yes"</code>
<code>ansible all -m service -a </code><code>"name=cman state=started enabled=yes"</code>
<code>ansible all -m service -a </code><code>"name=corosync state=started enabled=yes"</code>
# 配置後節點線上情況
<a href="http://s3.51cto.com/wyfs02/M02/25/38/wKiom1NaVyCzWGx-AAIf1qvpp6s504.jpg" target="_blank"></a>
3. ipsan server的安裝與配置
<code># 管理機 slave4.king.com 中安裝scsi-target-utils</code>
<code>fdisk</code> <code>/dev/sda</code>
<code>partx -a </code><code>/dev/sda</code>
<code>vim </code><code>/etc/tgt/targets</code><code>.conf</code>
<code># 建立如下節點</code>
<code><target iqn-2014.04.com.king.ipsan:1></code>
<code>backing-store </code><code>/dev/clustervg/clusterlv</code>
<code>initator-address 172.16.43.0</code><code>/24</code>
<code><</code><code>/target</code><code>></code>
<code># 啟動tgtd服務</code>
<code>service tgtd start</code>
<code>tgtadm -L iscsi -o show -m target</code>
# targets 中 iqn命名為1 , 是以下圖的 lun 可以所見
<a href="http://s3.51cto.com/wyfs02/M01/25/38/wKiom1NaV3bwuXkpAATcfAsmQYE737.jpg" target="_blank"></a>
<code># 所有節點對 gfs,lvm2 的支援</code>
<code>ansible all -m yum -a </code><code>"name=gfs2-utils state=present"</code>
<code>ansible all -m yum -a </code><code>"name=lvm2-cluster state=present"</code>
<code># 在 slave4 中建立 lvm卷</code>
<code>ansible server -m shell -a </code><code>"pvcreate /dev/sda3"</code>
<code>ansible server -m shell -a </code><code>"vgcreate clustervg /dev/sda3"</code>
<code>ansible server -m shell -a </code><code>"lvcreate -L 5G -n clusterlv clustervg"</code>
<code># 配置使 lvm支援 全局鎖及叢集的支援 并啟動 clvmd 服務</code>
<code>ansible all -m shell -a </code><code>'sed -i "s@^\([[:space:]]*locking_type\).*@\1 = 3@g" /etc/lvm/lvm.conf'</code>
<code>ansible all -m shell -a </code><code>"lvmconf --enable-cluster"</code>
<code>ansible all -m service -a </code><code>"name=clvmd state=started enabled=yes"</code>
4. ipsan client的安裝與配置
<code># 用戶端安裝 iscsi-initiator-utils 用以支援 iscsi 協定</code>
<code>ansible client -m yum -a </code><code>"name=iscsi-initiator-utils state=present"</code>
<code># 為用戶端根據 iqn 号與伺服器建立唯一聯系</code>
<code>ansible client -m shell -a </code><code>'echo "InitiatorName=`iscsi-iname -p iqn`" > /etc/iscsi/initiator.iscsi'</code>
<code># 啟動 iscsi 服務</code>
<code>ansible client -m service -a </code><code>"name=iscsi state=started enabled=yes"</code>
<code>ansible client -m service -a </code><code>"name=iscsid state=started enabled=yes"</code>
<code># 各個用戶端發現 iscsi 共享存儲</code>
<code>ansible client -m shell -a </code><code>"iscsiadm -m discovery -t sendtargets -p 172.16.43.4"</code>
<code># 各個用戶端登陸 iscsi 共享存儲</code>
<code>ansible client -m shell -a </code><code>"iscsiadm -m node -T iqn-2014.04.com.king.ipsan:1 -p 172.16.43.4 -l"</code>
# 用戶端執行 iscsi 協定執行探索與登陸的過程
<a href="http://s3.51cto.com/wyfs02/M01/25/39/wKiom1NaWSLi6ucpAAMbumsGEAo724.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/25/39/wKioL1NaWPvhINR7AAUYPZpfqww241.jpg" target="_blank"></a>
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
<a href="http://s3.51cto.com/wyfs02/M02/25/39/wKiom1NaWg2iFVKxAAa0jZQEQXk196.jpg" target="_blank"></a>
# slave1 slave2 上讀寫檔案
<a href="http://s3.51cto.com/wyfs02/M01/25/39/wKioL1NaWg_Dj6aOAAMf-B44ncs199.jpg" target="_blank"></a>
# slave2 上分區操作,之後觀察 slave1的情況
<a href="http://s3.51cto.com/wyfs02/M00/25/39/wKiom1NaWqjD6LRgAATT0izB6cc958.jpg" target="_blank"></a>
# slave4 進行擴容
lvextend -L +2G /dev/clustervg/clusterlv
總結
使用 cman,gfs2,lvm2以及iscsi協定實作共享級SAN裝置,多節點挂載使用的過程
本文轉自My_King1 51CTO部落格,原文連結:http://blog.51cto.com/apprentice/1403131,如需轉載請自行聯系原作者