Gfs+Iscsi+HA+Xen
1. 首先安裝三臺虛擬機(jī),一臺做存儲(iscsitarget),兩臺作為HA節(jié)點(diǎn),。
# cat /etc/hosts (復(fù)制到3個(gè)host上)
192.168.1.10 data.example.com data
192.168.1.20 node1.example.com node1
192.168.1.30 node2.example.com node2
2. 配置iscsitarget,首先在物理機(jī)上建立一個(gè)鏡像文件
# dd if=/dev/zero of=/virtualization/data.img bs=1M count=1024
3. 修改data的配置文件--/etc/xen/data
# cat /etc/xen/data
name = "data"
uuid = "d22a3b61-5574-2539-ed36-6a004144c725"
maxmem = 128
memory = 128
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ ]
disk = [ "tap:aio:/virtualization/data.img,xvda,w","tap:aio:/virtualization/virt.img,xvdb,w" ]
vif = [ "mac=00:16:3e:5a:0c:e5,bridge=xenbr0" ]
4. 重啟data將會(huì)發(fā)現(xiàn)多了一塊硬盤為/dev/xvdb,接下來我們就可以配置iscsitarget了
# yum install scsi-target-utils
# /etc/init.d/tgtd start
# chkconfig tgtd on
使用tgtadm定義iscsi target的qualified名字:
# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2009-07.com.example
使用tgtadm為上一步創(chuàng)建的目標(biāo)增加分區(qū):
# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/xvdb
使用tgtadm允許客戶端訪問這三個(gè)目標(biāo)邏輯卷:
# tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
使用tgtadm驗(yàn)證所有的目標(biāo)邏輯卷定義是否正確:
# tgtadm --lld iscsi --op show --mode target | grep Target
Tips:
如果用幾塊盤或者幾個(gè)分區(qū)做iscsi target的話,命令格式要變成這樣:
# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2009-07.com.example.disk1
# tgtadm --lld iscsi --op new --mode target --tid 2 -T iqn.2009-07.com.example.disk2
# tgtadm --lld iscsi --op new --mode target --tid 3 -T iqn.2009-07.com.example.disk3
# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb1
# tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 1 -b /dev/sdb2
# tgtadm --lld iscsi --op new --mode logicalunit --tid 3 --lun 1 -b /dev/sdb3
# tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
# tgtadm --lld iscsi --op bind --mode target --tid 2 -I ALL
# tgtadm --lld iscsi --op bind --mode target --tid 3 -I ALL
完成了iscsi target的配置,要想下一次開機(jī)自己運(yùn)行,把上面的命令添加到/etc/rc.local里面,。
5. 配置node節(jié)點(diǎn),node1和node2做相同操作:
# yum install iscsi-initiator-utils
# chkconfig iscsi on
# chkconfig iscsid on
discovery iscsitarget上的邏輯卷
# iscsiadm -m discovery -t sendtargets -p 192.168.1.10
如果列出data上的iscsi qualified,說明成功
使用iscsiadm登錄target:
# iscsiadm -m node -T iqn.2009-07.com.example -p 192.168.1.10 -l
Tips:
如果是多個(gè)iscsi qulified,則運(yùn)行
# iscsiadm -m node -T iqn.2009-07.com.example.disk1 -p 192.168.1.10 -l
# iscsiadm -m node -T iqn.2009-07.com.example.disk2 -p 192.168.1.10 -l
# iscsiadm -m node -T iqn.2009-07.com.example.disk3 -p 192.168.1.10 -l
# fdisk -l
這樣將會(huì)看到有新的盤出現(xiàn)。
這樣共享存儲就配置完畢了,。
6. 接下來我們配置HA
在node1和node2上運(yùn)行
# yum install system-config-cluster cman rgmanager httpd
我們這里使用system-config-cluster的gui配置方式,,比較簡單。
首先在一臺有圖形界面的機(jī)器上運(yùn)行system-config-cluster
或者: 系統(tǒng)->管理->服務(wù)器設(shè)置->Cluster Management
6.1 Choose a name for the cluster: gfscluster
[OK]
6.2 Cluster Nodes -> Add a Cluster Node
Cluster Name: node1
[OK]
Cluster Nodes -> Add a Cluster Node
Cluster Name: node2
[OK]
6.3 Fence Devices -> Add a Fence Device -> choice Manual Fencing/Virtual Machine Fencing
Name: fence1
Fence Devices -> Add a Fence Device -> choice Manual Fencing/Virtual Machine Fencing
Name: fence2
6.4 Cluster Nodes -> node1 -> Manage Fencing For This Node -> Add a New Fence Level -> Fence-Level-1 -> Add a New Fence to this level -> fence1
-> [OK] -> [Close]
Cluster Nodes -> node2 -> Manage Fencing For This Node -> Add a New Fence Level -> Fence-Level-1 -> Add a New Fence to this level -> fence2
-> [OK] -> [Close]
6.5 Failover Domains -> Create a Failover Domains -> failover
[OK]
Available Cluster Nodes -> node1
Available Cluster Nodes -> node2
[Close]
6.6 Resources -> Create a Resource
Select a Resource Type: IP Address
192.168.1.111
[OK]
Resources -> Create a Resource
Select a Resource Type: Script
Name: httpd_script
File: /etc/init.d/httpd
[OK]
6.7 Services -> Create a Service [這是創(chuàng)建服務(wù),rgmanager進(jìn)程啟動(dòng)時(shí)會(huì)帶動(dòng)服務(wù)啟動(dòng)]
Name: httpd_service
[OK]
Failover Domain: failover
Recovery Policy: Relocate
Add a Share Resource to this service -> 192.168.1.111 -> [OK]
Add a Share Resource to this service -> httpd_script -> [OK]
6.8 File -> Save
7. 把保存下來的文件/etc/cluster/cluster.conf 復(fù)制到node1和node2的相應(yīng)目錄/etc/cluster下,然后各自運(yùn)行
# /etc/init.d/cman start
# /etc/init.d/rgmanager start
如無意外httpd服務(wù)將會(huì)啟動(dòng)起來,,訪問地址為http://192.168.1.111,,這樣HA配置完畢
8. 接下來我們配置GFS
8.1 我們在兩個(gè)節(jié)點(diǎn)上運(yùn)行如下命令:
# yum install lvm2-cluster gfs-utils gfs2-utils kmod-gfs-xen
# 這里的kmod-gfs-xen 對應(yīng)當(dāng)前運(yùn)行的內(nèi)核號,普通內(nèi)核用kmod-gfs
# 這里需要特別注意,因?yàn)槟J(rèn)這個(gè)kmod-gfs是沒裝上的,會(huì)導(dǎo)致
# gfs分區(qū)掛載錯(cuò)誤
8.2 在node1節(jié)點(diǎn)上運(yùn)行如下命令:
# modprobe gfs
# modprobe gfs2
# chkconfig gfs on
# chkconfig gfs2 on
# chkconfig clvmd on
# /etc/init.d/gfs restart
# /etc/init.d/gfs2 restart
# /etc/init.d/clvmd restart
# pvcreate /dev/sdb # 如果有多個(gè)iscsitarget則換成多個(gè)
# vgcreate gfs /dev/sdb
# lvcreate -n data -L 900M gfs
# mkfs.gfs -p lock_dlm -t gfscluer:data -j 4 /dev/gfs/data
這里的-p lock_dlm 是指定使用dlm的鎖機(jī)制
-t gfscluster:data 這里的gfscluster是當(dāng)前clustername
-j 4 指定多少個(gè)掛載點(diǎn),
一般為當(dāng)前cluster內(nèi)的節(jié)點(diǎn)數(shù),不過為了以后擴(kuò)展一般設(shè)置得大一點(diǎn)
# /etc/init.d/clvmd restart
# lvscan
# mount /dev/gfs/data /var/www/html
8.3 在node2節(jié)點(diǎn)上運(yùn)行如下命令:
# modprobe gfs
# modprobe gfs2
# chkconfig gfs on
# chkconfig gfs2 on
# chkconfig clvmd on
# /etc/init.d/gfs restart
# /etc/init.d/gfs2 restart
# /etc/init.d/clvmd restart
# lvscan
# mount /dev/gfs/data /var/www/html
如果想開機(jī)自動(dòng)掛載則修改/etc/fstab
/dev/gfs/data /var/www/html gfs defaults 0 0