Gfs+Iscsi+HA+Xen

1. 首先安装三台虚拟机,一台做存储(iscsitarget),两台作为HA节点。
# cat /etc/hosts (复制到3个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,首先在物理机上建立一个镜像文件
# 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将会发现多了一块硬盘为/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为上一步创建的目标增加分区:
# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/xvdb
使用tgtadm允许客户端访问这三个目标逻辑卷:
# tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
使用tgtadm验证所有的目标逻辑卷定义是否正确:
# tgtadm --lld iscsi --op show --mode target | grep Target

Tips:
如果用几块盘或者几个分区做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的配置,要想下一次开机自己运行,把上面的命令添加到/etc/rc.local里面。


5. 配置node节点,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:
如果是多个iscsi qulified,则运行
# 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
这样将会看到有新的盘出现。
这样共享存储就配置完毕了。

6. 接下来我们配置HA

在node1和node2上运行
# yum install system-config-cluster cman rgmanager httpd

我们这里使用system-config-cluster的gui配置方式,比较简单。
首先在一台有图形界面的机器上运行system-config-cluster
或者: 系统->管理->服务器设置->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   [这是创建服务,rgmanager进程启动时会带动服务启动]
  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 复制到node1和node2的相应目录/etc/cluster下,然后各自运行
# /etc/init.d/cman start
# /etc/init.d/rgmanager start
如无意外httpd服务将会启动起来,访问地址为http://192.168.1.111,这样HA配置完毕

8.  接下来我们配置GFS

8.1 我们在两个节点上运行如下命令:
# yum install lvm2-cluster gfs-utils gfs2-utils kmod-gfs-xen
# 这里的kmod-gfs-xen 对应当前运行的内核号,普通内核用kmod-gfs
# 这里需要特别注意,因为默认这个kmod-gfs是没装上的,会导致
# gfs分区挂载错误

8.2 在node1节点上运行如下命令:
# 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 # 如果有多个iscsitarget则换成多个
# 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的锁机制
   -t gfscluster:data 这里的gfscluster是当前clustername
      -j 4 指定多少个挂载点,
    一般为当前cluster内的节点数,不过为了以后扩展一般设置得大一点
# /etc/init.d/clvmd restart
# lvscan
# mount /dev/gfs/data /var/www/html

8.3 在node2节点上运行如下命令:
# 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

如果想开机自动挂载则修改/etc/fstab
/dev/gfs/data /var/www/html gfs defaults 0 0


==============================End=========================================

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐