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设备及 eth0、eth1连接到同一网络中 连接方案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.com和server2.example.com,如图12-5所示。此处不但添加了节点,还同时指定了集群的"心跳"。由于在/etc/hosts中已经指定了两个节点名称对应的IP分别为192.168.100.11和192.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.com及server2. example.com加入到当前的Failover Domain中,如图12-10所示。
Restrict Failover To This Domains Members:指派给这个Failover Domain的Service只可以在当前加入的成员上执行;如果不选此项,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 ID:RHCS中要求每个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 Domain与Service之间的关系,以及Service与Resrouces之间的关系,是集群配置中最重要的一环。
(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_fs的File 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:指定进行切换时所使用的策略,通过RHCS的rgmanager可以在运行时对服务中的各个资源进行检测,一旦检查到某个资源的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_HOME、ORACLE_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服务的运行状态,并实现了start、stop及status操作方法。当一个应用或资源要求基于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_cluster, version = 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集群基于ccsd及openasi,因此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.集群发现两个节点,当前加入节点的心跳IP为192.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,且server1和server2均为在线状态(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.集群发现两个节点,当前加入节点的心跳IP为192.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,此命令告诉cman,server2已经由管理员进行处理并完全离开集群。此时,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操作时,内部就是通过调用这些命令完成的。下面以IBM的RSA 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. 0
不同的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 添加server1的Fence设备 |
|
图12-22 添加server2的Fence设备 |
(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 II的Fence机制来实现系统的自动关机及启动管理。
失效节点重新加入
服务器server2重新开机并启动系统后,通过启动系统服务cman及rgmanager可重新加入集群。
停止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) 若发现服务器启动时出现异常,可通过"单用户模式"来运行系统,将cman及rgmanager的启动状态设为off后再按步骤进行排错。
6. 通过Conga配置RHCS
除system-config-cluster外,RHCS还提供了另外一个用于配置集群的工具--Conga。与system-config-cluster不同的是,Conga基于B/S结构,因而可以在不同平台上对集群进行配置和管理。当前国内大部分用户的管理终端都是Windows系统,Conga是跨平台管理的最佳解决方案。
回顾本节最开始的"红帽集群套件RHCS安装"那部分内容,通过yum安装的luci和ricci就是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:8084或https//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 server1的SSL key fingerprint(1) |
(6) 通过server1.example.com,Conga发现了一个名为new_cluster的集群并发现了新的节点server2.example.com,如图12-27所示。
|
(点击查看大图)图12-27 server1的SSL key fingerprint(2) |
(7) 选中"Check if system passwords are identical"以确定两台服务器的root密码一致,单击"Submit",得到图12-28所示的结果,表明集群导入成功。
|
(点击查看大图)图12-28 集群new_cluster导入成功 |
(8) 打开"cluster"标签页,如果当前集群还没有通过cman及rgmanager启动,那么将得到图12-29所示的界面。
|
(点击查看大图)图12-29 集群运行管理界面 |
(9) 选择"Start this cluster"并单击"Go",此时集群服务cman及rgmanager会在两台服务器上启动,而不需要再逐一地对这两个服务进行启动操作,如图12-30所示。
(10) 集群启动后,会自动跳转到图12-31所示的界面,通过此界面管理员可以对集群进行各种设定。每次设定修改提交后,新的设定信息会同步到集群中的各个节点,更新其cluster.conf文件并使新设置生效,这大大减轻了管理员的工作压力。
|
(点击查看大图)图12-30 通过Conga启动集群 |
|
(点击查看大图)图12-31 通过Conga来管理节点、Fence、服务及资源等 |
相关推荐
RHCS+Oracle配置实战图解[汇编].pdf
综上所述,RHCS+Oracle双机实验涉及了服务器硬件、操作系统、网络配置、数据库安装、RAID控制器驱动的编译以及集群配置等多个环节,这是一个复杂的高可用性解决方案,旨在确保Oracle数据库服务的稳定性和可靠性。...
linux+rhcs+oracle 是很多初学者,会省去双机软件的采购费用。
### CentOS 5+RHCS+ORACLE 10G 双机热备 #### 实验环境与目的 本文档旨在详细介绍如何使用CentOS 5、RHCS(Red Hat Cluster Suite)以及Oracle 10g搭建一套高效且经济的双机热备系统。此方案为那些寻求低成本且...
RHCS(Oracle)配置实战图解[汇编].pdf
linux集群,rhcs、iscsi和gfs2提供共享存储,通过lvs搭建基于共享存储的双机热备web服务,根据lvs的工作模式可选负载均衡、互为主备的工作模式。
课程目标学会红帽6.9KVM+RHCS+ORACLE11GR2+HA+GFS2的安装和维护适用人群IT初级工程师,系统管理员,主机工程师,数据库DBA课程简介在本地自己的操作系统上,完全模拟生产环境,让学员学会红帽6.9怎样搭建rhcs集群,以及...
RHCS+安装测试.pdf
Redhat_RHCS_Oracle配置_红帽双机热备配置
redhat rhcs集群 for oracle配置!主要讲述了redhat rhcs集群配置,以及如何结合oracle部署os层高可用集群oracle。
RHCS高可用集群实战经典的实战指南涉及了RHCS的全面部署,包括硬件配置、操作系统配置、集群安装、资源管理和监控等方面的知识。RHCS集群可以确保关键业务在硬件故障或其他问题导致单节点失效的情况下继续运行。该...
《Linux环境下利用RHCS配置Oracle高可用性HA集群》 在IT行业中,为了确保关键业务系统的高可用性和稳定性,通常会采用集群技术。本手册详细介绍了如何在Linux系统上利用Red Hat Cluster Suite (RHCS)配置Oracle高...
大牛写的CentOS_5.5+RHCS来实现ORACLE_10.2_双机热备 第一章 实验环境介绍 第二章 IPSAN的配置 第三章 安装和配置第一个RHCS服务 第四章 操作系统补丁包安装和参数调整 第五章 安装数据库软件并创建第一个数据库实例...
RHEL5.4与RHCS(Red Hat Cluster Suite)集群配置是Red Hat Enterprise Linux系统中构建高可用性与负载均衡集群的重要部分。RHCS是基于Pacemaker和Corosync项目开发的集群软件,它提供了对服务和资源的管理和配置,...
这份文档对于成功安装和配置Oracle 11g 203与RHCS是非常重要的参考资料,建议仔细阅读并遵循其中的步骤。 在实际操作中,务必遵循最佳实践,保证数据库的安全性、稳定性和性能。同时,安装和配置过程中应做好日志...
在RHCS(Red Hat Cluster Suite)配置以及Oracle高可用性集群配置中,我们主要关注的是如何确保数据库服务在多台服务器之间实现高可用性和故障切换。以下是一些关键知识点: 1. **RHCS配置**:RHCS是Red Hat提供的一...
ISCSI+Fence+GFS2+RHCS+NFS+httpd+Qdiskd 集群教程精简版 第01 单元-RHCS 简介 第02 单元-RHCS 原理(摘编) 第03 单元-RHCS 三种配置管理方法 第04 单元-RHCS 要打开哪些端口 第05 单元-实验拓朴 第06 单元-...
根据提供的信息,我们可以详细解析与RHCS集群配置相关的知识点,主要涵盖以下几个方面: ### RHCS集群配置概述 RHCS(Red Hat Cluster Suite)是Red Hat公司提供的一套用于构建高可用性和负载均衡集群的解决方案。...