目的:

四台主机,rs1、rs2、rs3、target,rs1,rs2,rs3提供http服务,target主机把自己的磁盘做成IP SAN 的target供rs1,rs2,rs3使用

规划:

  1. rs1 172.16.1.11 hostname rs1.laoguang.me 
  2.  
  3. rs2 172.16.1.12 hostname rs2.laoguang.me 
  4.  
  5. rs3 172.16.1.13 hostname rs3.laoguang.me 
  6.  
  7. target 172.16.1.14 hostname target.laoguang.me 
  8.  
  9. VIP 172.16.1.1   

一.先构建我们的RHCS高可用集群

准备工作:hostname设置,/etc/hosts下做好解析,ssh 互信,date统一,这是所有集群必须具备的。

1.1 配置准备工作.在rs1上演示,target不是高可用集群中的一个节点,可不配置,不过建议配置

配置hostname

  1. hostname rs1.laoguang.me 
  2. vim /etc/hosts 
  3. 172.16.1.11     rs1.laoguang.me rs1  
  4. 172.16.1.12     rs2.laoguang.me rs2  
  5. 172.16.1.13     rs3.laoguang.me rs3 
  6. 172.16.1.14     target.laoguang.me      target 

配置互信

  1. ssh-keygen -t rsa -P ""    ##会生成密钥在/root/.ssh下,公钥拷贝到rs2的/root/.ssh/authorized_keys 
  2. ssh-copy-id -i /root/.ssh/id_rsa.pub rs2    ##rs1登录rs2不再需要密码 
  3. ssh-copy-id -i /root/.ssh/id_rsa.pub target 

时间同步:(如果有NTP就同步NTP的时间)

  1. date -s 20121127;ssh rs2 'date -s 20121127';ssh rs3 'date -s 20121127';\
  2. ssh target 'date -s 20121127' 

1.2 rs1,rs2,rs3安装httpd

  1. yum -y install httpd 

建立测试页面rs1,rs2,rs3上分别为

  1. echo "<h1>RS1</h1>> /var/www/html/index.html 
  2. echo "<h1>RS2</h1>> /var/www/html/index.html 
  3. echo "<h1>RS3</h1>> /var/www/html/index.html 

启动服务测试各各网站是否运行正常,如果正常继续。

  1. service httpd start 

关闭httpd,并关闭的开机自启动

  1. service httpd stop 
  2. chkconfig httpd off 

1.3 安装RHCS套件需要的openais,cman,rgmanager,gfs2-utils(集群文件系统),system-config-cluster(此为GUI配置工具)

  1. yum -y install cman rgmanager gfs2-utils 

1.4 建立集群WebCluster

  1. ccs_tool create WebCluster   ##会在/etc/cluster中生成cluster.conf集群的配置文件(xml格式) 

1.5 加入node到WebCluster集群

  1. ccs_tool addfence Manual fence_manual  ##RHCS需要先定义隔离设备 
  2. ccs_tool addnode -v 1 -n 1 -f Manual rs1.laoguang.me  ##加入rs1 
  3. ccs_tool addnode -v 1 -n 2 -f Manual rs2.laoguang.me  ##加入rs2 
  4. ccs_tool addnode -v 1 -n 3 -f Manual rs3.laoguang.me  ##加入rs3 
  5. -v 指定每个节点的票数 
  6. -n 指定节点ID 
  7. -f 指定fence设备 

1.6 rs1,rs2,rs3上启动cman

  1. service cman start;     
  2.  ##注:如果局域网内多台机器玩cman的话cman可能启动不成功,其它机器可能是同步的其它主机的CIB 
  3. service rgmanager start; ##启动rgmanager 

1.7 启动system-config-cluster 配置cluster ##由于cman的配置文件为xml格式,笔者还不会用

  1. system-config-cluster 

1.7.1 定义故障转移域

1.7.2 定义IP资源与httpd资源

httpd资源

1.7.3 定义服务

查看集群状态

  1. clustat 
  1. Cluster Status for WebCluster @ Wed Nov 28 18:38:19 2012 
  2. Member Status: Quorate 
  3.  
  4. Member Name                                     ID   Status 
  5. ------ ----                                     ---- ------ 
  6. rs1.laoguang.me                                     1 Online, rgmanager 
  7. rs2.laoguang.me                                     2 Online, rgmanager 
  8. rs3.laoguang.me                                     3 Online, Local, rgmanager 
  9.  
  10. Service Name                           Owner (Last)                State          
  11. ------- ----                           ----- ------                    -----          
  12. service:WebService                     rs1.laoguang.me                 started  

由此可知WebService在rs1上运行,访问http://172.16.1.1测试

二,target中安装scsi-target-utils

2.1 安装rpm包

  1.  yum -y install scsi-target-utils 

2.2 建立一2G分区,我建的是/dev/sda5  ##不要格式化,记得partprobe

2.3 编辑配置文件/etc/tgt/targets.conf,添加一个target,如下

  1. <target iqn.2012-11.me.laoguang.target:sda5> 
  2.         backing-store /dev/sda5           ##后备存储,一般指一个分区,或lvm设备 
  3.         initiator-address 172.16.0.0/16   ##指定intiaor只能是这个地址范围 
  4.         #direct-store /dev/sdb          ##直接存储,通常指一个磁盘如/dev/sda5 
  5.         #incominguser hadoop redhat    ##定义基于账户认证Initiator,后面的是账号与密码 
  6.         #outgoinguser userA secretpassA  ##Initiator也可以验证target,这个target的账号密码 
  7.     </target> 
  8. ##targetname 格式 iqn-name: iqn.yyyy-mm.<reversed domain name>[identifer] 
  1. -------------------------------不是很华丽的分隔线-------------------------------------
  2.     我们也可以有命令行来配置,只不过重启后会失效哦 
  3.     用法:tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION].. 
  4.     新增target: 
  5.     tgtadm --lld iscsi --op new --mode target --tid 1 --targetname \
  6. iqn.2012-11.me.laoguang.target:sda5 
  7.     显示新增的target: 
  8.     tgtadm --lld iscsi --op show --mode target 
  9.     新增一localunit: 
  10.     tgtadm --lld -iscsi --op new --mode localunit --tid 1 --lun 1 --backing-store /dev/sda5 
  11.     新增ACL允许172.16.0.0/16网段使用: 
  12.     tgtadm --lld iscsi --op bind --tid 1 --initiator-address 172.16.0.0/16 
  13.     新增账户认证: 
  14.     建立账户: 
  15.     tgtadm --lld iscsi --op new --mode account  --user hadoop --password redhat 
  16.     查看新建账户: 
  17.     tgtadm --lld iscsi --op show --mode account 
  18.     绑定账户到target: 
  19.     tgtadm --lld iscsi --op bind --mode account --tid 1 --user hadoop 
  20.     查看target信息: 
  21.     tgtadm --lld iscsi --op show --mode target 
  22.     -------------------------------不是很华丽的分隔线--------------------------- 

2.4 启动tgtd服务,验证target是否分享出去

  1. service tgtd start 
  2. tgtadm --lld iscsi --op show --mode target 
  3.  
  4.     Target 1: iqn.2012-11.me.laoguang.target:sda5 
  5.     System information: 
  6.         Driver: iscsi 
  7.         State: ready 
  8.     I_T nexus information: 
  9.     LUN information: 
  10.         LUN: 0 
  11.             Type: controller 
  12.             SCSI ID: IET     00010000 
  13.             SCSI SN: beaf10 
  14.             Size: 0 MB, Block size: 1 
  15.             Online: Yes 
  16.             Removable media: No 
  17.             Readonly: No 
  18.             Backing store type: null 
  19.             Backing store path: None 
  20.             Backing store flags:  
  21.         LUN: 1 
  22.             Type: disk 
  23.             SCSI ID: IET     00010001 
  24.             SCSI SN: beaf11 
  25.             Size: 1012 MB, Block size: 512 
  26.             Online: Yes 
  27.             Removable media: No 
  28.             Readonly: No 
  29.             Backing store type: rdwr 
  30.             Backing store path: /dev/sda5 
  31.             Backing store flags:  
  32.     Account information: 
  33.     ACL information: 
  34.         172.16.0.0/16 

验证正常,禁止tgt开机启动

  1. chkconfig tgtd off 

三,在rs1,rs2,rs3上安装iscsi-initiator-utils

  1. yum -y install iscsi-initator-utils ##很可能已经安装了 
  2. echo "InitiatorAlias=rs1>> /etc/iscsi/initiatorname.iscsi  ##分别给个别名 
  3. echo "InitiatorAlias=rs2>> /etc/iscsi/initiatorname.iscsi 
  4. echo "InitiatorAlias=rs3>> /etc/iscsi/initiatorname.iscsi 

3.1 启动iscsi,发现共享磁盘target

  1. service iscsi start 
  2. iscsiadm -m discovery -t sendtargets -p 172.16.1.14   ##发现target 
  3. 172.16.1.14:3260,1 iqn.2012-11.me.laoguang.target:sda5 

3.2 挂载(登录)共享磁盘

  1. iscsiadm -m node -T  iqn.2012-11.me.laoguang.target:sda5 -p 172.16.1.14 -l 
  2. -m 指定模式 man 一下 
  3. -t sendtargets 在discovery模式下使用 
  4. -p portal 指定target的IP与端口,如果是默认端口3260可省略 
  5. -l login  登录 
  6. -u logout 个为登出 
  1. fdisk -l   ##查看新磁盘我的是sda5 

rs1,rs2,rs3同样登录

禁止它们开机启动

  1. chkconfig iscsi off;chkconfig iscsid off 

3.3 安装lvm2-cluster,让gfs2支持卷组

  1. lvmconf --enable-cluster 
  2. service clvmd start 

3.4 rs1上对/data/sdb创建lvm卷组

  1. pvcreate /dev/sdb 
  2. vgcreate myvg /dev/sdb 
  3. lvcreate -L 800M --name mydata myvg 

查看其它节点中是否生成了lvm

  1. ls /dev/myvg/mydata 

3.5 rs1,rs2,rs3启动gfs2,在rs1中格式化gfs格式的磁盘

  1. mkfs.gfs2 -p lock_dlm -t WebCluster:mylvm -j 3 /dev/myvg/mydata 

3.6 rs1,rs2,rs3挂载/dev/myvg/mydata到/var/www/html中,建立测试文件

  1. mount /dev/myvg/mydata /var/www/html 
  2. echo "GFS Storage" > /var/www/html/index.html 

rs1,rs2同时打开/var/www/html/index.html 查看是否有上锁警告

访问http://172.16.1.1查看是否能显示新主页

到此整个过程演示完毕,最后表示cman不好用啊,kill 掉ccsd重启服务,实在不行重启主机。记的不要让资源开机启动,比如iscsi,如要连接不上target,机器会等timeout后才会继续的。如果有问题请留言。如果觉的不错就赞一下吧,写篇文档不容易啊,每个命令都是试过以后复制过来的,所以尽管实验。