`

RHCS+Oracle配置实战图解

阅读更多

RHCS+Oracle配置实战图解

RHCS中,最难理解的是Fence机制,下面的配置过程将首先以"手动Fence"为例进行讲解,以更深入地描述Fence在集群运行过程中的运行步骤及作用,最后再换成真实的Fence设备。需要注意的是,虽然通过"手动Fence"可以完整地配置RHCS,但在生产环境中不推荐这样做,因为一旦出现硬件级故障的话,"手动Fence"需要管理员通过人工干预方式进行系统切换。

1. 安装红帽集群套件RHCS

安装RHCS主要有以下3个途径:

通过RHEL5 AP高级平台版介质进行安装,并在安装过程中输入通过rhn.redhat.com网站激活后得到的Install Number,选中相应的"Cluster(集群)"组件。

通过RHCSS(Red Hat Cluster Solution Suite,红帽集群解决方案套件)的安装光盘进行安装,RHCSS的好处是已经附带了多种流行数据库的支持接口,并可以提供磁盘镜像(Mirro)及企业系统备份功能。

注意:

购买RHCSS订阅时就已经包括了上门安装服务,会有专人为客户进行生产环境下的安装配置。

通过RHEL5 AP高级平台版介质进行手动安装,将安装介质挂载到/media/cdrom,然后进行以下操作:

(1) 建立文件/etc/yum.repos.d/mycdrom.repo,内容如下:

1.  [Base]  

2.  name=RHEL5 ISO Base  

3.  baseurl=file:///media/cdrom/Server  

4.  enabled=1 

5.  gpgcheck=0 

6.  [Cluster]  

7.  name=RHEL5 ISO Cluster  

8.  baseurl=file:///media/cdrom/Cluster  

9.  enabled=1 

10.gpgcheck=0 

(2) 执行yum命令进行集群组件的安装:

1.  # yum install cman rgmanager system-config-cluster luci ricci 

2. 红帽集群套件RHCS配置前的准备

在两台服务器中分别安装RHCS,并按照表12-1所示配置服务器。

12-1  RHCS集群配置说明

Server1

Server2

hostname(/etc/sysconfig/hostname)

server1.example.com

server2.example.com

/etc/hosts

127.0.0.1        localhost.localdomain localhost

192.168.100.11   server1 server1.example.com

192.168.100.12   server2 server2.example.com

Fence设备(例如通过IBM服务器的RSAII接口

实现Fence功能,如果没有此类设备则可以跳过)

192.168.100.21/24

Account: USERID

Password: PASSW0RD 

这里的0为“零”

192.168.100.22/24

Account: USERID

Password: PASSW0RD 

这里的0为“零”

eth0(用于内部网,作为心跳)

192.168.100.11/24

192.168.100.12/24

eth1(用于外部网,提供服务,与将要设置的虚拟IP在同一网段)

192.168.101.11/24

192.168.101.12/24

网络连接

连接方案1:两台服务器的Fence设备及

eth0eth1连接到同一网络中

连接方案2:两台服务器的Fence设备及eth0

连接到同一私有网络中,eth1 与外网相连

Oracle安装

ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1

ORACLE_SID: TESTDB

Oracle数据目录(Database Area)

Oracle Database Area: /u02/oradata

两个服务器通过命令fdisk -l,可以看到

相同的外部存储磁盘,如/dev/sdc

/dev/sdc中建立ext3文件系统,并挂载到

目录/u02中,将Oracle数据安装到/u02/oradata

由于数据存放在外部存储中,因此系统进行

Failover切换后数据不会丢失,保证了数据的一致性

具体的Oracle安装步骤请参考本书第11章内容


3.
通过system-config-cluster配置RHCS

打开一个终端并通过root用户身份运行命令system-config-cluster,或通过"系统"|"管理"|"服务器设置"|"system-config-cluster"来打开集群配置界面。

建立新集群

建立一个新的集群,命名为"new_cluster"。请注意:集群的名称要求少于16个字符,否则集群启动时会出现问题,如图12-3所示。对于双节点的集群来说,"Custom Configure Multicast""Use a Quorum Disk"都可以不作设置。

Custom Configure Multicast:用于指定一个用于本集群的多播地址。

Use a Quorum Disk:当多个节点要求仲裁机制时,指定仲裁策略。在实际应用中,超过两个节点的集群应用相对还是比较少,因此本书只涉及到RHCS双节点的配置。有兴趣了解"Quorum Disk"的读者可以参考红帽公司的官方文档。

添加节点

(1) 在图12-4左边的树状目录中选中"Cluster Nodes",单击"Add a Cluster Node"添加集群节点。

(2) "Node Properties"窗口中填入两个节点的机器名,分别为server1.example.comserver2.example.com,如图12-5所示。此处不但添加了节点,还同时指定了集群的"心跳"。由于在/etc/hosts中已经指定了两个节点名称对应的IP分别为192.168.100.11192.168.100.12,因此两台服务器通过此网络接口对连即可成为"心跳线"

 

12-3  新建集群

 

 

(点击查看大图)图12-4  添加集群节点

添加Fence设备

(1) 在图12-4左边的树状节点中选中"Fence Devices",单击"Add a Fence Device"打开Fence配置窗口。

(2) "Add a New Fence Device"下拉菜单中选中"Manual Fencing"以手动Fencing

(3) "Name"处为Fence设备自定义一个名称,如"m_fencing",如图12-6所示。

 

12-5  加入节点server1.example.com

 

 

12-6  添加手动Fence设备

节点与Fence设备绑定

(1) 在图11-7左边的树状目录中选中"server1.example.com",单击"Manage Fencing For This Node"

(2) 为节点server1.example.com添加一个"Fence Level"(注:为进一步保证集群"脑裂"时的有效切换,RHCS允许对一个节点添加多个Fence设备并建立分级的Fence操作)

 

(点击查看大图)图12-7  为节点添加Fence Level

(3) 选中"Fence-Level-1",单击"Add a New Fence to this Level",在"Fence Properties"窗口的"Add a New Fence"下拉菜单中选择刚才建立的名为"m_fencing"的设备,如图12-8所示。

 

12-8  指定Fence Level使用的Fence设备

(4) 在节点server2.example.com上重复以上步骤,将其与名为"m_fencing"的设备绑定。

新建Failover Domain

(1) 在图12-4左边的树状目录中选中"Failover Domains",单击"Create a Failover Domain"

(2) "Name for new Failover Domain"文本框中指定自定义的Failover Domain名称,如ora_domain,如图12-9所示。

 

12-9  新建Failover Domain

(3) 通过"Available Cluster Nodes"下拉菜单将server1.example.comserver2. example.com加入到当前的Failover Domain中,如图12-10所示。

Restrict Failover To This Domains Members:指派给这个Failover DomainService只可以在当前加入的成员上执行;如果不选此项,Service将允许在本集群中的任何节点进行Failover切换。为保证系统的严谨性,建议选中此项。

Prioritized List:用于调整Failover Domain中节点的优先级别,指定Service优先在哪个节点中运行。(注:对于双节点情况,如果,两台服务器的性能相同,那么一般不需要设置它们的优先关系,先启动服务器为主服务器,后启动的的为备用服务器。当主服务器出现故障,备用服务器进行Service接管后,即使主服务器通过检修重新加入集群,由于主/备服务器性能相同,因此没有必要再浪费时间进行Service切换)

添加Resource - IP Address

(1) 在图12-4左边的树状目录中选中"Resources",单击"Create a Resource"

(2) "Select a Resource Type"下拉菜单中选中"IP Address"并填入IP地址,如192.168.101.10,如图12-11所示。此地址就是上面提到的"虚拟IP",对于每一个通过网络进行连接的Service来说,都要求至少有一个独立的"虚拟IP"

 

12-10  Failover Domain添加节点

 

 

12-11  添加IP Address资源

添加Resource - File System

(1) 在图12-4左边的树状目录中选中"Resources",单击"Create a Resource"

(2) "Select a Resource Type"下拉菜单中选中"File System",并按图12-12所示指定文件系统资源的名称、文件系统类型、挂载点及使用的磁盘设备。

Options:执行mount指令时的特殊参数,与mount指令的"-o"参数相同。

File System IDRHCS中要求每个File System都有一个唯一的ID号,此项一般不用指定,系统会自动进行分配。

Force unmount - 一旦服务要求切换,在进行umount操作时使用-f参数

Reboot host node if unmount fails - umount失败,则尝试对此系统进行重启操作。

Check file system before mounting - 挂载文件系统前通过fsck命令对文件系统进行检查,这可以更好地保证文件系统的完整性,但对于大文件系统来说,这将花费很长的时间。

添加Resource - Script

(1) 在图12-4左边的树状目录中选中"Resources",单击"Create a Resource"

(2) "Select a Resource Type"下拉菜单中选中"Script",为此资源定义一个"Name"ora_script、以/etc/init.d/dbora为脚本文件的Scrgt资源,如图12-13所示。

/etc/init.d/dbora是一个用于对Oracle进行启动(start)、停止(stop)及状态检查(status)的脚本,RHCS要求每个脚本都支持这3种参数操作,并根据应用的实际运行情况返回"0(表示正常)""0(表示运行异常)"RHCS就是靠这些参数及返回值来判断应用程序运行得正常与否,以保证当应用软件由于自身或其他原因而导致异常时进行Failover切换(本书将在后面的章节中为读者详细分析/etc/init.d/dbora脚本的运行过程)

 

12-12  添加File System资源

 

 

12-13  添加Script资源

建立Service

(1) 在图12-4左边的树状目录中选中"Services",单击"Create a Service",新建一个名为ora_serivce的服务,如图12-14所示。

 

12-14  新建Service

(2) "Service Management"窗口的"Failover Domain"中选择之前建立的ora_domain,此窗口用于指定Failover DomainService之间的关系,以及ServiceResrouces之间的关系,是集群配置中最重要的一环。

(3) 单击"Add Shared Resource to this service",在列表框中选择之前建立的IP Address资源:192.168.101.10。单击"OK"按钮,使之添加到本Service的资源列表中,如图12-15所示。

也可以通过"Create a new resource for this service"建立对应本Service的私有资源属性,这些属性将不可以再在其他Service中使用。

有些资源要求体现出一定的层次关系,如:通常系统都要求确认虚拟IP及文件系统都已经正常连接及挂载后,才可以运行某个应用程序,这个顺序一旦调转,将会使应用程序运行出错。通过选中"192.168.101.10  IP Address  Shared",然后单击"Attach a Shared Resource to the selection"可以将其他共享资源添加为此资源的子项,以实现顺序地启动及关闭,如图12-16所示。

 

(点击查看大图)图12-15  Service加入IP Address资源

 

 

(点击查看大图)图12-16  IP Address加入下级资源

(4) 在列表框中选择之前建立的名为ora_fsFile System资源,单击"OK"按钮将它加入为IP Address的下级资源,如图12-17所示。

 

(点击查看大图)图12-17  IP Address加入下级File System资源

(5) 选中"ora_fs  File System  Shared",然后单击"Attach a Shared Resource to the selection",将ora_script加入,作为它的子资源,如图12-18所示。

 

(点击查看大图)图12-18  File System加入下级Script资源

至此,资源添加完成,服务启动时将先尝试对IP进行接管,然后尝试挂载文件系统,最后运行应用所需的脚本中的start方法,如/etc/init.d/dbora start。如果这3个资源均被正常启动,则服务启动成功;否则,任何一个资源启动异常,都将导致服务起动失败。此时RHCS会尝试在Failover Domain中的其他节点启动服务。

同理,停止服务是启动顺序的反过程:先通过脚本中的stop方法停止应用,然后卸载文件系统,最后清除IP

Recovery Policy:指定进行切换时所使用的策略,通过RHCSrgmanager可以在运行时对服务中的各个资源进行检测,一旦检查到某个资源的status操作发生异常,就按照此策略进行操作。

Restart-如果发现资源出现异常,则先在本地尝试重启服务,如果重启失败则执行Relocate操作。

Relocate-停止当前节点中与本服务相关的所有资源,由另一台服务器进行服务及资源的接管。

Disable-在所有节点中停止服务,不进行任何操作。

一般建议在测试环境中使用"Relocate",因为这样可以很好地展示系统切换的过程;在生产环境中则建议使用"Restart",因为有不少异常通过本地重启服务是可以解决的,这样可以最大限度缩短系统切换所消耗的时间。

其他选项:

Autostart This Service-rgmanager启动时自动启动此Service

Run Exclusive-指定此Service以独占方式运行,一旦此Service运行在某个服务器之上,集群就将拒绝其他的Service在此服务器上运行。

完成后的集群如图12-19所示。

 

(点击查看大图)图12-19  完成后的集群效果

保存配置文件

通过File | Save,保存配置文件为/etc/cluster/cluster.conf

4. Oracle集群脚本讲解

以下是一个用于在RHCS中实现Oracle启停及状态管理的脚本,使用时请对应实际环境自行修改ORACLE_HOMEORACLE_SID等参数。另外,此脚本只作为学习及练习的参考,不能保证在生产环境上的运行稳定性。

1.  #!/bin/bash  

2.  #  

3.  # /etc/init.d/dbora  

4.  #  

5.  # chkconfig: 2345 02 98  

6.  # description: oracle is meant to run under Linux Oracle Server  

7.  # Source function library.  

8.  . /etc/rc.d/init.d/functions  

9.   

10.ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1  

11.ORACLE_SID=TESTDB 

12.ORACLE_NAME=oracle 

13.LOCKFILE="$ORACLE_HOME/.oracle.lock" 

14.RESTART_RETRIES=3 

15.DB_PROCNAMES="pmon" 

16.LSNR_PROCNAME="tnslsnr" 

17. 

18.#RETVAL=0 

19.#Start the oracle Server  

20. 

21.#The following command assumes that the oracle login will not prompt the password  

22.start() {  

23. 

24.        echo  "Starting Oracle10g Server... "  

25.        tmpfile=/home/oracle/'basename $0'-start.$$  

26.        logfile=/home/oracle/'basename $0'-start.log  

27.        #  

28.        # Set up our sqlplus script.  Basically, we're trying to   

29.        # capture output in the hopes that it's useful in the case  

30.        # that something doesn't work properly.  

31.        #  

32.        echo "startup" > $tmpfile  

33.        echo "quit" >> $tmpfile  

34. 

35.        su - $ORACLE_NAME -c "sqlplus \"/ as sysdba\" < $tmpfile &> $logfile"  

36.        if [ $? -ne 0 ]; then  

37.                echo "ORACLE_HOME Incorrectly set?"  

38.                echo "See $logfile for more information."  

39.                return 1  

40.        fi  

41. 

42.        #   

43.        # If we see:  

44.        # ORA-.....: failure, we failed  

45.        #  

46.        rm -f $tmpfile  

47.        grep -q "failure" $logfile  

48.        if [ $? -eq 0 ]; then  

49.                rm -f $tmpfile  

50.                echo "ORACLE_SID Incorrectly set?"  

51.                echo "See $logfile for more information."  

52.                return 1  

53.        fi  

54. 

55.         echo "Starting listern..."  

56.         ((su - $ORACLE_NAME -c "$ORACLE_HOME/bin/lsnrctl start") >> $logfile   

57.2>&1) || return 1  

58.         #return $?  

59.        if [ -n "$LOCKFILE" ]; then  

60.                touch $LOCKFILE  

61.        fi  

62.#/usr/local/tomcat/bin/catalina.sh start  

63.        return 0  

64.}  

65. 

66.stop() {  

67.        echo "Shutting down Oracle10g Server..."  

68. 

69.        declare tmpfile  

70.        declare logfile  

71. 

72.        tmpfile=/home/oracle/`basename $0`-stop.$$  

73.        logfile=/home/oracle/`basename $0`-stop.log  

74.        if [ -z "$LOCKFILE" ] || [ -f $LOCKFILE ]; then  

75.          echo  

76.         else  

77.          echo "oracle is not run"  

78.          return 0  

79.        fi  

80. 

81.        # Setup for Stop ...  

82.        echo "shutdown abort" > $tmpfile  

83.        echo "quit" >> $tmpfile  

84. 

85.        su - $ORACLE_NAME -c "sqlplus \"/ as sysdba\" < $tmpfile &> $logfile"  

86.        if [ $? -ne 0 ]; then  

87.                echo "ORACLE_HOME Incorrectly set?"  

88.                echo "See $logfile for more information."  

89.                return 1  

90.        fi  

91. 

92.        #   

93.        # If we see 'failure' in the log, we're done.  

94.        #  

95.        rm -f $tmpfile  

96.        grep -q failure $logfile  

97.        if [ $? -eq 0 ]; then  

98.                echo  

99.                echo "Possible reason: ORACLE_SID Incorrectly set."  

100.                  echo "See $logfile for more information."  

101.                  return 1  

102.          fi  

103.   

104.          status $LSNR_PROCNAME  

105.          if [ $? -ne 0 ] ; then  

106.            if [ -n "$LOCKFILE" ]; then  

107.               rm -f $LOCKFILE   

108.            fi  

109.               return 0 # Listener is not running  

110.          fi  

111.   

112.          ((su - $ORACLE_NAME -c "$ORACLE_HOME/bin/lsnrctl stop") >> $logfile   

113.  2>&1) || return 1  

114.   

115.          if [ -n "$LOCKFILE" ]; then  

116.               rm -f $LOCKFILE  

117.          fi  

118.          return 0  

119.  }  

120.   

121.  get_lsnr_status()  

122.  {  

123.          declare -i subsys_lock=$1  

124.   

125.          status $LSNR_PROCNAME  

126.          if [ $? == 0 ] ; then  

127.                  return 0 # Listener is running fine  

128.          elif [ $subsys_lock -ne 0 ]; then  

129.                  return 3  

130.          elif [ $? -ne 0 ] ; then  

131.                 return 1  

132.          fi  

133.  }  

134.   

135.  get_db_status()  

136.  {  

137.          declare -i subsys_lock=$1  

138.          declare -i i=0 

139.          declare -i rv=0 

140.          declare ora_procname  

141.   

142.          for procname in $DB_PROCNAMES ; do  

143.   

144.                  ora_procname="ora_${procname}_${ORACLE_SID}" 

145.   

146.                  status $ora_procname  

147.                  if [ $? -eq 0 ] ; then  

148.                          # This one's okay; go to the next one.  

149.                          continue  

150.                  elif [ $subsys_lock -ne 0 ]; then  

151.                          return 3  

152.                  elif  [ $? -ne 0 ] ; then   

153.                          return 1  

154.                  fi  

155.   

156.          done  

157.  }  

158.   

159.  update_status()  

160.  {  

161.          declare -i old_status=$1  

162.          declare -i new_status=$2  

163.   

164.          if [ -z "$2" ]; then  

165.                  return $old_status  

166.          fi  

167.   

168.          if [ $old_status -ne $new_status ]; then  

169.                  return 1  

170.          fi  

171.          return $old_status  

172.  }  

173.  status_ias()  

174.  {  

175.          declare -i subsys_lock=1 

176.          declare -i last  

177.          #  

178.          # Check for lock file.  Crude and rudimentary, but it works  

179.          #  

180.          if [ -z "$LOCKFILE" ] || [ -f $LOCKFILE ]; then  

181.                  subsys_lock=0 

182.          fi  

183.   

184.          # Check database status  

185.          get_db_status $subsys_lock  

186.          update_status $? # Start  

187.          last=$?  

188.   

189.          # Check & report listener status  

190.          get_lsnr_status $subsys_lock  

191.          update_status $? $last  

192.          last=$?  

193.   

194.          # Check & report opmn / opmn-managed process status  

195.          #get_opmn_status $subsys_lock  

196.          #update_status $? $last  

197.          #last=$?  

198.   

199.          #  

200.          # No lock file, but everything's running.  Put the lock  

201.          # file back. XXX - this kosher?  

202.          #  

203.          if [ $last -eq 0 ] && [ $subsys_lock -ne 0 ]; then  

204.                  touch $LOCKFILE  

205.          fi  

206.          return $last  

207.  }  

208.   

209.  restart() {  

210.           echo -n "Restart Oracle10g Server"  

211.             stop  

212.               start  

213.  echo  

214.  }  

215.   

216.  case "$1" in  

217.  start)  

218.      start  

219.      exit $?  

220.      ;;  

221.  stop)  

222.       stop  

223.      exit $?  

224.  ;;  

225.  status)  

226.      status_ias  

227.      exit $?  

228.  ;;  

229.  restart|reload)  

230.      stop  

231.      start  

232.  ;;  

233.  *)  

234.  echo "Usage: $0 {start|stop|reload|restart|status}"  

235.  exit 1  

236.  ;;  

237.  esac  

238.  exit 0 

上述脚本通过多种判断过程来检查Oracle服务的运行状态,并实现了startstopstatus操作方法。当一个应用或资源要求基于RHCS集群进行管理时,所有的启动及停止操作都应该由集群进行控制。当RHCS认为服务应该在某个节点上启动时,系统会通过调用Script资源的start方法来尝试启动该资源。若运行的返回值为"0",则说明此服务正常启动。

在服务的运行过程中,系统会定期地通过status方法检测资源的运行状态。一旦运行的返回值为"0"值,系统便会按照此服务定义的Recovery Policy进行服务切换。

当手工进行维护时(如通过clusvcadm命令对服务进行Relocate操作时),系统会调用资源的stop方法,使其在本节点中正常停止,然后再在另一个节点上重新启动。

5. 初始化同步集群配置文件

/etc/cluster/cluster.conf样例:

1.  <?xml version="1.0" ?> 

2.  <cluster alias="new_cluster" config_version="5" name="new_cluster"> 

3.      <fence_daemon post_fail_delay="0" post_join_delay="3"/> 

4.      <clusternodes> 

5.          <clusternode name="server1.example.com" nodeid="1" votes="1"> 

6.              <fence> 

7.                  <method name="1"> 

8.                      <device name="m_fencing" 
nodename="server1.example.com"/> 

9.                  </method> 

10.            </fence> 

11.        </clusternode> 

12.        <clusternode name="server2.example.com" nodeid="2" votes="1"> 

13.            <fence> 

14.                <method name="1"> 

15.                    <device name="m_fencing" 
nodename="server2.example.com"/> 

16.                </method> 

17.            </fence> 

18.        </clusternode> 

19.    </clusternodes> 

20.    <cman expected_votes="1" two_node="1"/> 

21.    <fencedevices> 

22.        <fencedevice agent="fence_manual" name="m_fencing"/> 

23.    </fencedevices> 

24.    <rm> 

25.        <failoverdomains> 

26.            <failoverdomain name="ora_domain" 
ordered="0" restricted="1"> 

27.                <failoverdomainnode name="server1.
example.com"
 priority="1"/> 

28.                <failoverdomainnode name="server2.
example.com"
 priority="1"/> 

29.            </failoverdomain> 

30.        </failoverdomains> 

31.        <resources> 

32.            <ip address="192.168.101.10" monitor_link="1"/> 

33.            <script file="/etc/init.d/dbora" name="ora_script"/> 

34.            <fs device="/dev/sdc" force_fsck="0" 
force_unmount="0" fsid="47823" fstype="ext3" mount
point
="/u02" name="ora_fs" options="" self_fence="0"/> 

35.        </resources> 

36.        <service autostart="1" domain="ora_domain" 
name="ora_service" recovery="relocate"> 

37.            <ip ref="192.168.101.10"> 

38.                <fs ref="ora_fs"> 

39.                    <script ref="ora_script"/> 

40.                </fs> 

41.            </ip> 

42.        </service> 

43.    </rm> 

44.</cluster> 

可以看到,前面通过system-config-cluster工具配置的各个选项最后都被保存成一个XML文件,这就是RHCS最终要使用的配置文件。

使用scp命令将此配置文件拷贝到集群的其他节点:

1.  [root@server1 ~]# scp /etc/cluster/cluster.conf 
server1.example.com:/etc/cluster/cluster.conf  

2.  The authenticity of host 'server2.example.com 
(192.168.100.12)' can't be established.  

3.  RSA key fingerprint is bd:11:d8:e5:e6:b5:4a:4
2:3d:98:4f:e7:ad:e9:1a:14.  

4.  Are you sure you want to continue connecting 
(yes/no)? yes  

5.  Warning: Permanently added '192.168.100.12' 
(RSA) to the list of known hosts.  

6.  root@192.168.100.12's password:   

7.  cluster.conf                                
100% 1478     1.4KB/s   00:00 

6. RHCS集群启停及效果测试

系统服务cman启动

1.  [root@server1 ~]# /etc/init.d/cman start  

2.  Starting cluster:   

3.     Loading modules... done  

4.     Mounting configfs... done  

5.     Starting ccsd... done  

6.     Starting cman... done  

7.     Starting daemons... done  

8.     Starting fencing... 

此时由于server2还没有启动,因此服务会一直等待系统对server2执行Fencing操作的结果,直到返回操作成功为止。当前系统所使用的Fence"手动Fence",这要求管理员人工进行干预。通过打开新的终端并检查/var/log/message日志可以更深入地了解cman启动的过程。

1.  [root@server1 ~]# less /var/log/message  

2.  ……  

3.  Apr 11 10:24:21 server1 ccsd[6461]: Starting ccsd 2.0.84:   

4.  此日志表明集群开始启动  

5.  ……  

6.  Apr 11 10:24:21 server1 ccsd[6461]: cluster.conf
(cluster 
name = new_clusterversion = 5) found.   

7.  当前集群配置文件的版本号,要求每个节点的cluster.conf文件内容完全一致  

8.  Apr 11 10:24:23 server1 openais[6467]: [MAIN ] AIS
Executive Service RELEASE 'subrev 1358 version 0.80.3'   

9.  RHCS集群基于ccsdopenasi,因此cman启动时会控制这两个进程的启动  

10.……  

11.Apr 11 10:24:23 server1 openais[6467]: [MAIN ] 
Using default multicast address of 239.192.92.17   

12.使用系统默认的多播地址  

13.……  

14.Apr 11 10:24:23 server1 openais[6467]: [TOTEM]
The network interface [192.168.100.11] is now up.   

15.Apr 11 10:24:23 server1 openais[6467]: [TOTEM] 
Created or loaded sequence id 72.192.168.100.11 for this ring.   

16.Openais发现当前节点所指定使用的心跳接口  

17.……  

18.Apr 11 10:24:24 server1 openais[6467]: [CMAN ] 
CMAN 2.0.84 (built Apr 15 2008 16:19:19) started   

19.cman启动完成,后面部分开始加载节点  

20.……  

21.Apr 11 10:24:24 server1 openais[6467]: [CLM  ]
New Configuration:   

22.Apr 11 10:24:24 server1 openais[6467]: [CLM  ] 
r(0) ip(192.168.100.11)    

23.Apr 11 10:24:24 server1 openais[6467]: [CLM  ]
Members Left:   

24.Apr 11 10:24:24 server1 openais[6467]: [CLM  ] 
Members Joined:   

25.Apr 11 10:24:24 server1 openais[6467]: [CLM  ]  
r(0) ip(192.168.100.11)    

26.Apr 11 10:24:24 server1 openais[6467]: [SYNC ] 
This node is within the primary component and will 
provide service.   

27.集群发现两个节点,当前加入节点的心跳IP192.168.100.11
并可以在它之上发布服务  

28.……  

29.Apr 11 10:24:24 server1 ccsd[6461]: Cluster is 
not quorate.  Refusing connection.   

30.Apr 11 10:24:24 server1 ccsd[6461]: Error while 
processing connect: Connection refused   

31.Apr 11 10:24:24 server1 ccsd[6461]: Initial status:: Quorate   

32.由于当前没有设备Quorate,因此集群重新进行双节点的特殊Quorate初始化  

33.Apr 11 10:24:28 server1 fenced[6483]: server2.
example.com not a cluster member after 3 sec post_join_delay  

34.Apr 11 10:24:28 server1 fenced[6483]: fencing node "
server2.example.com"  

35.由于发现server2.example.com这个节点还没有运行集群服务,
因此出于安全考虑对这个节点进行Fencing操作  

36.Apr 11 10:24:28 server1 fenced[6483]: fencing node 
"server2.example.com"  

37.Apr 11 10:24:28 server1 fence_manual: Node server
2.example.com needs to be reset before recovery 
can procede.  Waiting for server2.example.com to 
rejoin the cluster or for manual acknowledgement 
that it has been reset (i.e. fence_ack_manual -n server2.example.com) 

Manual Fence机制要求管理员进行人工干预,管理员此时应该对server2中与集群相关的所有资源进行卸裁(包括虚拟IP、文件系统等),建议直接对server2进行关机操作,并按要求在server1中执行以下操作:

1.  [root@server1 ~]# fence_ack_manual -n server2.example.com  

2.   

3.  Warning:  If the node "server2.example.com" has not been manually fenced  

4.  (i.e. power cycled or disconnected from shared storage devices)  

5.  the GFS file system may become corrupted and all its data  

6.  unrecoverable!  Please verify that the node shown above has  

7.  been reset or disconnected from storage.  

8.   

9.  Are you certain you want to continue? [yN] y  

10.done 

原正在进行cman启动的终端出现以下结果:fencing运行正常,cman正常启动。

1.  [root@server1 ~]# /etc/init.d/cman start  

2.  Starting cluster:   

3.     Loading modules... done  

4.     Mounting configfs... done  

5.     Starting ccsd... done  

6.     Starting cman... done  

7.     Starting daemons... done  

8.     Starting fencing... done  

9.                                                             [  OK  ]  

10.[root@server1 ~]# clustat   

11.Cluster Status for new_cluster @ Sat Apr 11 10:55:33 2009  

12.Member Status: Quorate  

13. 

14. Member Name                             ID     Status  

15. ------ ----                             ----   ------  

16. server1.example.com                     1      Online, Local  

17. server2.example.com                     2      Offline 

通过使用clustat命令在server1上检查集群运行状态得知:当前本地节点(Local)server1,且server1为在线状态(Online)server2的当前状态为离线(Offline)

重新启动服务器节点server2,并执行以下操作:

1.  [root@server2 ~]# /etc/init.d/cman start  

2.  Starting cluster:   

3.     Loading modules... done  

4.     Mounting configfs... done  

5.     Starting ccsd... done  

6.     Starting cman... done  

7.     Starting daemons... done  

8.     Starting fencing... done  

9.                                                             [  OK  ] 

此时Fencing直接运行通过,这是因为cman启动时已经发现了server1上名为new_cluster的集群信息,server2只是加入到此集群当中,无需对server1进行Fencing

1.  [root@server2 ~]# clustat  

2.  Cluster Status for new_cluster @ Sat Apr 11 11:07:49 2009  

3.  Member Status: Quorate  

4.   

5.   Member Name                             ID   Status  

6.   ------ ----                             ---- ------  

7.   server1.example.com                         1 Online  

8.   server2.example.comz                         2 Online, Local 

通过使用clustat命令在server2上检查集群运行状态得知:当前本地节点(Local)server2,且server1server2均为在线状态(Online)

server1中通过/var/log/message可以看到server2加入的信息:

1.  [root@server1 ~]# less /var/log/message  

2.  ……  

3.  Apr 11 10:59:10 server1 openais[6467]: [TOTEM] 
entering GATHER state from 11.   

4.  Apr 11 10:59:10 server1 openais[6467]: [TOTEM] 
Creating commit token because I am the rep.   

5.  此处开始server2的加入  

6.  ……  

7.  Apr 11 10:59:10 server1 openais[6467]: [CLM  ] New Configuration:   

8.  Apr 11 10:59:10 server1 openais[6467]: [CLM  ]  r(0) ip(192.168.100.11)    

9.  Apr 11 10:59:10 server1 openais[6467]: [CLM  ] Members Left:   

10.Apr 11 10:59:10 server1 openais[6467]: [CLM  ] Members Joined:   

11.Apr 11 10:59:10 server1 openais[6467]: [CLM  ] CLM CONFIGURATION CHANGE   

12.Apr 11 10:59:10 server1 openais[6467]: [CLM  ] New Configuration:   

13.Apr 11 10:59:10 server1 openais[6467]: [CLM  ]  r(0) ip(192.168.100.11)    

14.Apr 11 10:59:10 server1 openais[6467]: [CLM  ]  r(0) ip(192.168.100.12)    

15.Apr 11 10:59:10 server1 openais[6467]: [CLM  ] Members Left:   

16.Apr 11 10:59:10 server1 openais[6467]: [CLM  ] Members Joined:   

17.Apr 11 10:59:10 server1 openais[6467]: [CLM  ]  r(0) ip(192.168.100.12)    

18.Apr 11 10:59:10 server1 openais[6467]: [SYNC ] 
This node is within the primary component and will provide service.   

19.集群发现两个节点,当前加入节点的心跳IP192.168.100.12
,并可以在它之上发布服务  

20.Apr 11 10:59:10 server1 openais[6467]: [TOTEM] 
entering OPERATIONAL state.   

21.Apr 11 10:59:10 server1 openais[6467]: [CLM  ] 
got nodejoin message 192.168.100.11   

22.Apr 11 10:59:10 server1 openais[6467]: [CLM  ] 
got nodejoin message 192.168.100.12   

23.Apr 11 10:59:10 server1 openais[6467]:[CPG ]got 
joinlist message from node 1  

24.加入server2节点完成 

至此,两个节点中的cman系统服务启动完成。

启动系统服务rgmanager

1.  [root@server1 ~]# /etc/init.d/rgmanager start  

2.  Starting Cluster Service Manager:                          [  OK  ] 

server1中通过/var/log/message可以对此进行监控:

1.  [root@server1 ~]# less /var/log/message  

2.  ……  

3.  Apr 11 11:28:28 server1 kernel: dlm: Using TCP for communications  

4.  Apr 11 11:28:29 server1 clurgmgrd[12838]: <notice> 
Resource Group Manager Starting   

5.  系统服务rgmanager开始启动  

6.  Apr 11 11:28:44 server1 clurgmgrd[12838]: <notice>
 Starting stopped service service:ora_service   

7.  按照cluster.conf中的配置启动ora_service服务  

8.  Apr 11 11:28:45 server1 avahi-daemon[4957]: 
Registering new address record for 192.168.101.10 on eth1.  

9.  按配置顺序注册虚拟IP  

10.Apr 11 11:28:48 server1 kernel: kjournald starting.  
Commit interval 5 seconds  

11.Apr 11 11:28:48 server1 kernel: EXT3-fs warning: 
maximal mount count reached, running e2fsck is recommended  

12.Apr 11 11:28:48 server1 kernel: EXT3 FS on sdc, internal journal  

13.Apr 11 11:28:48 server1 kernel: EXT3-fs: mounted 
filesystem with ordered data mode.  

14.挂载文件系统  

15.Apr 11 11:29:38 server1 clurgmgrd[12838]: <notice> 
Service service:ora_service started  

16.最后通过Script启动Oracle 

同样地在server2上启动rgmanager服务,否则server1出现故障时server2将不能进行服务接管:

1.  [root@server2 ~]# /etc/init.d/rgmanager start  

2.  Starting Cluster Service Manager:                          [  OK  ]  

3.   

4.  [root@server2 ~]# clustat  

5.  Cluster Status for new_cluster @ Sat Apr 11 13:02:55 2009  

6.  Member Status: Quorate  

7.   

8.   Member Name                             ID   Status  

9.   ------ ----                             ---- ------  

10. server1.example.com                      1 Online, rgmanager  

11. server2.example.com                      2 Online, Local, rgmanager  

12. 

13. Service Name                   Owner (Last)                   State           

14. ------- ----                   ----- ------                   -----           

15. service:ora_service            server1.example.com            started 

Oracle使用测试

server2上使用SQL*Plus通过192.168.101.10进行数据库测试,修改tnsnames.ora,在其中加入以下内容:

1.  [root@server2 ~]# vim /u01/app/oracle/product/
10.2.0/db_1/network/admin/tnsnames.ora  

2.  ……  

3.  TESTDBvip =  

4.    (DESCRIPTION =  

5.      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.10)(PORT = 1521))  

6.      (CONNECT_DATA =  

7.        (SERVER = DEDICATED)  

8.        (SERVICE_NAME = TESTDB.EXAMPLE.COM)  

9.      )  

10.  )  

11.…… 

通过TESTDBvip进行连接:

1.  [oracle@server2 ~]$ sqlplus scott/manager@TESTDBvip  

2.  SQL*Plus: Release 10.2.0.1.0 - Production on Sat Apr 11 12:51:19 2009  

3.  Copyright (c) 1982, 2005, Oracle.  All rights reserved.  

4.  Connected to:  

5.  Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production  

6.  With the Partitioning, OLAP and Data Mining options  

7.  SQL> create table rhcs (c varchar2(255));  

8.  Table created.  

9.  SQL> insert into rhcs values ('rhcs');  

10.1 row created.  

11.SQL> select * from rhcs;  

12.C  

13.-----------------------------------------------------------------------  

14.rhcs  

15.SQL> 

节点服务切换

企业服务需要进行周期性的离线维护,此时需要花费"计划内停机时间",通过将目标维护节点的服务切换到集群中的其他服务器以继续运行可以大大缩短"计划内停机时间",从而提高系统整体的"系统可用率"

1.  [root@server1 ~]# clusvcadm -r ora_service -m server2.example.com  

2.  Trying to relocate service:ora_service to server2.example.com...Success  

3.  service:ora_service is now running on server2.example.com 

clusvcadm是专门用于RHCS集群管理的命令,可以对服务进行切换、暂停、重新启动等操作。除clusvcadm以外,通过system-config-cluster也同样可以对服务进行管理操作。

system-config-cluster"Cluster Management"中,可以对服务进行"Enable""Disable""Restart"管理。另外,服务支持通过"拖放"的方式来实现服务切换管理。

当然,在Oracle运行过程中,一旦由于系统故障而使RHCS在执行/etc/init.d/dbora start服务正确性检查时返回结果为"0"RHCS就会自动进行服务的重启或切换。

服务切换后可通过前面"Oracle使用测试"中介绍的方法来对Oracle服务的运行状态进行检查。

 

(点击查看大图)图12-20  集群服务管理

心跳线断链

这是一种极端情况,一旦出现此情况,则大部分HA软件都要求管理员手工进行恢复。RHCS通过Fence机制可以自动处理此问题,然而由于在new_cluster这个集群中只配置了使用"手动Fence"进行操作,因此当前还需要人工进行干预。通过以下操作实例,读者可以更深入了解Fence在实现运行中都进行了哪些操作。

当前ora_service服务在server2上运行,使用命令ifdown eth0停止server2上的心跳接口。

server1上监控/var/log/message日志:

1.  [root@server1 ~]# less /var/log/message  

2.  ……   

3.  Apr 11 13:51:12 server1 kernel: dlm: closing connection to node 2  

4.  发现原node 2节点,server2连接断开  

5.  Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
New Configuration:   

6.  Apr 11 13:51:12 server1 fenced[6483]: server2.
example.com not a cluster member after 0 sec post_fail_delay  

7.  Apr 11 13:51:12 server1 openais[6467]: [CLM  ]  
r(0) ip(192.168.100.11)    

8.  Apr 11 13:51:12 server1 fenced[6483]: fencing node 
"server2.example.com"  

9.  Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
Members Left:   

10.Apr 11 13:51:12 server1 fence_manual: Node 
server2.example.com needs to be reset before 
recovery can procede.  Waiting for server2.example.
com to rejoin the cluster or for manual acknowledgement 
that it has been reset (i.e. fence_ack_manual -n server2.example.com)   

11.尝试进行Fencing操作,但由于此时使用的是"手动Fence"
因此要求管理员进行人工干预  

12.Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
r(0) ip(192.168.100.12)    

13.Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
Members Joined:   

14.Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
CLM CONFIGURATION CHANGE   

15.Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
New Configuration:   

16.Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
r(0) ip(192.168.100.11)    

17.Apr 11 13:51:12 server1 openais[6467]: [CLM  ] Members Left:   

18.Apr 11 13:51:12 server1 openais[6467]: [CLM  ] 
Members Joined:   

19.Apr 11 13:51:12 server1 openais[6467]: [SYNC ] 
This node is within the primary component and 
will provide service.   

20.Apr 11 13:51:12 server1 openais[6467]: [SYNC ] 
This node is within the primary component and 
will provide service.   

21.Apr 11 13:51:12 server1 openais[6467]: [TOTEM] 
entering OPERATIONAL state.   

22.Apr 11 13:51:12 server1 openais[6467]: [CLM  ]
got nodejoin message 192.168.100.11   

23.Apr 11 13:51:12 server1 openais[6467]: [CPG ] 
got joinlist message from node 1  

24.[root@server1 ~]# clustat  

25.Cluster Status for new_cluster @ Sat Apr 11 13:52:11 2009  

26.Member Status: Quorate  

27. 

28. Member Name                        ID      Status  

29. ------ ----                        ----    ------  

30. server1.example.com                1       Online, Local, rgmanager  

31. server2.example.com                2       Offline  

32. 

33. Service Name                       Owner (Last)                State           

34. ------- ----                       ----- ------                    -----           

35. service:ora_service                server2.
example.com             started 

此时由于RHCS正在等待Fencing操作的结果,同时因为无法通过心跳确认I/O资源是否已经在server2中完全断开,因此认为服务依然运行在server2之上。此时就需要管理员进行干预,首先,在server2上手动停止所有与集群有关的服务并卸载相关资源,或者直接将server2关机;然后在server1中运行fence_ack_manual -n server2.example.com,此命令告诉cmanserver2已经由管理员进行处理并完全离开集群。此时,RHCS会在server1上接管原来运行在server2上的集群服务。

1.  [root@server1 ~]# clustat  

2.  Cluster Status for new_cluster @ Sat Apr 11 14:07:57 2009  

3.  Member Status: Quorate  

4.   

5.   Member Name                             ID   Status  

6.   ------ ----                             ---- ------  

7.   server1.example.com                         1 
Online, Local, rgmanager  

8.   server2.example.com                         2 Offline  

9.   

10. Service Name                   Owner (Last)     
State  

11. ------- ----                   ----- ------        
-----  

12. service:ora_service            server1.example.com  
started 

Fence硬件设备的测试及配置(如果当前环境没有Fence设备,那么此部分可以跳过)

"手动Fence"是不建议在生产环境下使用的,生产环境下建议通过购买带有Fence设备的服务器、存储或者购买带有外部电源的Fence设备来实现此功能。

安装RHCS后,系统中会有以下Fence命令:

1.  fence_ack_manual        fence_drac      fence_rps10  
fence_vixel  

2.  fence_apc           fence_egenera   fence_rsa       fence_wti  

3.  fence_apc_snmp      fence_ilo       fence_rsb       fence_xvm  

4.  fence_bladecenter   fence_ipmilan   fence_sanbox2   fence_xvmd  

5.  fence_brocade       fence_manual        fence_scsi  

6.  fence_bullpap       fence_mcdata        fence_scsi_test  

7.  fenced              fence_node      fence_tool 

这些命令用于对所支持的Fence进行操作,RHCS在进行Fencing操作时,内部就是通过调用这些命令完成的。下面以IBMRSA II管理器为例, fence_rsa命令有以下参数:

1.  [root@server1 ~]# fence_rsa  --help  

2.  Usage:  

3.  fence_rsa [options]  

4.  Options:  

5.     -a <ipaddress>   ip or hostname of rsa II port   RSA接口的IP  

6.     -h               print out help                  列出帮助信息  

7.     -l [login]       login name                      指定登录名  

8.     -p [password]        password                         
指定登录密码  

9.     -S [path]            script to run to retrieve 
password
指定通过某个脚本返回  

10.密码,加强安全性  

11.   -o [action]      Reboot (default), Off, On, or Status   
指定要通过RSA  

12.行的操作  

13.   -v Verbose       Verbose mode                        
通过Verbose模式运行  

14.   -V               Print Version, then exit            
显示当前程序的版本号 

首先要对服务器的Fence进行设置,这个通常要重启服务器后才能进入BIOS进行设定。由于每个服务器及其BIOS版本都会有所不同,因而在设置时请参考服务器说明手册。主要设置的是接口的IP地址及账号密码。

然后在系统中通过fence_rsa进行测试:

1.  [root@server1 ~]# fence_rsa -a 192.168.101.21
-l USERID -p PASSW0RD -o Status  

2.  Server is on.  

3.  [root@server1 ~]# echo $?  

4. 

不同的Fence接口会返回不同的运行信息,运行fence测试命令后可通过$?进行判断,如果返回值为"0"则证明此Fence接口可用。

此时可以通过system-config-cluster命令重新设置集群中的Fence功能

(1) 在图12-4左边的树状节点中选中"Fence Devices",单击"Add a Fence Device"打开Fence配置窗口。

(2) "Add a New Fence Device"下拉菜单中选中"IBM RSA II Device",并按"12-21""12-22"所示内容进行设置。

 

12-21  添加server1Fence设备

 

 

12-22  添加server2Fence设备

(3) 在左边的树状目录中选中server1.example.com,单击"Manage Fencing For This Node"

(4) 选中"m_fencing",单击"Remove this Fence"

(5) 选中"Fence-Level-1",单击"Add a New Fence to this Level",在"Fence Properties"窗口的"Add a New Fence"下拉菜单中选择刚才建立的名为"rsa1"的设备,如图12-23所示。

 

12-23  指定Fence Level使用的Fence设备

(6) 在节点server2.example.com上重复以上工作,将其与名为"rsa2"的设备进行绑定。

重新参考"系统服务cman启动""心跳线断链"部分的内容来进行测试操作,此时在服务器启动及系统切换的所有过程中,RHCS都会通过IBM RSA IIFence机制来实现系统的自动关机及启动管理。

失效节点重新加入

服务器server2重新开机并启动系统后,通过启动系统服务cmanrgmanager可重新加入集群。

停止RHCS

需要手动停止RHCS服务时,请先停止rgmanager,然后再停止cman

自动启动

在确认以上各个过程都能顺利操作后,可通过在两个服务器中执行以下操作来实现开机自动启动:

1.  [root@server1 ~]# chkconfig cman on  

2.  [root@server1 ~]# chkconfig rgmanager on  

3.   

4.  [root@server2 ~]# chkconfig cman on  

5.  [root@server2 ~]# chkconfig rgmanager on 

注意:

1) 当所有服务器都处于关机状态且需要重新开机时,请确认服务器按先后顺序来启动,千万不要将多个集群节点服务器同时启动,因为这可能会由于启动时集群信息的不完整而导致服务器在启动过程中被Fence

2) 若发现服务器启动时出现异常,可通过"单用户模式"来运行系统,将cmanrgmanager的启动状态设为off后再按步骤进行排错。

6. 通过Conga配置RHCS

system-config-cluster外,RHCS还提供了另外一个用于配置集群的工具--Conga。与system-config-cluster不同的是,Conga基于B/S结构,因而可以在不同平台上对集群进行配置和管理。当前国内大部分用户的管理终端都是Windows系统,Conga是跨平台管理的最佳解决方案。

回顾本节最开始的"红帽集群套件RHCS安装"那部分内容,通过yum安装的luciricci就是Conga的组件。

(1) 首先,初始化Conga服务:

1.  [root@server1 ~]# luci_admin init  

2.  Initializing the luci server  

3.  Creating the 'admin' user  

4.  Enter password:  

5.  Confirm password:  

6.  Please wait...  

7.  The admin password has been successfully set.  

8.  Generating SSL certificates...  

9.  The luci server has been successfully initialized  

10.You must restart the luci server for changes to take effect.  

11.Run "service luci restart" to do so 

(2) 启动Conga服务:

1.  [root@server1 ~]# /etc/init.d/ricci start  

2.  Starting ricci:                                            [  OK  ]  

3.  [root@server1 ~]# /etc/init.d/luci start  

4.  Starting luci:                                             [  OK  ]  

5.  Point your web browser to https://server1.
example.com:8084 to access luci 

(3) 通过浏览器进入https://server1.example.com:8084https//192.168.101.11:8084,如图12-24所示。

 

(点击查看大图)图12-24  Conga登录界面

(4) 通过"homebase"|"Add an Existing Cluster",将前面已通过system-config-cluster的集群信息导入到Conga中进行管理,如图12-25所示。

 

(点击查看大图)图12-25  将集群信息导入到Conga

(5) "System Hostname""Root Password"中分别填入其中一个节点的机器名及root管理员密码。需要注意的是,当前Conga只支持完整的机器名(要求格式为xxx.xxx.xxx)单击"View SSL cert fingerprints",将会看到图12-26所示的信息,然后单击"Submit"

 

12-26  server1SSL key fingerprint(1)

(6) 通过server1.example.comConga发现了一个名为new_cluster的集群并发现了新的节点server2.example.com,如图12-27所示。

 

(点击查看大图)图12-27  server1SSL key fingerprint(2)

(7) 选中"Check if system passwords are identical"以确定两台服务器的root密码一致,单击"Submit",得到图12-28所示的结果,表明集群导入成功。

 

(点击查看大图)图12-28  集群new_cluster导入成功

(8) 打开"cluster"标签页,如果当前集群还没有通过cmanrgmanager启动,那么将得到图12-29所示的界面。

 

(点击查看大图)图12-29  集群运行管理界面

(9) 选择"Start this cluster"并单击"Go",此时集群服务cmanrgmanager会在两台服务器上启动,而不需要再逐一地对这两个服务进行启动操作,如图12-30所示。

(10) 集群启动后,会自动跳转到图12-31所示的界面,通过此界面管理员可以对集群进行各种设定。每次设定修改提交后,新的设定信息会同步到集群中的各个节点,更新其cluster.conf文件并使新设置生效,这大大减轻了管理员的工作压力。

 

(点击查看大图)图12-30  通过Conga启动集群

 

 

(点击查看大图)图12-31  通过Conga来管理节点、Fence、服务及资源等

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics