Oracle 管理10g/11.1 Clusterware CRS/CSS

本文永久地址: https://www.askmaclean.com/archives/oracle-clusterware-management-11.html

 

学完本课后,应能完成以下工作:

  • 手动控制 Oracle Clusterware 堆栈
  • 更改表决磁盘配置
  • 备份或恢复表决磁盘
  • 手动备份 OCR
  • 恢复 OCR
  • 替换 OCR 镜像
  • 修复 OCR 配置
  • 更改 VIP 地址
  • 使用 CRS 框架
  • 防止实例自动重新启动

本课的目标是了解可在 Oracle Clusterware 级别执行的各种管理任务。虽然本课清楚详细地介绍了一些重要过程,但并没有系统地说明所使用的每个命令行工具的完整语法。在本课中,您将使用以下工具管理 Oracle Clusterware:

  • crsctl
  • crs_stat
  • ocrconfig
  • ocrcheck
  • ocrdump
  • srvctl
  • oifcfg
  • crs_profile、crs_register、crs_setperm、crs_start、crs_relocate、crs_stop、crs_unregister

有关可在本课中看到的各种命令选项的详细信息,请参阅《Oracle Database Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide》。

 

 

 

Oracle Clusterware概览

 

  • 可为 RAC 数据库和(或)其它应用程序提供 HA 的可移植集群基础结构:

监视应用程序的运行状况

出现故障时重新启动应用程序

节点出现故障时可以对应用程序进行故障转移

 

 

Oracle Clusterware 是向 RAC 数据库和其它应用程序提供高可用性 (HA) 的可移植集群基础结构。Oracle Clusterware 通过以下方式确保应用程序的高可用性:监视应用程序的运行状况,在出现故障时重新启动应用程序,在当前使用的节点出现故障或应用程序无法再在当前节点中运行时将应用程序重新定位到其它集群节点。节点出现故障时,某些类型的受保护应用程序(如数据库实例)不会被故障转移到正常节点。

此处,集群是两个或多个节点的集合,这些节点共享一个由 Oracle Clusterware 系统文件(OCR 和表决磁盘)、公用网络互连和公用操作系统使用的公用存储池。

本幻灯片中的图形说明了一个可能的三节点配置,其中节点 1 运行 RAC 数据库实例、监听程序和应用程序 A,它们都受 Oracle Clusterware 保护。

在节点 2 上,只有 RAC 数据库实例和监听程序受 Oracle Clusterware 保护。

在节点 3 上,应用程序 B 受 Oracle Clusterware 保护。

Oracle Clusterware 定期监视所有受保护的应用程序,它可以根据定义的故障转移策略,在同一节点上重新启动这些应用程序,或将这些应用程序重新定位到其它节点,也可以决定不重新启动这些应用程序。

注:虽然 Oracle Clusterware 是使用 RAC 时的必需组件,但如果仅用于保护 RAC 数据库以外的应用程序,则不需要 RAC 许可证。

 

Oracle Clusterware 运行时视图

 

在 UNIX 上,Oracle Clusterware 堆栈通过 respawn 从 /etc/inittab 中的项运行。在 Windows 上,该堆栈使用服务控制器运行。下面是对各进程的基本描述:

  • 集群同步服务守护程序 (OCSSD):此进程既可以在供应商集群件环境中运行,也可以在非供应商集群件环境中运行。它能够与现有供应商集群件(如果存在)相集成。OCSSD 的主要工作是监视节点间运行状况(主要使用网络互连和表决磁盘来执行此工作),以及通过组服务发现数据库/ASM 实例端点。OCSSD 以 oracle 用户身份运行,在因故障退出时可以使计算机重新启动,以防止在出现裂脑 (split brain) 时数据遭到损坏。
  • 进程监视器守护程序 (OPROCD):此进程是在任意非供应商集群件环境中衍生的。如果 OPROCD 检测到问题,它就会终止相应节点。它以 root 用户身份运行。此守护程序用于检测计算机硬件问题及驱动程序冻结问题。如果某台计算机被冻结了很长时间,以致其它节点将其从集群中逐出,则该计算机需要自行终止,以防止在集群的其余节点重新配备锁定后向磁盘重新发出任何 I/O。
  • 集群就绪服务守护程序 (CRSD):此进程是高可用性操作的引擎。它管理由 Oracle Clusterware 注册的应用程序,它通过特殊操作脚本启动、停止和检查这些应用程序,并对其进行故障转移。CRSD 可衍生名为 RACGIMON 的专用进程,后者用于监视数据库和 ASM 实例的运行状况,并存储各种功能线程,如快速应用通知 (FAN)。将为每个实例衍生一个 RACGIMON 进程。CRSD 将在 OCR(Oracle 集群注册表)中维护配置概要文件以及资源状态。它以 root 用户身份运行,在出现故障时可以自动重新启动。此外,CRSD 可以衍生临时子项,用于执行某些特殊操作,例如:

-racgeut(按计时器执行),用于终止在某个时间段后未完成的操作

-racgmdb(管理数据库),用于启动/停止/检查实例

-racgchsn(更改服务名称),用于添加/删除/检查实例的服务名称

-racgons,用于向 OCR 添加/删除 ONS 配置

-racgvip,用于启动/停止/检查实例虚拟 IP

  • 事件管理守护程序 (EVMD):此进程可在发生事件时转发集群事件。它可以衍生一个永久性的子 evmlogger,而后者可根据需要衍生用于调用调出的子项(如 racgevtf)。它以 oracle 用户身份运行,在出现故障时可以自动重新启动。

注:RACG 基础结构用于在高可用的集群环境中部署 Oracle DB。此基础结构主要使用 racgwrap 脚本实现,该脚本将调用 racgmain 程序。CRS 将使用此基础结构为所有以节点为中心的资源执行各种操作,并为 RACGIMON 的所有以实例为中心的资源执行代理操作。一般情况下,此基础结构负责管理所有 ora.* 资源。

 

 

手动控制 Oracle Clusterware 堆栈

要实现计划停机,可能需要使用以下命令:

# crsctl stop crs -wait

# crsctl start crs -wait

# crsctl disable crs

# crsctl enable crs

 

添加 Oracle Clusterware 节点时,Oracle Clusterware 进程会自动启动。可以通过使用 crsctl 命令来控制此操作。在应用补丁程序或任何计划停机期间,可能必须手动控制 Oracle Clusterware 堆栈。此外,当与 Oracle Clusterware 组合使用时,第三方集群件也可以使用这些命令。

可以使用 crsctl stop crs 命令停止 Oracle Clusterware 堆栈。

也可以使用 crsctl start crs 命令启动 Oracle Clusterware 堆栈。–wait 选项可显示每个守护程序的进度和状态。没有该选项,命令会立即返回。

使用 crsctl disable crs 命令可以阻止 Oracle Clusterware 在以后重新启动时被启动。此命令不会停止当前正在运行的 Oracle Clusterware 堆栈。

使用 crsctl enable crs 命令可以允许 Oracle Clusterware 在以后重新启动时被启动。

注:必须以 root 用户身份运行这些命令。

 

CRS 资源

  • 资源是受 CRS 管理的应用程序
  • 应用程序概要文件属性存储在 OCR 中:

检查间隔

故障策略

  • 操作脚本必须能够执行以下操作

启动应用程序

停止应用程序

检查应用程序

  • 资源的生命周期:

CRS 是管理集群中应用程序的高可用性操作的主要应用程序。CRS 所管理的应用程序统称为资源。默认情况下,CRS 可以管理 RAC 资源,如数据库实例、ASM 实例、监听程序、实例 VIP、服务、ONS 和 GSD 等。CRS 还可以管理其它类型的应用程序进程和应用程序 VIP。系统将根据存储在 OCR 中的 CRS 资源配置参数(资源概要文件)及存储在任意位置的操作脚本来管理 CRS 资源。资源概要文件包含检查间隔、故障策略、操作脚本名称、CRS 管理应用程序时应使用的权限,以及资源相关性等信息。操作脚本必须能够启动、停止和检查应用程序。

CRS 提供了以下工具来支持资源的生命周期:

  • crs_profile,用于创建和编辑资源概要文件。
  • crs_register,用于向 CRS 所管理的应用程序列表添加资源。
  • crs_start,用于根据资源的概要文件启动资源。资源启动后,CRS 会定期使用检查操作来持续地监视其应用程序进程。此外,如果应用程序意外脱机,系统将根据应用程序的资源概要文件重新启动该应用程序并(或)将其故障转移到其它节点。
  • crs_stat,用于通知资源列表的当前状态。
  • crs_relocate,用于将资源移到集群中的其它节点。
  • crs_unregister,用于将资源从 CRS 的监视范围中删除。

 

RAC 资源

$ /bin/crs_stat -t
Name                            Type        Target State  Host
----------------------------------------------------------------
ora.atlhp8.ASM1.asm             application ONLINE ONLINE atlhp8
ora.atlhp8.LISTENER_ATLHP8.lsnr application ONLINE ONLINE atlhp8
ora.atlhp8.gsd                  application ONLINE ONLINE atlhp8
ora.atlhp8.ons                  application ONLINE ONLINE atlhp8
ora.atlhp8.vip                  application ONLINE ONLINE atlhp8
ora.atlhp9.ASM2.asm             application ONLINE ONLINE atlhp9
ora.atlhp9.LISTENER_ATLHP9.lsnr application ONLINE ONLINE atlhp9
ora.atlhp9.gsd                  application ONLINE ONLINE atlhp9
ora.atlhp9.ons                  application ONLINE ONLINE atlhp9
ora.atlhp9.vip                  application ONLINE ONLINE atlhp9
ora.xwkE.JF1.cs                 application ONLINE ONLINE atlhp8
ora.xwkE.JF1.xwkE1.srv          application ONLINE ONLINE atlhp8
ora.xwkE.JF1.xwkE2.srv          application ONLINE ONLINE atlhp9
ora.xwkE.db                     application ONLINE ONLINE atlhp9
ora.xwkE.xwkE1.inst             application ONLINE ONLINE atlhp8
ora.xwkE.xwkE2.inst             application ONLINE ONLINE atlhp9



crs_stat –t 命令显示了当前受 Oracle Clusterware 控制的所有资源。在本幻灯片所示的示例中,仅包含以前缀 ora. 开头的资源。它们是在集群环境中实现 RAC 高可用性的资源。

可以看到,默认情况下 Oracle Clusterware 可以控制数据库、数据库实例和 ASM 实例、VIP/ONS/GSD/监听程序(也称为 nodeapps)、服务和服务成员。

在本幻灯片中,资源的 Target 状态为 ONLINE,这表示在节点下一次重新启动时,Oracle Clusterware 将尝试自动启动它们。

State 显示了资源的当前状态。

Target 可以为 ONLINE 或 OFFLINE。

State 可以为 ONLINE、OFFLINE 或 UNKNOWN。UNKNOWN 是失败的启动/停止操作所产生的状态,只能由 crs_stop -f resourceName 命令重置。可以使用 Target 和 State 的组合来确定资源是将要启动还是将要停止。

Host 显示了在其中管理资源的主机的名称。

注:由于格式方面的原因,使用 crs_stat –t 命令时会截断资源名称。为了清楚起见,输出示例恢复了资源的完整名称。

 

资源属性:示例

$ /bin/crs_stat -p ora.JFDB.JFDB1.inst
NAME=ora.JFDB.JFDB1.inst
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10g/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600
DESCRIPTION=CRS application for Instance
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=atlhp8
PLACEMENT=restricted
REQUIRED_RESOURCES=ora.atlhp8.ASM1.asm
RESTART_ATTEMPTS=5
…
$ /bin/crs_stat –t ora.xwkE.xwkE1.inst
Name           Type         Target    State    Host
-----------------------------------------------------
ora....E1.inst application  ONLINE    ONLINE   atlhp8


 

可以使用 crs_stat –p resource_name 命令打印已命名的资源的 OCR 内容。本幻灯片中的示例显示了需要为 RAC 数据库实例获取的 OCR 内容。对于每个资源而言,并非所有属性都是必需的。下面简要介绍了上述输出中所显示的最重要的属性:

  • NAME 是应用程序资源的名称。
  • 对于所有 CRS 资源,TYPE 必须为 APPLICATION。
  • ACTION_SCRIPT 是 CRS 用于启动、检查和停止应用程序的操作脚本的名称和位置。默认路径是 <CRS 主目录>/crs/script。
  • ACTIVE_PLACEMENT 默认值为 0。将其设置为 1 时,Oracle Clusterware 在添加或重新启动集群节点时会重新评估资源的位置。
  • AUTO_START 是一个标记,用于指示无论在集群重新启动之前资源是否处于运行状态,Oracle Clusterware 是否都应在集群重新启动后自动启动某个资源。如果将其设置为 0,则仅当资源在集群重新启动之前处于运行状态时,Oracle Clusterware 才会启动该资源。如果将其设置为 1,则 Oracle Clusterware 会在集群重新启动后始终启动该资源。如果将其设置为 2,则 Oracle Clusterware 从不重新启动资源(无论资源在节点停止时处于何种状态)。
  • CHECK_INTERVAL 是重复执行应用程序的检查命令的时间间隔(以秒为单位)。
  • DESCRIPTION 是对资源的描述。
  • FAILOVER_DELAY 是 Oracle Clusterware 在尝试重新启动资源或对其进行故障转移之前所等待的时间(以秒为单位)。
  • FAILURE_INTERVAL 是 Oracle Clusterware 应用故障阈值的间隔(以秒为单位)。如果该值为零 (0),则禁用故障跟踪。
  • FAILURE_THRESHOLD 是在 Oracle Clusterware 将资源标记为不可用并不再对其进行监视之前,在指定 FAILURE_INTERVAL 内检测到的故障数。如果资源的检查脚本多次超出此阈值,则将停止资源并将其设置为脱机。如果该值为零 (0),则禁用故障跟踪。最大值为 20。
  • HOSTING_MEMBERS 是可作为资源宿主的集群节点的顺序列表,各节点之间用空格分隔。运行 olsnodes 命令可查看节点名称。
  • PLACEMENT 定义位置策略(balanced、favored 或 restricted),该策略指定 Oracle Clusterware 如何选择在其中启动资源的集群节点:

-balanced:Oracle Clusterware 支持在当前运行最少资源的节点上启动或重新启动应用程序。将选择包含最少资源的主机。如果没有符合这些条件的节点,则会选择任何可用节点。

-favored:Oracle Clusterware 将引用应用程序概要文件的 HOSTING_MEMBERS 属性中的节点列表。只有位于此列表中并满足资源要求的集群节点才纳入位置考虑中。宿主节点的顺序确定了哪个节点应运行应用程序。如果宿主节点列表中没有可用节点,则 Oracle Clusterware 会将应用程序放在任意可用节点上。此节点可能包含也可能不包含在 HOSTING_MEMBERS 列表中。

-restricted:与 favored 策略相似,但有一点除外:如果宿主列表中没有可用节点,则 Oracle Clusterware 不会启动或重新启动应用程序。restricted 位置策略可确保从不在该列表中未包含的节点上运行应用程序,即使手动将该应用程序重新定位到该节点也是如此。

  • REQUIRED_RESOURCES 是此资源所依赖的资源名称的顺序列表,各名称之间用空格分隔。如果所需的资源不可用,则 Oracle Clusterware 会重新定位或停止应用程序。因此,在上一张幻灯片的示例中,可以看到要启动 JFDB1 实例,必须先启动 ASM 实例 ASM1。
  • RESTART_ATTEMPTS 是 Oracle Clusterware 在尝试重新定位单个集群节点上的资源之前尝试重新启动该资源的次数。超过 UPTIME_THRESHOLD 设置所指示的时段后,Oracle Clusterware 会将重新启动计数器的值 (RESTART_COUNTS) 重置为 0。一般来说,RESTART_COUNTS 在 UPTIME_THRESHOLD 时段内不能超过 RESTART_ATTEMPTS。

crs_stat –t resource_name 命令将显示已命名的资源的状态。在本幻灯片中,资源的 Target 状态为 ONLINE,这表示在节点下次重新启动时,Oracle Clusterware 将尝试启动该实例。State 显示该实例的当前状态。

注:由于格式方面的原因,本幻灯片中显示的输出被截断。

 

主要的表决磁盘voting  disk 功能

 

CSS 是一种服务,用于确定集群中哪些节点可用,并向其它进程提供集群组成员资格和简单锁定服务。CSS 通常通过专用网络与用作辅助通信机制的表决磁盘进行通信,从而确定节点的可用性。一般来说,此操作是通过网络和表决磁盘发送脉动消息来完成的,如位于本幻灯片顶部的图形所示。表决磁盘是集群文件系统上的共享裸磁盘分区或文件,集群中的所有节点都可以访问该磁盘。表决磁盘的主要用途是在专用网络通信失败的情况下提供帮助。如果发生这种情况,集群无法将所有节点都保持为可用状态,因为这些节点无法再使 I/O 与共享磁盘同步。因此,必须使其中某些节点脱机。这时,将使用表决磁盘传送节点状态信息,用于确定哪些节点脱机。如果不使用表决磁盘,则孤立的节点将无法确定是否遇到了网络故障或者其它节点是否不再可用。因此,集群就会进入以下状态:即节点的多个子集群无法同步访问相同的数据库文件。这种情况通常称为集群裂脑 (split-brain) 问题。

位于本幻灯片底部的图形说明了当节点 3 无法再向集群中的其它成员发送脉动时所发生的情况。如果其它节点无法再看到节点 3 的脉动,它们就会决定使用表决磁盘逐出该节点。当节点 3 读到删除消息时,通常会自行重新启动以确定所有未处理的写入 I/O 都已丢失。

 

注:除了表决磁盘机制以外,系统还为 RAC 数据库实例提供了一种类似的机制。在实例级别,所有参与实例均使用控制文件进行表决。此操作很有必要,因为即使节点之间的网络连接仍能正常工作,也会出现逐出实例的情况。

例如,如果 LMON 或 LMD 在一个实例上出现停滞,则可能会导致集群数据库被冻结。因此,为了避免整个集群被挂起,RAC 会从集群中逐出有问题的实例。

如果检测到问题,实例会竞相获得控制文件上的锁定。获得锁定的实例会记录实例的表决以确定成员资格。这称为实例成员资格重新配置 (IMR)。

 

重要的 CSS 参数

  • MISSCOUNT:

表示网络脉动超时

确定重新配置期间磁盘 I/O 超时

默认值为 30 秒

不能进行更改

  • DISKTIMEOUT:

表示重新配置以外的磁盘 I/O 超时

默认值为 200 秒

当表决磁盘遇到很长时间的 I/O 延迟时可临时进行更改:

  1. 关闭除一个节点之外的所有节点上的 Oracle Clusterware
  2. 在可用节点上以 root 用户身份使用以下命令:crsctl set css disktimeout M+1
  3. 重新启动可用节点。
  4. 重新启动所有其它节点。
  • 只有在 Oracle 技术支持明确指导下才能进行更改

 

CSS misscount 参数表示在输入集群重新配置以逐出节点之前,互连上的网络脉动可缺失的最长时间(以秒为单位)。misscount 参数的默认值为 30 秒。misscount 参数的值会推进集群成员资格的重新配置,并直接影响集群的可用性。其默认设置应为可接受的值。修改该值不仅会影响表决磁盘 I/O 的超时间隔,而且还会影响互连上缺失网络脉动的容限。这会直接影响数据库和集群可用性。使用供应商(非 Oracle)集群件时,CSS misscount 的默认值也为 30 秒。如果使用供应商集群件,则不应更改默认 misscount 值。

CSS disktimeout 参数表示在为了逐出节点而输入集群重新配置之前,磁盘脉动可缺失(集群重新配置事件以外)的最长时间(以秒为单位)。默认值为 200 秒。不过,如果表决磁盘的 I/O 延迟大于默认的内部 I/O 超时,则集群可能会遇到 CSS 节点被逐出的情况。导致这些延迟的最常见原因与多路径 I/O 软件驱动程序,以及因 I/O 路径故障而产生的重新配置次数有关。因此,在解决基础存储 I/O 延迟之前,可以仅根据“表决磁盘的最大 I/O 延迟”(因 I/O 路径重新配置而产生的延迟加上一秒,即 M+1)临时修改 disktimeout。

 

多路复用表决投票voting disk 磁盘

  • 表决磁盘是提供集群可用性的重要资源。
  • 如果表决磁盘存储在可靠磁盘中,则使用一个表决磁盘即可。
  • 对于其它情况,应使用多路复用表决磁盘:

不必依赖多路径解决方案。

多路复用副本应存储在独立的设备中。

确保表决磁盘设备具有足够的 I/O。

至少使用三个多路复用副本。

  • CSS 使用简单的多数决定规则来确定表决磁盘读数是否一致:

v = f*2+1

通过用多个表决磁盘来配置 CSS,可提高 CSS 的可用性。如果集群被配置为使用单个高可用性共享磁盘(数据库文件和 CSS 表决磁盘都位于该磁盘上),则只需一个表决磁盘就足够了。但如果使用可靠性较差的存储,则最好使用多个表决磁盘副本。此外,也可以使用多个表决磁盘,这样就无需依赖多路径解决方案。

实施表决磁盘多路复用的方法要求您必须至少具有三个表决磁盘。为避免单点故障,
多路复用表决磁盘应位于物理上独立且在低于饱和度的情况下具有良好可预测负荷的
存储设备中。

使用表决磁盘的多路复用副本时,CSS 会将表决数据多路复用到所有表决磁盘。每当 CSS 需要读取表决磁盘时,就会从所有表决磁盘中读取全部信息。如果确实有一半以上的表决磁盘处于正常运行状态并且包含一致的信息,则 CSS 可以使用与单个表决磁盘配置相同的方式来使用这些一致数据。如果不到一半的表决磁盘包含一致的可读数据,则 CSS 需要自行终止,这与 CSS 无法读取单个表决磁盘的情况相似。该自行终止旨在防止出现分离的子集群。最多可以有 32 个表决磁盘,请使用以下公式确定应使用的表决磁盘数:
v = f*2+1,其中 v 是表决磁盘数,f 是要恢复的磁盘故障数。

注:典型的表决磁盘配置包含 3 到 5 个磁盘。

 

更改表决磁盘配置

  • 可以动态更改表决磁盘配置。
  • 要添加新的表决磁盘,请使用以下命令:

# crsctl add css votedisk <新表决磁盘路径>

  • 要删除表决磁盘,请使用以下命令:

# crsctl delete css votedisk <旧表决磁盘路径>

  • 如果所有节点上的 Oracle Clusterware 都已关闭,请使用 force 选项:

# crsctl add css votedisk <新表决磁盘路径> force

# crsctl delete css votedisk <旧表决磁盘路径> force

 

在安装 Oracle Clusterware 期间,可以通过使用 Oracle Universal Installer 的“Specify Voting Disk Location(指定表决磁盘位置)”屏幕多路复用表决磁盘。通过此屏幕可以指定三个表决磁盘位置。不过,可以在安装 Oracle Clusterware 后,使用下列命令,以 root 用户身份动态添加和删除表决磁盘。

  • 要添加表决磁盘,请使用以下命令:crsctl add css votedisk path
  • 要删除表决磁盘,请使用以下命令:crsctl delete css votedisk path

其中 path 是全限定路径。

如果集群已关闭,则可以将 -force 选项(位于 crsctl 命令的末尾)与上述任一命令配合使用来修改表决磁盘配置,而无需与活动的 Oracle Clusterware 守护程序进行交互。但是,在任何集群节点处于活动状态时使用 -force 选项都可能会破坏配置。

 

备份和恢复表决磁盘

 

  • 应该不需要执行此操作,相反,应执行添加/删除操作。
  • 建议使用符号链接。
  • 使用 dd 命令备份一个表决磁盘。

在安装 Oracle Clusterware 之后

在添加或删除节点之后

不能联机执行

 

$ crsctl query css votedisk

 

$ dd if=<表决磁盘路径> of=<备份路径> bs=4k

 

  • 可以使用以下方法恢复表决磁盘:使用 dd 命令恢复第一个表决磁盘,然后根据需要对该磁盘进行多路复用。
  • 如果没有可用的表决磁盘备份,则应重新安装 Oracle Clusterware

应该不需要备份表决磁盘。只需添加一个新的表决磁盘和删除一个错误的表决磁盘即可。

建议使用符号链接指定表决磁盘路径。这是因为表决磁盘路径直接存储在 OCR 中,而系统不支持直接编辑 OCR 文件。通过使用指向表决磁盘的符号链接,可以在表决磁盘的原始位置无法再用作还原位置时更轻松地还原表决磁盘。

只要添加了新节点或删除了现有节点,就应对可用表决磁盘创建新的备份。建议使用 dd 命令(在 Windows 环境中为 ocopy)执行此操作。作为适用于大多数平台(包括 Linux 和 Sun)的通用规则,用于 dd 命令的块大小至少应为 4 KB,这样可以确保表决磁盘备份获得完整的块。

使用 dd 命令备份表决磁盘之前,请务必停止所有节点上的 Oracle Clusterware。

crsctl query css votedisk 命令可列出 CSS 当前所使用的表决磁盘。这有助于确定要备份的表决磁盘。

本幻灯片显示了备份和还原表决磁盘时可以遵循的过程。

注:如果所有表决磁盘都已丢失,并且没有任何备份,则必须重新安装 Oracle Clusterware。

 

OCR 体系结构

 

集群配置信息在 Oracle 集群注册表 (OCR) 中进行维护。OCR 依赖分布式共享高速缓存体系结构来优化查询,并对集群资料档案库执行集群范围的原子更新。集群中的每个节点都维护一个 OCR 内存中副本,以及访问其 OCR 高速缓存的集群就绪服务守护程序 (CRSD)。实际上,只有其中一个 CRS 进程对共享存储上的 OCR 文件执行读取和写入操作。该进程负责刷新自己本地的高速缓存,此外还会刷新集群中其它节点上的 OCR 高速缓存。对于集群资料档案库查询,OCR 客户机将直接与其来源节点上的本地 OCR 进程进行通信。客户机需要更新 OCR 时,会通过其本地 CRS 进程与正在执行输入/输出 (I/O) 的 CRS 进程进行通信,以便将更新后的 OCR 写入到磁盘上的资料档案库中。

主要的 OCR 客户机应用程序包括:Oracle Universal Installer (OUI)、SRVCTL、Oracle Enterprise Manager (EM)、Database Configuration Assistant (DBCA)、Database Upgrade Assistant (DBUA)、NetCA 和 Virtual Internet Protocol Configuration Assistant (VIPCA)。此外,OCR 还维护在 Oracle Clusterware 中定义的应用程序资源(具体指数据库、实例、服务和节点应用程序)的相关性和状态信息。

 

Oracle Clusterware 安装过程为您提供了自动镜像 OCR 的选项。使用此选项可创建另一个 OCR 文件(OCR 镜像文件),以复制原始 OCR 文件(OCR 主文件)。可以将 OCR 镜像文件放在集群文件系统上,也可以将其放在共享裸设备上。建议在安装期间对 OCR 进行镜像,但并不强制这么做。

在基于 UNIX 的系统上,OCR 配置文件的名称为 ocr.loc,OCR 文件的位置变量为 ocrconfig_loc 和 ocrmirrorconfig_loc。

如果基础存储不是 RAID,则强烈建议使用 OCR 镜像文件。这可防止 OCR 成为单点故障。

注:OCR 还可用作 ASM 单一实例中的配置文件,在该实例中,每个节点对应一个 OCR。

 

OCR 内容和组织结构

 

每种集群技术都需要有一个资料档案库,集群软件和其它识别集群的应用程序进程可以通过该资料档案库共享信息。Oracle Clusterware 使用 Oracle 集群注册表存储与它所管理的资源相关的信息。这些信息存储在一个使用键值对的树状结构中。

本幻灯片显示了构成 OCR 结构的主要分支:

  • SYSTEM 键,包含与 Oracle Clusterware 主要进程(如 CSSD、CRSD 和 EVMD)相关的数据。例如,CSSD 键包含有关 misscount 参数和表决磁盘路径的信息。
  • DATABASE 键,包含与在 Oracle Clusterware 中注册的 RAC 数据库相关的数据。如本幻灯片所示,您具有与实例、nodeapps、服务等有关的信息。
  • 可在 OCR 中找到的最后一类键与资源概要文件相关,Oracle Clusterware 将使用这些文件来维护其它已注册的应用程序的可用性。这些资源将包含其它应用程序 VIP、监视脚本和检查间隔值。

注:位于本幻灯片右侧的 XML 数据是使用 ocrdump –xml 命令获取的。

 

管理 OCR 文件及位置:概览

 

使用 ocrconfig 工具(Oracle 集群注册表的主要配置工具)可以执行以下操作:

  • 使用 –export 选项生成 OCR 的逻辑备份,以后又使用 –import 选项从这些备份还原 OCR 信息
  • 升级或降级 OCR
  • 使用 –showbackup 选项查看生成的备份(默认情况下,定期备份 OCR)。在默认位置(可使用 –backuploc 选项更改该位置)生成这些备份。如果需要,可在以后使用 –restore 选项还原 OCR 的物理副本。也可使用 -manualbackup 选项手动创建 OCR 备份。
  • 使用 –replace ocr 或 –replace ocrmirror 选项添加、删除或替换 OCR 主文件或 OCR 镜像文件。
  • 在支持服务的指导下使用 –overwrite 选项,通过该选项,可以在集群中的一个或多个节点因 OCR 损坏而无法启动时改写某些 OCR 保护机制。
  • 使用 –repair 选项更改列出 OCR 和 OCR 镜像位置的参数。

使用 ocrcheck 工具可以验证 OCR 及其镜像的 OCR 完整性。使用 ocrdump 实用程序可以将 OCR 内容(或其中一部分内容)写入文本文件或 XML 文件。

 

自动备份 OCR

 

  • OCR 内容对于 Oracle Clusterware 至关重要。
  • 实际上,OCR 会在以下时间自动进行备份:

每 4 小时:CRS 会保留最后 3 个副本。

每天结束时:CRS 会保留最后 2 个副本。

每周结束时:CRS 会保留最后 2 个副本。

 

$ cd $ORACLE_BASE/Crs/cdata/jfv_clus

$ lslt

rw-r–r– 1 root root 4784128 Jan  9 02:54 backup00.ocr

rw-r–r– 1 root root 4784128 Jan  9 02:54 day_.ocr

rw-r–r– 1 root root 4784128 Jan  8 22:54 backup01.ocr

rw-r–r– 1 root root 4784128 Jan  8 18:54 backup02.ocr

rw-r–r– 1 root root 4784128 Jan  8 02:54 day.ocr

rw-r–r– 1 root root 4784128 Jan  6 02:54 week_.ocr

rw-r–r– 1 root root 4005888 Dec 30 14:54 week.ocr


  • 更改自动备份的默认位置:

  # ocrconfigbackuploc /shared/bak

 

OCR 包含 RAC 和 Oracle Clusterware 的重要集群和数据库配置信息。集群中的一个 Oracle Clusterware 实例(CRSD 主实例)每 4 小时就会自动创建一次 OCR 备份,CRS 会保留最后 3 个副本。此外,该 CRSD 进程还会在每天和每周开始时创建 OCR 备份,并保留最后 2 个副本。本幻灯片对此进行了说明,可在其中看到 CRSD 主实例的默认备份目录的内容。

虽然无法定制备份频率或保留的副本数,但可以使用 ocrconfig -showbackup 命令标识自动保留的副本的名称和位置。

每个自动生成的 OCR 备份文件的默认目标位置均为
<CRS 主目录>/cdata/<集群名称> 目录。建议使用
ocrconfig -backuploc <新位置> 命令将此位置更改为由集群中所有节点共享的位置。此命令将采用一个参数,即新位置的完整路径目录名。

 

手动备份 OCR 

 

  • 每天都应在其它存储设备上备份 OCR 自动备份:

使用首选备份工具。

  • 按需执行物理备份:

# ocrconfigmanualbackup

  • 在进行重大更改之前和之后应对 OCR 进行逻辑备份:

# ocrconfig –export file name

  • 确保还原与当前系统配置相匹配的 OCR 备份。

由于 OCR 信息非常重要,因此还建议手动为自动生成的物理备份创建副本。可以使用任意备份软件来复制自动生成的备份文件。建议至少每天执行一次将这些文件备份到其它设备(不同于 OCR 主文件所在的设备)的操作。

可根据需要使用 –manualbackup 选项执行 OCR 备份。备份将在 -backuploc 选项指定的位置中生成。

此外,还应在进行重大配置更改(如在环境中添加或删除节点、修改 Oracle Clusterware 资源或创建数据库)之前和之后,导出 OCR 内容。请以 root 用户身份使用 ocrconfig -export 命令生成 OCR 逻辑备份。需要指定一个文件名作为该命令的参数,该命令会生成一个二进制文件,您将无法编辑该文件。

所做的大多数配置更改不仅会更改 OCR 内容,而且还会创建文件和数据库对象。还原 OCR 时,其中某些更改通常不会得到还原。如果其中某些配置更改失败,则不要将执行 OCR 还原作为恢复到先前配置的更正方法,因为这可能导致 OCR 的内容与系统其余部分的状态不相符。

注:如果尝试在 OCR 客户机运行过程中导出 OCR,则会发生错误。

 

使用物理备份恢复 OCR

1.找到物理备份:

$ ocrconfigshowbackup

2.检查其内容:

# ocrdumpbackupfile file_name

3.停止所有节点上的
Oracle Clusterware

# crsctl stop crs

 

4.还原 OCR 物理备份:

# ocrconfig –restore <CRS 主目录>/cdata/jfv_clus/day.ocr  

5.重新启动所有节点上的
Oracle Clusterware

# crsctl start crs

 

6.检查 OCR 完整性:

$ cluvfy comp ocr -n all

在基于 UNIX 的系统上,使用以下过程还原 OCR:

  1. 使用 ocrconfig -showbackup 命令标识 OCR 备份。可以作为 oracle 用户从任何节点执行此命令。输出会显示要在其中检索自动和手动生成的备份的节点和路径。使用 auto 或 manual 参数只显示一个类别。
  2. 使用 ocrdump -backupfile file_name 检查备份内容,其中 file_name 是备份文件的名称。
  3. 通过以 root 用户身份在所有节点上执行
    crsctl stop crs 命令,停止集群中所有节点上的 Oracle Clusterware。
  4. 通过以 root 用户身份使用以下命令应用步骤 1 中标识的 OCR 备份文件来执行还原,其中 file_name 是要还原的 OCR 文件的名称。在运行此命令之前,请确保 OCR
    配置文件 (/etc/oracle/ocr.loc) 中指定的 OCR 设备存在并且有效:ocrconfig -restore file_name
  5. 通过以 root 用户身份重新启动每个节点或运行 crsctl start crs 命令,重新启动集群中所有节点上的 Oracle Clusterware。
  1. 运行以下命令以验证 OCR 完整性,其中 -n all 参数将检索配置为集群一部分的所有集群节点的列表:
    cluvfy comp ocr -n all

使用逻辑备份恢复 OCR

1.找到使用 OCR 导出文件创建的逻辑备份。

2.停止所有节点上的 Oracle Clusterware

# crsctl stop crs

3.还原逻辑 OCR 备份:

# ocrconfig –import /shared/export/ocrback.dmp  

4.重新启动所有节点上的 Oracle Clusterware

# crsctl start crs

5.检查 OCR 完整性:

$ cluvfy comp ocr -n all

 

在基于 UNIX 的系统上,可使用以下过程导入 OCR:

  1. 通过标识先前使用 ocrconfig -export file_name 命令创建的 OCR 导出文件,标识要导入的 OCR 导出文件。
  2. 通过以 root 用户身份在所有节点上执行
    crsctl stop crs 命令,停止 RAC 数据库中所有节点上的 Oracle Clusterware。
  3. 通过使用以下命令应用步骤 1 中标识的 OCR 导出文件来执行导入操作,其中 file_name 是要从中导入 OCR 信息的 OCR 文件的名称:ocrconfig -import file_name
  4. 通过以 root 用户身份运行 crsctl start crs 命令重新启动每个节点,重新启动集群中所有节点上的 Oracle Clusterware。
  5. 运行以下集群验证实用程序 (CVU) 命令来验证 OCR 完整性,其中 -n all 参数将检索配置为集群一部分的所有集群节点的列表:cluvfy comp ocr -n all

 

替换 OCR 镜像:示例

 

 

# ocrcheck
Status of Oracle Cluster Registry is as follows:
   Version                  :          2
   Total space (kbytes)     :     200692
   Used space (kbytes)      :       3752
   Available space (kbytes) :     196940
   ID                       :  495185602
   Device/File Name         : /oradata/OCR1
    Device/File integrity check succeeded
   Device/File Name         : /oradata/OCR2
    Device/File needs to be synchronized with the other device

# ocrconfig –replace ocrmirror /oradata/OCR2

本幻灯片中的代码示例显示了如何替换现有 OCR 镜像文件。该示例假设您已具有了一个 OCR 镜像,但此镜像无法再按预期方式进行工作。触发此类重组的原因可能为:在 Enterprise Manager 中收到 OCR 故障预警,或直接在 Oracle Clusterware 预警日志文件中看到预警。

通过使用 ocrcheck 命令,可以清楚地看到 OCR 镜像不再与 OCR 主文件保持同步。然后,可以发出 ocrconfig –replace ocrmirror filename 命令将现有镜像替换为 OCR 主文件的副本。在该示例中,如果还决定重新定位 OCR 镜像文件,则 filename 可以是一个新文件名。

如果是 OCR 主文件发生故障,而 OCR 镜像仍可以正常工作,则可以改用 ocrconfig –replace ocr filename 命令。

注:本幻灯片中的示例显示了一个替换方案。但也可以使用类似的命令来添加或删除 OCR 主文件或镜像文件:

  • 通过执行 ocrconfig –replace ocr|ocrmirror filename,将 OCR 主文件或镜像文件添加到环境中(如果该文件尚未存在)。
  • 通过执行 ocrconfig –replace ocr|ocrmirror,删除 OCR 主文件或镜像文件。

 

修复 OCR 配置:示例

1.停止节点 2 上的 Oracle Clusterware

# crsctl stop crs

2.从节点 1 添加 OCR 镜像:

# ocrconfig –replace ocrmirror /OCRMirror

3.修复节点 2 上的 OCR 镜像位置:

# ocrconfig –repair ocrmirror /OCRMirror

 

4.启动节点 2 上的 Oracle Clusterware

# crsctl start crs

 

应使用 ocrconfig –repair 命令修复不一致的 OCR 配置信息。OCR 配置信息将存储在以下位置:

  • Linux 和 AIX 上的 /etc/oracle/ocr.loc 中
  • Solaris 和 HP-UX 上的 /var/opt/oracle/ocr.loc 中
  • Windows 上的注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ocr 中

如果在某个特定节点处于停止状态时 OCR 配置发生了更改,则可能需要修复该节点上的 OCR 配置。例如,如果在添加、替换或删除 OCR 期间某个节点未处于运行状态,则可能需要修复该节点上的 OCR。

本幻灯片中的示例说明了当集群中的第二个节点未运行 Oracle Clusterware 时,将 OCR 镜像文件添加到第一个节点的情况。

不能对正在运行 Oracle Clusterware 的节点执行此操作。

注:此操作只修复 OCR 配置信息,不会修复 OCR 自身。

 

OCR 注意事项

  • 如果使用裸设备还原 OCR 文件,则在执行添加或替换操作之前需要先确保这些文件已存在。
  • 使用 ocrconfig 时,必须使用 root 用户身份才能添加、替换或删除 OCR 文件。
  • 添加或替换 OCR 文件时,其镜像需要处于联机状态。
  • 如果删除了 OCR 主文件,则 OCR 镜像文件将成为
    主文件。
  • 任何时候都不能删除最后一个保留的 OCR 文件。

下面列出了使用 ocrconfig –replace 命令时的重要注意事项:

  • 如果使用裸设备,则在使用 ocrconfig 发出添加或替换操作之前,应确保文件名已存在。
  • 要使用 ocrconfig 执行添加、替换或删除操作,必须以 root 用户身份登录。
  • 要替换的 OCR 文件既可以处于联机状态,也可以处于脱机状态。
  • 如果删除了 OCR 主文件,则 OCR 镜像文件将成为 OCR 主文件。
  • 除非至少有另外一个活动 OCR 文件处于联机状态,否则不要执行 OCR 删除操作。

 

 

更改 VIP 地址

1.确定用于支持 VIP 的接口:

$ ifconfig -a

2.停止依赖 VIP 的所有资源:

$ srvctl stop instance -d DB –i DB1

$ srvctl stop asm -n node1

# srvctl stop nodeapps -n node1

 

3.验证 VIP 不再处于运行状态:

$ ifconfig -a

$ crs_stat

4.更改 /etc/hosts 中的 IP DNS。

 

 

VIP 地址是静态 IP 地址,包含一个通过 DNS 或主机文件定义和解析的虚拟主机名。在安装 Oracle Clusterware 期间,系统会提示您为集群中的每个节点输入一个虚拟 IP 地址和虚拟主机名。这些 VIP 将存储在 OCR 中,Oracle Clusterware HA 框架中的各种组件都依赖这些 VIP。如果出于某些原因需要更改 VIP 地址,应对每个节点执行以下过程(一次执行一个过程):

  1. 通过运行 ifconfig –a 命令,确认 VIP 的当前 IP 地址。在 Windows 上,运行 ipconfig /all 命令。此操作将显示绑定到其中一个网络接口的当前 VIP。
  2. 停止依赖于该节点上 VIP 的所有资源:首先停止数据库实例,然后停止 ASM 实例。完成后,停止 nodeapps。
  3. 通过再次执行 ifconfig -a 命令,验证 VIP 不再处于运行状态,并确认输出中不再列出其接口。如果接口仍显示为联机,则表示依赖该 VIP 的某个资源仍在运行。使用 crs_stat -t 命令有助于显示仍处于联机状态的资源。
  4. 对所有节点的 /etc/hosts 文件(在 UNIX 上)或 \WINNT\System32\drivers\etc\hosts 文件(在 Windows 上)进行任何必要的更改,然后对 DNS 进行必要的更改,从而使新 IP 地址与旧主机名相关联。

 

更改 VIP 地址

5.使用 srvctl 修改 VIP 地址:

# srvctl modify nodeapps -n node1 -A 192.168.2.125/255.255.255.0/eth0  

6.启动 nodeapps 及依赖它的所有资源:

# srvctl start nodeapps -n node1

7.对下一节点重复执行从步骤 1 开始的步骤。

  1. 修改 nodeapps 并提供新的虚拟 IP 地址。使用带有 –A 选项的 srvctl modify nodeapps 命令。应以 root 用户身份运行此命令。在本幻灯片的示例中,依次指定了新 IP 地址 (192.168.2.125)、相应的网络掩码 (255.255.255.0) 以及希望 VIP 使用的接口 (eth0)。
  2. 重新启动 nodeapps。
  3. 对集群中的所有节点重复上述步骤。由于 srvctl 是集群范围的管理工具,因此可以与第一个节点保持连接。

注:如果只更改了 IP 地址,并且 listener.ora、tnsnames.ora 和初始化参数文件使用的是虚拟主机名,则无需对这些文件进行更改。如果同时更改了节点的虚拟主机名和 VIP 地址,则需要用新的虚拟主机名修改这些文件。对于 listener.ora 文件,可以使用 netca 来删除旧监听程序并创建一个新监听程序。此外,还需要对连接到旧虚拟主机名的所有客户机的 tnsnames.ora 文件进行更改。

 

更改公用/互连 IP 子网配置:示例

可使用 oifcfg 添加或删除 OCR 中的网络接口信息:

$ <CRS 主目录>/bin/oifcfg getif

eth0 139.2.156.0 global public

eth1 192.168.0.0 global cluster_interconnect  

$ oifcfg delif -global eth0

$ oifcfg setif –global eth0/139.2.166.0:public  

$ oifcfg delif –global eth1

$ oifcfg setif –global eth1/192.168.1.0:cluster_interconnect  

$ oifcfg getif

eth0 139.2.166.0 global public

eth1 192.168.1.0 global cluster_interconnect  

 

在安装 Oracle Clusterware 和 RAC 时,在 OUI 交互阶段,您可能会指定与 Oracle Clusterware 将使用的公用和互连接口有关的错误信息。如果发生这种情况,则 Oracle Clusterware 可以在安装过程结束时启动,但以后在与集群中的其它节点进行通信时可能会遇到问题。如果公用网络和互连的接口、IP 子网或 IP 地址不正确或需要进行更改,则应使用 Oracle 接口配置工具 (oifcfg) 进行更改,因为这样可以更新相应的 OCR 信息。

在本幻灯片所显示的示例中,公用网络和专用网络的 IP 子网都不正确:

  1. 使用 getif 选项可以获取当前接口信息。
  2. 先使用 delif 选项删除与公共接口对应的项,然后使用 setif 选项输入正确的信息。
  3. 对专用互连执行相同的操作。
  4. 检查新信息是否正确。

注:可以将网络接口存储为全局接口或节点特定的接口。如果 RAC 集群的所有节点都具有连接到同一子网的同一接口(推荐),则会将接口存储为全局接口。仅当集群中的某些节点具有不同的接口和子网集时,才会将接口存储为节点特定的接口。

 

 

第三方应用程序保护:概览

  • 高可用性框架:

使用命令行工具在 CRS 中注册应用程序

调用控制应用程序代理以管理应用程序

使用 OCR 描述应用程序的 CRS 属性

  • 高可用性 C API:

直接修改 OCR 中的 CRS 属性

空闲时修改 CRS 属性

  • 应用程序 VIP:

用于通过网络方式进行访问的应用程序

NIC 冗余

NIC 故障转移

  • OCFS:

存储应用程序配置文件

在集群节点之间共享文件

 

Oracle Clusterware 提供了两种可用的公共组件,可用于帮助保护集群上的任何应用程序:

  • 高可用性框架提供了通过命令行工具(如 crs_register、crs_start 和 crs_stop)管理受 CRS 保护的应用程序的工具。此框架还可用于自动调用已创建的控制脚本,以便 CRS 可以启动、停止和监视应用程序。可以将 OCR 用作资料档案库来定义故障转移策略和其它重要参数,以便 CRS 能够控制应用程序。
  • 可以使用 C API 直接操纵 OCR,以定义 CRS 保护应用程序的方式。可以在运行时使用此 API 修改 CRS 管理应用程序的方式。有关 C API 的内容不在本课程讨论范围内。

如果通过网络方式访问希望得到 CRS 保护的应用程序,则可以为应用程序创建虚拟 Internet 协议地址。这称为应用程序 VIP。Oracle Clusterware 所创建的应用程序 VIP 可以从一个网卡 (NIC) 故障转移到同一节点上的另一个网卡,并且可以在给定节点上的所有公用网络都关闭的情况下,从一个 NIC 故障转移到另一个节点上的 NIC。

此外,应用程序可能需要将配置文件存储在磁盘上。为了能在节点之间共享这些文件,Oracle Corporation 还提供了 Oracle 集群文件系统 (OCFS)。

 

应用程序 VIP RAC VIP 之间的差异

  • RAC VIP 主要用于发生节点关闭事件的情况中:

VIP 将被故障转移到正常节点。

VIP 会从该节点将 NAK 返回到客户机,从而强制客户机重新进行连接。

无需对与 VIP 关联的资源进行故障转移。

  • 应用程序 VIP 主要用于发生应用程序关闭事件的情况中:

VIP 将与应用程序一起被故障转移到其它节点。

从该节点中,客户机仍可通过 VIP 进行连接。

可使用一个 VIP 为多个应用程序提供服务,但不建议这样做。

 

附加到应用程序 VIP 的资源和 RAC VIP 驻留资源之间的主要区别是它们在 Oracle Clusterware 中的配置方式不同。例如,从 RAC 的角度来说,对数据库实例或监听程序进行故障转移没有任何意义,因为在另一个节点上已经有一个处于等待状态的监听程序和实例。因此,该监听程序不会在一个节点特定的 VIP 之外的任何其它 VIP 上进行监听。查看这些资源的 CRS 概要文件时,可以看到这些差异。此外,在多数情况下,有许多应用程序被附加到 RAC VIP,如监听程序、数据库实例和 ASM 实例等。虽然可以将一个应用程序 VIP 与多个应用程序关联,但并不建议这样做,因为如果其中一个应用程序在某一节点上无法启动或重新启动,它就会通过 VIP 故障转移到另一个节点,而该节点又会强制其它应用程序也重新定位。当应用程序是独立应用程序时尤其如此。但是,RAC VIP 与应用程序 VIP 之间存在一个显著差异,即在 RAC VIP 故障转移到正常节点后,将不再接受连接 (NAK),因此会强迫尝试访问该地址的客户机使用其它地址重新进行连接。如果接受新连接,并发生故障恢复,则在发生故障转移的节点恢复后,该节点上经由 VIP 的当前连接会因为没有接口而断开。而另一方面,应用程序 VIP 在进行故障转移后将完全恢复正常,并继续接受连接。

如果节点出现故障,则主要使用 RAC VIP,因为客户机可使用其它节点进行连接。如果应用程序无法在节点上重新启动,则主要使用应用程序 VIP。

 

使用 CRS 框架:概览 

1.根据需要创建应用程序 VIP:

a.创建概要文件:网络数据 + usrvip 预定义的脚本

b.注册应用程序 VIP。

c.设置对应用程序 VIP 的用户权限。

d.通过使用 crs_start 启动应用程序 VIP。

2.编写接受以下三个参数的应用程序操作脚本:

  • start脚本将启动应用程序。
  • check脚本将确认应用程序是否处于正常运行状态。
  • stop脚本将停止应用程序。

本幻灯片演示了注册受 CRS 框架监视的应用程序所需的基本步骤:

  1. 如果通过网络访问应用程序,并且在出现某些网络问题后仍希望应用程序可用,则建议为应用程序创建一个应用程序 VIP。
  2. 首先,应创建一个应用程序概要文件来定义与此 VIP 关联的网络信息。例如,要使用的公用网络适配器名称、IP 地址和网络掩码。在该概要文件中,还应指定 Oracle Clusterware 所提供的 usrvip 操作脚本。然后便可以使用故障转移策略的默认值。
  3. 使用 crs_register 命令将此应用程序 VIP 添加到所管理的应用程序列表中。
  4. 在基于 UNIX 的操作系统上,必须以 root 用户身份运行应用程序 VIP 脚本。因此,可以使用 crs_setperm 将 VIP 的所有者更改为 root。使用同一命令工具,还可以允许其他用户(如 oracle)启动应用程序 VIP。
  5. 完成后,可以使用 crs_start 命令启动 VIP 应用程序。
  6. 现在,您可以创建一个操作脚本,以支持对应用程序执行启动、检查和停止操作。

 

使用 CRS 框架:概览

3.创建应用程序概要文件:

  • 操作脚本位置
  • 检查间隔
  • 故障转移策略
  • 应用程序 VIP(如果需要)

4.设置对应用程序的权限。

5.Oracle Clusterware 中注册概要文件。

6.通过使用 crs_start 启动应用程序。

 

  1. 为应用程序创建概要文件。应使用足够的资源属性至少定义操作脚本的位置和名称、检查间隔、故障转移策略及所需的应用程序 VIP 资源(如果需要)。可以按如下所示方式管理应用程序的可用性:

-指定在启动集群或节点时启动资源。

-重新启动失败的应用程序。

-如果应用程序无法在其当前位置运行,则应将其重新定位到其它节点。

  1. 与对 VIP 应用程序使用的操作相似,可以定义以何种用户身份运行应用程序以及哪些用户可以启动应用程序。因此,在基于 UNIX 的平台上,Oracle Clusterware 必须以 root 用户身份运行;而在基于 Windows 的平台上,Oracle Clusterware 必须以 Administrator 用户身份运行。
  2. 完成后,就可以通过使用 crs_register 命令来注册应用程序。
  3. 现在,您可以启动要由 Oracle Clusterware 监视的应用程序了。请通过执行 crs_start 命令来执行此操作。

 

 

使用 CRS 框架:示例

 

# crs_profile –create AppVIP1 –t application \

–a <CRS 主目录>/bin/usrvip \
–o oi=eth0,ov=144.25.214.49,on=255.255.252.0

# crs_register AppVIP1

# crs_setperm AppVIP1 –o root

# crs_setperm AppVIP1 –u user:oracle:r-x

$ crs_start AppVIP1

 

紧接着前面的概览幻灯片,此处提供了一个使用 Oracle Clusterware 保护 apache 应用程序的示例:

  1. 通过使用 crs_profile –create 命令创建 AppVP1 应用程序 VIP 概要文件。下面按顺序列出了该示例中指定的参数:

-应用程序 VIP 的名称

-应用程序类型

-位于 <CRS 主目录>/bin 中预定义的操作脚本 usrvip

-公用网络适配器的名称、用于定位应用程序的 VIP 地址(与应用程序在其中运行的节点无关)及用于 VIP 的网络掩码

此命令的结果是在 <CRS 主目录>/crs/profile 中创建一个名为 AppVP1.cap 的文本文件。该文件包含属性,并由 crs_register 进行读取。如果没有以 root 用户身份运行会话,则在 <CRS 主目录>/crs/public 中创建 .cap 文件。

  1. 使用 crs_register 命令在 Oracle Clusterware 中注册应用程序 VIP。
  1. 在基于 UNIX 的操作系统上,必须以 root 用户身份运行应用程序 VIP 操作脚本。以 root 用户身份使用 crs_setperm –o 命令更改所示资源的所有者。
  2. 作为 root 用户,使 oracle 用户可以通过 CRS 命令管理应用程序 VIP。使用 crs_setperm –u 命令。
  3. 以 oracle 用户使用 crs_start 命令启动应用程序 VIP。

 

 

使用 CRS 框架:示例

 

#!/bin/sh 
 
VIPADD=144.25.214.49 
HTTDCONFLOC=/etc/httpd/conf/httpd.conf 
WEBCHECK=http://$VIPADD:80/icons/apache_pb.gif 
case $1 in  
'start') 
    /usr/bin/apachectl –k start –f $HTTDCONFLOC 
    RET=$? 
    ;; 
'stop') 
    /usr/bin/apachectl –k stop 
    RET=$? 
    ;; 
'check') 
    /usr/bin/wget –q –delete-after $WEBCHECK 
    RET=$? 
    ;; 
*) 
    RET=0 
    ;; 
esac 
exit $RET 


  1. 应用程序 VIP 正常工作后,可以为应用程序编写操作脚本。Oracle Clusterware 可将本幻灯片中所示的示例用作保护 apache 应用程序的操作脚本。这是一个 shell 脚本,可分析一个具有三个不同值的参数。该脚本可使用 apachectl 命令工具启动和停止节点上的 apache 应用程序。该脚本将使用 wget 命令检查是否可以访问某个网页。它们是 CRS 在保护应用程序时执行的三个操作。

对于后续步骤,假定此脚本名为 myApp1.scr。

注:请务必在集群的所有节点上的同一位置中分配此脚本。在此例中,假定默认位置为 <CRS 主目录>/crs/script。

 

 

使用 CRS 框架:示例

# crs_profile –create myApp1 –t application –r AppVIP1 \

–a myapp1.scr –o ci=5,ra=2

# crs_register myApp1

# crs_setperm myApp1 –o root

# crs_setperm myApp1 –u user:oracle:r-x

$ crs_start myApp1

 

  1. 现在,可以为应用程序创建概要文件了。资源在此处称为 myApp1。该资源将使用 myApp1.scr 作为其操作脚本,并依赖 AppVIP1 应用程序。如果 AppVIP1 失败或者被重新定位到其它节点,则 Oracle Clusterware 将停止或移动 myApp1 应用程序。该示例还将资源的检查间隔定义为 5 秒钟,并将尝试重新启动应用程序的次数定义为 2。这意味着第二次发生本地故障后,Oracle Clusterware 会将应用程序故障转移到其它节点。
  2. crs_register 命令用于在 Oracle Clusterware 中注册 myApp1。
  3. 由于希望 apache 服务器监听默认端口 80,因此需要以 root 用户身份执行应用程序。以 root 用户身份使用 crs_setperm –o 命令更改所示资源的所有者。
  4. 作为 root 用户,使 oracle 用户可以通过 CRS 命令管理应用程序 VIP。使用 crs_setperm –u 命令。
  5. 以 oracle 用户身份使用 crs_start 命令启动 myApp1。

 

 

 

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号