还记得小编在前面大篇幅的介绍HA群集吧,使用heartbeat和rhcs都实现过了吧,加上这篇博客介绍的corosync+pacemaker那么就算是完整啦,小编觉得未来高可用性群集的搭建会广泛使用它们俩啦,Conrosync是从Openais这个大项目中分支出来的一个项目,而Pacemaker是heartbeat v3版本中分裂出来专门用于提供高可用集群CRM的组件,东西有点多啦,当然我的总结能力有限啦,得感谢我的好室友(wpp)的帮忙啦。。。。

---------------------------------------------     
地址规划:|

*HA架构服务器*     
node1.a.com  eth0-ip:192.168.102.101 eth1:192.168.1.100      
node2.a.com  eth0-ip:192.168.102.102 eth1:192.168.1.200      
Vip:192.168.102.200       
注:eth0桥接、eth1 Host-Only      
---------------------------------------------------------      
*Target服务器端*      
eth0-ip:192.168.1.10      
注:eth0 Host-Only      
---------------------------------------------------------      
***配置步骤***      
—————————————————————————————


Step1:准备工作       
--------------      
①分别在给个节点上配置静态ip地址(service network restart)      
②进行节点间的时钟同步.(hwclock / date -s "2013-06-14 **:**:**")      
③修改HA节点的主机名,使相互能进行名称解析.      
vim /etc/sysyconfig/network       
 1 NETWORKING=yes      
 2 NETWORKING_IPV6=yes      
 3 HOSTNAME=node1.a.com    //对于节点2来说主机名是node2.a.com                         
vim /etc/hosts      
 3 127.0.0.1       localhost.localdomain localhost      
 4 ::1             localhost6.localdomain6 localhost6      
 5 192.168.102.101 node1.a.com node1      
 6 192.168.102.102 node2.a.com node2      
hostname node1.a.com      
④实现节点间的无障碍通信(通信时不需要输入对方的root密码,主要是用到ssh啦,把各自节点的公钥给对方就是了)      
node1:      
ssh-keygen -t rsa                      //生成node1节点的ssh服务的公钥和私钥对      
cd /root/.ssh/      
sh-copy-id -i id_rsa.pub  node2 //将node1的公钥传递给node2      
输入node2的root密码:123456      
node2:      
ssh-keygen -t rsa                      //生成node2节点的ssh服务的公钥和私钥对      
cd /root/.ssh/      
sh-copy-id -i id_rsa.pub  node1  //将node1的公钥传递给node1      
输入node1的root密码:123456      
node1上无障碍通信测试:scp /etc/fstab node2(不再需要root密码)      
⑤node1(node2)上配置本地yum源,挂载光盘,安装Corosync相关软件包(小编我放到附件里啦)      
yum localinstall  cluster-glue-1.0.6-1.6.el5.i386.rpm  \      
                 cluster-glue-libs-1.0.6-1.6.el5.i386.rpm \   
                 corosync-1.2.7-1.1.el5.i386.rpm \      
                 corosynclib-1.2.7-1.1.el5.i386.rpm  \      
                 heartbeat-3.0.3-2.3.el5.i386.rpm  \      
                 heartbeat-libs-3.0.3-2.3.el5.i386.rpm \       
                 libesmtp-1.0.4-5.el5.i386.rpm \      
                 pacemaker-1.1.5-1.1.el5.i386.rpm \      
                 pacemaker-libs-1.1.5-1.1.el5.i386.rpm  \      
                 perl-TimeDate-1.16-5.el5.noarch.rpm  \      
                 resource-agents-1.0.4-1.1.el5.i386.rpm  --nogpgcheck      
rpm -ivh openais-1.1.3-1.6.el5.i386.rpm      
rpm -ivh openaislib-1.1.3-1.6.el5.i386.rpm      
----------------------------


Step2:进行Corosync的具体配置       
----------------------------      
①拷贝生成配置文件,并进行相关的配置      
cd /etc/corosync/      
cp -p corosync.conf.example corosync.conf       
vim  corosync.conf      
# Please read the corosync.conf.5 manual page      
compatibility: whitetank             //表示兼容corosync 0.86的版本,向后兼容,兼容老的版本,一些新的功能可能无法实用

totem {                                     //图腾的意思  ,多个节点传递心跳时的相关协议的信息     
       version: 2                          //版本号      
       secauth: off                       //是否打开安全认证      
       threads: 0                         //多少个线程  0 :无限制      
       interface {      
               ringnumber: 0      
               bindnetaddr: 192.168.102.0          //通过哪个网络地址进行通讯,可以给个主机地址      
               mcastaddr: 226.94.1.1      
               mcastport: 5405      
       }      
}

logging {                                  //进行的日志的相关选项配置     
       fileline: off                        //一行显示所有的日志信息      
       to_stderr: no                    //是否发送标准的出错到标准的出错设备上(屏幕,必然要关闭啦,目的你懂的)      
       to_logfile: yes                  //将信息输出到日志文件中      
       to_syslog: yes                 //同时将信息写入到系统日志中(两个用一个,占系统资源)      
       logfile: /var/log/cluster/corosync.log   //***日志文件的存放目录,需要手动创建,不创建,服务将会起不来***      
       debug: off                         //是否开启debug功能,系统排查时,可以启用该功能                                            
       timestamp: on                 //日志是否记录时间      
                                              //以下是openais的东西,可以不用打开      
       logger_subsys {      
               subsys: AMF      
               debug: off      
       }      
}      
amf {      
       mode: disabled      
}      
service {                                  //补充一些东西,前面只是底层的东西,因为要用pacemaker      
       ver: 0      
       name: pacemaker      
}      
aisexec {                                  //虽然用不到openais ,但是会用到一些子选项      
       user: root      
       group: root      
}      
②为了方便其他主机加入该集群,需要认证,生成一个authkey          //和heartbeat是一样的啦,只有信任的节点才会有,一定程度上保证了群集的安全性啦      
[root@node1 corosync]# corosync-keygen       
[root@node1 corosync]# ll      
total 28      
-rw-r--r-- 1 root root 5384 Jul 28  2010 amf.conf.example      
-r-------- 1 root root  128 May  7 16:16 authkey      
-rw-r--r-- 1 root root  513 May  7 16:14 corosync.conf      
-rw-r--r-- 1 root root  436 Jul 28  2010 corosync.conf.example      
drwxr-xr-x 2 root root 4096 Jul 28  2010 service.d      
drwxr-xr-x 2 root root 4096 Jul 28  2010 uidgid.d      
③创建日志文件的存放目录                     //如果不创建的话corosync是起不来的,上面的配置文件将日志放在这个目录下啦      
[root@node1 corosync]# mkdir /var/log/cluster      
④进行节点间的配置同步.      
[root@node1 corosync]# scp -p authkey  corosync.conf node2:/etc/corosync/      
authkey                                          100%  128     0.1KB/s   00:00    
corosync.conf                                    100%  513     0.5KB/s   00:00       
[root@node1 corosync]# ssh node2 'mkdir /var/log/cluster'      
⑤启动服务      
[root@node1 corosync]# service corosync start      
[root@node1 corosync]# ssh node2 '/etc/init.d/corosync start'            //很神奇吧,在节点一上可以控制节点二的指令啦      
⑥查看corosync的引擎启动情况      
[root@node1 corosync]# grep -i  -e "corosync cluster engine" -e "configuration file" /var/log/messages  
⑦查看初始化成员节点通知是否发出      
[root@node1 corosync]# grep -i totem /var/log/messages       
⑧检查过程中是否有错误产生      
[root@node1 corosync]# grep -i error:  /var/log/messages  |grep -v unpack_resources      
⑨检查pacemaker是否已经启动了      
[root@node1 corosync]# grep -i pcmk_startup /var/log/messages      
⑩在任何一个节点上  查看集群的成员状态      
[root@node1 ~]# crm status      
============      
Last updated: Fri Jun 14 22:06:21 2013      
Stack: openais      
Current DC: node1.a.com - partition with quorum      
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f      
2 Nodes configured, 2 expected votes      
0 Resources configured.      
============

Online: [ node1.a.com node2.a.com ]     
-------------------------------------------------------------------


Step3:提供高可用性的服务       
--------------------------      
Corosync中,定义服务可以用两种接口:      
1:图形(hb_gui)Heartbeat的一种图形工具,需要安装Heartbeat需要的软件包      
yum localinstall heartbeat-2.1.4-9.el5.i386.rpm \      
                heartbeat-gui-2.1.4-9.el5.i386.rpm \      
                heartbeat-pils-2.1.4-10.el5.i386.rpm \      
                heartbeat-stonith-2.1.4-10.el5.i386.rpm \      
                libnet-1.1.4-3.el5.i386.rpm \      
                perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck      
安装完后:hb_gui图形进行群集配置      
2:crm(pacemaker提供的一种shell)                       //很像设备的命令行啦,很好用的      
①显示当前的配置信息 crm configure show      
②进行配置文件的语法检测 crm_verify  -L

[root@node1 corosync]# crm_verify  -L     
crm_verify[878]: 2013/06/14_17:29:33 ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been defined      
crm_verify[878]: 2013/06/14_17:29:33 ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option      
crm_verify[878]: 2013/06/14_17:29:33 ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity      
Errors found during check: config not valid      
-V may provide more details      
可以看到有stonith错误,在高可用的环境里面,会禁止使用任何资源      
可以禁用stonith       
方法:      
[root@node1 corosync]# crm                                   //进入crm的shell模式下      
crm(live)# configure                                                 //进入全局配置模式      
crm(live)configure# property stonith-enabled=false  //关闭stonith机制      
crm(live)configure# commit                                     //提交保存配置信息      
crm(live)configure# show                                         //显示当前配置      
crm(live)configure# exit      
再次进行语法检测:crm_verify  -L 就不会报错了.      
③群集资源类型4种      
[root@node1 corosync]# crm      
crm(live)# configure  
crm(live)# help      
primitive   本地主资源 (只能运行在一个节点上)      
group       把多个资源轨道一个组里面,便于管理      
clone       需要在多个节点上同时启用的  (如ocfs2  ,stonith ,没有主次之分)      
master      有主次之分,如drbd      
。。。。。      
。。。。。      
④用资源代理进行服务的配置      
[root@node1 corosync]# crm      
crm(live)# ra  
crm(live)# classes      
heartbeat      
lsb      
ocf / heartbeat pacemaker      
stonith      
⑤查看资源代理的脚本列表      
[root@node1 corosync]# crm      
crm(live)# ra       
crm(live)ra# list lsb      
NetworkManager      acpid               anacron             apmd      
atd                 auditd              autofs              avahi-daemon      
avahi-dnsconfd      bluetooth           capi                conman      
corosync            cpuspeed            crond               cups      
cups-config-daemon  dnsmasq             drbd                dund      
firstboot           functions           gpm                 haldaemon      
halt                heartbeat           hidd                hplip      
httpd               ip6tables           ipmi                iptables      
irda                irqbalance          iscsi               iscsid      
isdn                kdump               killall             krb524      
kudzu               lm_sensors          logd                lvm2-monitor      
mcstrans            mdmonitor           mdmpd               messagebus      
microcode_ctl       multipathd          netconsole          netfs      
netplugd            network             nfs                 nfslock      
nscd                ntpd                o2cb                ocfs2      
openais             openibd             pacemaker           pand      
pcscd               portmap             psacct              rawdevices      
rdisc               readahead_early     readahead_later     restorecond      
rhnsd               rpcgssd             rpcidmapd           rpcsvcgssd      
saslauthd           sendmail            setroubleshoot      single      
smartd              sshd                syslog              vncserver      
wdaemon             winbind             wpa_supplicant      xfs      
xinetd              ypbind              yum-updatesd       
查看ocf的heartbeat  
crm(live)ra# list ocf  heartbeat      
⑥使用info或meta显示一个资源的详细信息      
meta ocf:heartbeat:IPaddr      
⑦配置资源(IP地址:vip-192.168.102.200 Web服务:httpd)      
[root@node1 ~]# crm      
crm(live)# configure       
crm(live)configure# primitive webip ocf:heartbeat:IPaddr  params ip=192.168.2.100      
crm(live)configure# show   //查看      
node node1.a.com      
node node2.a.com      
primitive webip ocf:heartbeat:IPaddr \      
   params ip="192.168.102.200"      
property $id="cib-bootstrap-options" \      
   dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \      
   cluster-infrastructure="openais" \      
   expected-quorum-votes="2" \      
   stonith-enabled="false"      
crm(live)configure# commit  //提交   
crm(live)# status           //状态查询      
============      
Last updated: Mon May  7 19:39:37 2013      
Stack: openais      
Current DC: node1.a.com - partition with quorum      
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f      
2 Nodes configured, 2 expected votes      
1 Resources configured.      
============

Online: [ node1.a.com node2.a.com ]

webip    (ocf::heartbeat:IPaddr):    Started node1.a.com     
可以看出该资源在node1上启动      
使用ifconfig 在node1上进行查看      
[root@node1 ~]# ifconfig      
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:25:D2:BC  
         inet addr:192.168.102.200  Bcast:192.168.102.255  Mask:255.255.255.0      
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1      
         Interrupt:67 Base address:0x2000       
定义httpd资源      
在node1和node2上安装httpd服务,不需开机启动.      
yum  install httpd      
chkconfig httpd off      
查看httpd服务的资源代理:lsb      
[root@node1 corosync]# crm      
crm(live)# ra       
crm(live)ra# list lsb      
查看httpd的参数      
crm(live)ra# meta lsb:httpd      
定义httpd的资源      
crm(live)configure# primitive webserver lsb:httpd      
crm(live)configure# show      
node node1.a.com      
node node2.a.com      
primitive webip ocf:heartbeat:IPaddr \      
   params ip="192.168.102.200"      
primitive webserver lsb:httpd      
property $id="cib-bootstrap-options" \      
   dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \      
   cluster-infrastructure="openais" \      
   expected-quorum-votes="2" \      
   stonith-enabled="false"      
crm(live)# status      
============      
Last updated: Mon May  7 20:01:12 2013      
Stack: openais      
Current DC: node1.a.com - partition with quorum      
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f      
2 Nodes configured, 2 expected votes      
2 Resources configured.      
============

Online: [ node1.a.com node2.a.com ]

webIP    (ocf::heartbeat:IPaddr):    Started node1.a.com     
webserver    (lsb:httpd):    Started node2.a.com

发现httpd已经启动了,但是在node2节点上     
(高级群集服务资源越来越多,会分布在不同的节点上,以尽量负载均衡)      
需要约束在同一个节点上,定义成一个组      
⑧定义一个资源组,将资源进行绑定      
crm(live)# configure       
crm(live)configure# help group

The `group` command creates a group of resources.

Usage:     
...............      
       group <name> <rsc> [<rsc>...]      
         [meta attr_list]      
         [params attr_list]

       attr_list :: [$id=<id>] <attr>=<val> [<attr>=<val>...] | $id-ref=<id>     
...............      
Example:      
...............      
       group internal_www disk0 fs0 internal_ip apache \      
         meta target_role=stopped      
...............      
定义组进行资源绑定      
crm(live)configure# group web-res  webip  webserver       
crm(live)configure# show      
node node1.a.com      
node node2.a.com      
primitive webip ocf:heartbeat:IPaddr \      
   params ip="192.168.102.200"      
primitive webserver lsb:httpd      
group web-res webip webserver      
property $id="cib-bootstrap-options" \      
   dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \      
   cluster-infrastructure="openais" \      
   expected-quorum-votes="2" \      
   stonith-enabled="false"      
查看群集的状态    
crm(live)# status      
============      
Last updated: Mon May  7 20:09:06 2013      
Stack: openais      
Current DC: node1.a.com - partition with quorum      
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f      
2 Nodes configured, 2 expected votes      
1 Resources configured.      
============

Online: [ node1.a.com node2.a.com ]

Resource Group: web-res     
webIP    (ocf::heartbeat:IPaddr):    Started node1.a.com      
webserver    (lsb:httpd):    Started node1.a.com      
(现在ip地址和 httpd都已经在node1上了)      
------------------------------------------------------------


Step4:进行节点间的切换测试.       
----------------------------      
node1:将corosync服务停掉,在节点node2上观察      
service corosync stop      
[root@node2 corosync]# crm  status      
============      
Last updated: Mon May  7 20:16:58 2013      
Stack: openais      
Current DC: node2.a.com - partition WITHOUT quorum      
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f      
2 Nodes configured, 2 expected votes      
1 Resources configured.      
============

Online: [ node2.a.com ]     
OFFLINE: [ node1.a.com ]      
可以看到:由于node2节点上没有票数,导致不能正常的资源切换.      
解决方法:忽略仲裁磁盘选项.quorum      
可选参数有:      
ignore  (忽略)      
freeze  (冻结,表示已经启用的资源继续实用,没有启用的资源不能启用)      
stop    (默认)       
suicide (所有的资源杀掉)      
再node1上:      
service corosync start      
[root@node1 corosync]# crm      
crm(live)# configure       
crm(live)configure# property no-quorum-policy=ignore      
crm(live)configure# commit      
crm(live)configure# show   (在次查看quorum 的属性)      
node node1.a.com      
node node2.a.com      
primitive webip ocf:heartbeat:IPaddr \      
   params ip="192.168.102.200"      
primitive webserver lsb:httpd      
group web-res webip webserver      
property $id="cib-bootstrap-options" \      
   dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \      
   cluster-infrastructure="openais" \      
   expected-quorum-votes="2" \      
   stonith-enabled="false" \      
   no-quorum-policy="ignore"   (已经关闭)      
再次进行切换测试,资源轮转正常!      
------------------------------------------------------


Step5:corosync的常见指令       
①crm_attribute    修改集群的全局属性信息

②crm_resource     修改资源     
③6crm_node        管理节点      
crm_node   -e      查看节点的时代(配置文件修改过几次了)      
crm_node   -q      显示当前节点的票数      
1      
④cibadmin         集群配置的工具      
-u, --upgrade        Upgrade the configuration to the latest syntax      
-Q, --query        Query the contents of the CIB      
-E, --erase        Erase the contents of the whole CIB      
-B, --bump        Increase the CIB's epoch value by 1      
如果某一个资源定义错了,就可以实用该工具进行删除      
-D, --delete        Delete the first object matching the supplied criteria, Eg.      
也可以在crm的命令行下      
crm(live)configure# delete       
usage: delete <id> [<id>...]      
也可以在该模式下执行edit      
执行完毕后,commit 提交      
--------------------------------------------------------------------


Step6:ISCSI(IP-SAN)存储配置详情       
-----------------------------------      
一:target(后方的存储介质)      
①新添加一块磁盘(或分区)      
fdisk -l      
分区:fdisk /dev/sda(n--p--4--+2g-w)---添加一块磁盘sda6       
更新分区表:(cat /proc/partitions)      
partprobe  /dev/sda(不重启,更新分区表)      
②安装target需要的软件包,启动服务.      
cd /mnt/cdrom/ClusterStorage      
rpm -ivh perl-Config-General-2.40-1.e15.noarchrpm       
rpm -ivh scsi-target-utils-0.0-5.20080917snap.e15.i386.rpm      
service tgtd start      
③添加新的iscsi的target.      
添加:tgtadm --lld iscsi --op new --mode target --tid=1 --targetname iqn.2013-06.com.a.target:disk      
显示:tgtadm --lld iscsi --op show --mode target      
存储:tgtadm --lld iscsi --op new --mode=logicalunit --tid=1  --lun=1 --backing-store /dev/sda4      
            --lld [driver] --op new --mode=logicalunit --tid=[id] --lun=[lun] --backing-store [path]      
验证:tgtadm --lld iscsi --op bind --mode=target --tid=1 --initiator-address=192.168.1.0/24      
     tgtadm --lld [driver] --op bind --mode=target --tid=[id] --initiator-address=[address]      
④将配置添加到配置文件中,可以开机自动加载.      
vim /etc/tgt/targets.conf      
<target iqn.2013-06.com.a.target:disk>      
       backing-store /dev/sda6      
       initiator-address 192.168.1.0/24      
</target>      
二:initiator(node1和node2)      
cd /mnt/cdrom/Server      
rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.i386.rpm      
service iscsi start      
发现:iscsiadm --mode discovery --type sendtargets --portal 192.168.1.10      
认证登录:iscsiadm --mode node --targetname iqn.2013-06.com.a.target:disk --portal 192.168.1.10:3260 --login      
⑤Target端显示在线的用户情况      
tgt-admin -s      
Target 1: iqn.2013-06.com.a.target:disk      
   System information:      
       Driver: iscsi      
       State: ready      
   I_T nexus information:      
       I_T nexus: 1      
           Initiator: iqn.2013-06.com.a.realserver2      
           Connection: 0      
               IP Address: 192.168.1.200      
       I_T nexus: 2      
           Initiator: iqn.2013-06.com.a.realserver1      
           Connection: 0      
               IP Address: 192.168.1.100      
   LUN information:      
       LUN: 0      
           Type: controller      
           SCSI ID: deadbeaf1:0      
           SCSI SN: beaf10      
           Size: 0 MB      
           Online: Yes      
           Removable media: No      
           Backing store: No backing store      
       LUN: 1      
           Type: disk      
           SCSI ID: deadbeaf1:1      
           SCSI SN: beaf11      
           Size: 4178 MB      
           Online: Yes      
           Removable media: No      
           Backing store: /dev/sda6      
   Account information:      
   ACL information:      
       192.168.1.0/24      
⑥node1和node2上查看本地的磁盘列表。      
fdisk -l      
Disk /dev/sdb: 4178 MB, 4178409984 bytes      
129 heads, 62 sectors/track, 1020 cylinders      
Units = cylinders of 7998 * 512 = 4094976 bytes

Disk /dev/sdb doesn't contain a valid partition table     
-------------------------------------------------------


Step7:将新的磁盘sdb格式为OCFS2群集文件系统.       
------------------------------------------      
①在两个节点上安装需要的软件包      
yum localinstall ocfs2-2.6.18-164.el5-1.4.7-1.el5.i686.rpm \       
                ocfs2-tools-1.4.4-1.el5.i386.rpm \      
                ocfs2console-1.4.4-1.el5.i386.rpm      
②对主配置文件进行配置.      
方法一:手动创建主配置文件      
mkdir  /etc/ocfs2/      
vim cluster.conf       
node:      
       ip_port = 7777      
       ip_address = 192.168.102.101      
       number = 0      
       name = node1.a.com      
       cluster = ocfs2

node:     
       ip_port = 7777      
       ip_address = 192.168.102.102      
       number = 1      
       name = node2.a.com      
       cluster = ocfs2

cluster:     
       node_count = 2      
       name = ocfs2      
进行节点间的配置同步.      
scp -r /etc/ocfs2  node2:/etc/       
方法二:GUI图形下进行配置      
ocfs2console      
③两个节点上分别加载o2cb模块,启动服务.      
/etc/init.d/o2cb load      
  Loading module "configfs":OK      
  Mounting configfs filesystem at /config:OK      
  Loading module "ocfs2_nodemanager":OK      
  Loading module "ocfs2_dlm":OK      
  Loading module "ocfs2_dlmfs":OK

/etc/init.d/ocfs2 start     
chkconfig ocfs2 on       
/etc/init.d/o2cb online ocfs2      
/etc/init.d/o2cb configure      
Configuring the O2CB driver.      
这将配置 O2CB 驱动程序的引导属性。以下问题将决定在引导时是否加载驱动程序。当前值将在方括号(“[]”)中显示。按 而不键入答案将保留该当前值。Ctrl-C 将终止。      
Load O2CB driver on boot (y/n) [n]:y      
Cluster to start on boot (Enter "none" to clear) [ocfs2]:ocfs2      
Writing O2CB configuration:OK      
Loading module "configfs":OK      
Mounting configfs filesystem at /config:OK      
Loading module "ocfs2_nodemanager":OK      
Loading module "ocfs2_dlm":OK      
Loading module "ocfs2_dlmfs":OK      
Mounting ocfs2_dlmfs filesystem at /dlm:OK      
Starting cluster ocfs2:OK      
/etc/init.d/o2cb status      
  Driver for "configfs": Loaded      
  Filesystem "configfs": Mounted      
  Driver for "ocfs2_dlmfs": Loaded      
  Filesystem "ocfs2_dlmfs": Mounted      
  Checking O2CB cluster ocfs2: Online      
  Heartbeat dead threshold = 31      
   Network idle timeout: 30000      
   Network keepalive delay: 2000      
   Network reconnect delay: 2000      
  Checking O2CB heartbeat: Active      
④node1上格式化OCFS2文件系统      
mkfs -t ocfs2 /dev/sdb  
⑤两个节点上分别挂载      
mount -t ocfs2  /dev/sdb  /var/www/html      
mount      
/dev/sdb on /var/www/html type ocfs2 (rw,_netdev,heartbeat=local)      
cd /var/www/html      
echo "Welcome" >index.html      
⑥两个节点上进行开机自动挂载      
vim  /etc/fstab      
/dev/sdb                /var/www/html           ocfs2   defaults        0 0      
-------------------------------------------------------------------


Step8:访问测试       
---------------      
http://192.168.102.200
Welcome