跳到内容 中国
HP.com 主页 产品与服务 支持及驱动程序 解决方案 如何购买
» 联系惠普
更多选项
HP.com 主页
使用 Serviceguard Extension for RAC > 第 2 章 适用于 Oracle RAC 的 Serviceguard 配置

使用程序包配置 RAC 实例的启动和关闭脚本

» 

技术文档资料

完整的 PDF 手册
» 反馈
内容从此开始:

 » 目录

 » 索引

为使群集节点上的 RAC 实例可以自动启动和关闭,您可以创建程序包,并使这些程序包可以激活适当的卷组,然后运行 RAC。请参考“创建程序包以启动 Oracle RAC 实例”一节。

注释:RAC 实例的最大数目是每群集 127 个。

启动 Oracle 实例

Oracle 安装完成之后,请确保所有程序包控制脚本在每个节点上都已准备就绪,而且每个 /etc/rc.config.d/cmcluster 脚本都包含 AUTOSTART_CMCLD=1 项。然后重新引导每个节点。重新引导后几分钟内,群集就会重组,而且程序包控制脚本将启动数据库实例和应用程序。

Oracle 启动之后,可以在两个节点上使用 SAM 进程管理功能或 ps -ef 命令来验证所有 RAC 守护程序和 Oracle 进程是否都在运行。

手动启动和关闭

如果在启动和关闭 RAC 实例时不希望使用程序包,可以执行下列步骤。

  • 启动过程包括下列步骤:

    1. 启动群集(cmrunnodecmruncl)。

    2. 以共享模式激活数据库卷组或磁盘组。

    3. 以共享模式启动 Oracle。

    4. 启动 Oracle 应用程序(如果有)。

  • 关闭过程包括下列步骤:

    1. 关闭 Oracle 应用程序(如果有)。

    2. 关闭 Oracle。

    3. 停用数据库卷组或磁盘组。

    4. 关闭群集(cmhaltnodecmhaltcl)。

如果关闭时未遵循上述步骤,cmhaltclcmhaltnode 命令可能会失败,
并出现一条消息,指出 GMS 客户端 (RAC 9i) 或共享卷组处于活动状态。

创建程序包以启动 Oracle RAC 实例

要将 RAC 实例的启动和关闭与群集节点的启动和关闭相协调,需要针对运行 RAC 实例的每个节点创建一个单节点程序包。在程序包配置文件中,只应指定一个运行该实例的节点,并指定每次实例节点或整个 RAC 群集启动或关闭时将执行的控制脚本。

注释:必须创建 PACKAGE_TYPEFAILOVER 的 RAC 实例程序包,但只输入一个节点可确保该实例只在此节点上运行。

要简化 RAC 实例程序包的创建过程,可以使用与可单独购买的 ECM Toolkits 产品 (B5139BA) 一起提供的 Oracle 模板。此文件所在目录是
/opt/cmcluster/tookit/DB/Oracle。请使用提供的专用 oracle.sh 脚本,并遵循 README 文件中的指导。另请参考下面的“定制 RAC 实例的控制脚本”
一节。

要使用 Serviceguard Manager 创建程序包,请选择群集。在操作菜单中选择配置程序包。要修改程序包,请选择该程序包。对于实例程序包,请为每个实例创建一个程序包。在每个节点上,为该程序包名称提供 SID 名称。

要通过命令行创建程序包,请使用 cmgetconf 命令来查看可编辑的配置
文件。

如果希望在节点刚一连接到群集时就启动实例,请将 AUTO_RUN 参数设置为 YES。另外,应将 NODE_FAILFAST_ENABLED 参数设置成 NO

如果要将 RAC 数据库保存在 CVM 磁盘组中,请确保将每个磁盘组的名称分别添加到配置文件中不同的 STORAGE_GROUP 行上。

配置访问 Oracle RAC 数据库的程序包

也可使用程序包启动访问 RAC 实例的应用程序。如果某应用程序要在群集节点间进行故障切换,则必须将其设置为其他类型的程序包,使其独立于启动和停止 RAC 实例的程序包。如果程序包包含的应用程序需要访问 RAC 数据库,请执行下列步骤:

  1. 在 ASCII 程序包配置文件中,将 AUTO_RUN 参数设置为 NO,如果使用 Serviceguard Manager 对程序包进行配置,请将“自动切换”设置为“禁用”。该设置使程序包在节点加入群集时不会立即启动,且不会在 RAC 之前运行。

  2. RAC 启动之后,可以使用 cmmodpkg -e packagename 命令手动启动程序包。或者,可以自己编写脚本并将其复制到运行该程序包的所有节点上,使程序包的激活过程自动进行。此脚本应包含 cmmodpkg -e 命令,并在 RAC 和群集管理器启动之后激活程序包。

在正在运行的群集中添加或删除程序包

可在群集运行时添加或删除程序包,但要受 MAX_CONFIGURED_PACKAGES 的限制。要联机添加或删除程序包,请参考《管理 Serviceguard》用户手册第 7 章中的“群集和程序包维护”一节。

编写程序包控制脚本

程序包控制脚本中包含执行下列各项操作所需的全部信息:运行程序包中的所有服务、在操作期间对它们进行监视、处理发生的故障以及必要时暂停程序包。可以使用 Serviceguard Manager 或 HP-UX 命令创建或修改程序包控制脚本。出于安全方面的考虑,控制脚本所在目录的路径名中必须包含字符串 cmcluster

使用 Serviceguard Manager 编写程序包控制脚本

完成各种配置标签后,控制脚本即可自动生成。当要求提供程序包运行和暂停脚本的路径名时,请使用 ECM 工具包中的文件名。有关详细信息,请使用 Help 键。

以这种方式创建程序包控制脚本时,无需进一步进行编辑,但如果愿意,可定制此脚本。

使用命令编写程序包控制脚本

每个程序包必须具有一个单独的可执行的控制脚本。控制脚本存储在程序包目录中,并且它的名称必须与程序包 ASCII 配置文件中的 RUN_SCRIPTHALT_SCRIPT 参数指定的名称相同。程序包控制脚本模板包含程序包的运行指令和暂停指令。可以使用一个脚本进行运行和暂停两种操作;如果愿意,也可分别创建两个脚本。

可以使用下面的过程为样例程序包 pkg1 创建控制脚本。

首先,生成一个控制脚本模板:

cmmakepkg -s /etc/cmcluster/pkg1/control.sh 

可以如““定制程序包控制脚本””一节中所述定制脚本。

定制程序包控制脚本

请使用程序包配置工作表中的信息检查控制脚本开始处的定义和说明。需要按以下步骤进行定制:

  • 更新 PATH 语句,以指示启动服务所需的任何必需路径。

  • 如果使用的是 LVM,请输入将使用 VG[] 数组参数激活的卷组名,并根据需要选择适当的存储激活命令选项,包括安装和卸装文件系统的选项。请不要对 LVM 卷组使用 VXVM_DG[]CVM_DG[] 参数。

  • 如果使用的是 CVM,请输入将使用 CVM_DG[] 数组参数激活的磁盘组的名称,并选择适当的存储激活命令 CVM_ACTIVATION_CMD。请不要对 CVM 卷组使用 VG[]VXVM_DG[] 参数。

  • 如果使用的是不带 CVM 的 VxVM 磁盘组,请输入将使用 VXVM_DG[] 数组参数导入的 VxVM 磁盘组的名称。每一个数组元素要对应一个磁盘组。请不要对不带 CVM 的 VxVM 磁盘组使用 CVM_DG[]VG[] 参数。并且不要指定激活命令。

  • 添加逻辑卷的名称以及将要在这些逻辑卷上安装的文件系统的名称。

  • 如果使用的是镜像的 VxVM 磁盘,请指定镜像恢复选项 VXVOL

  • 选择适当的存储激活命令选项(不适用于基本 VxVM 磁盘组),并根据需要添加安装和卸装文件系统的选项。

  • 指定文件系统安装重试和卸装次数选项。

  • 定义程序包 IP 子网和 IP 地址对。

  • 添加服务名称。

  • 添加服务命令。

  • 添加服务重新启动参数(根据需要)。

注释:定义服务运行命令时要小心谨慎。每个运行命令都由控制脚本按下列方式执行:
  • cmrunserv 命令执行每个运行命令,然后监视由此运行命令创建的进程的进程 ID。

  • 当由 cmrunserv 启动的命令退出时,Serviceguard 会确定发生了故障,并采取相应的操作,这些操作可包括将程序包转移到代管节点。

  • 如果某个运行命令是运行另外一些命令并自行退出的 shell 脚本,Serviceguard 将把这种正常退出看作是一种故障

为避免在执行控制脚本时出现问题,应确保各个运行命令是实际服务的名称,并且其进程在实际服务停止前一直保持活动状态。

如果除缺省设置外还需要定义一组运行和暂停操作,应在标题为 CUSTOMER DEFINED FUNCTIONS 的部分中为它们创建函数。

对大量存储单元进行优化

当使用大量的文件系统或存储组时,可通过设置一组四个变量对性能进行改善。有关详细信息,请参阅控制脚本模板中的注释。包括下列信息:

  • CONCURRENT_VGCHANGE_OPERATIONS - 定义程序包启动时 LVM 卷组的一组并行激活操作(以及程序包关闭时 LVM 卷组并行停用操作)。

  • CONCURRENT_FSCK_OPERATIONS - 定义程序包启动时将要执行的一组并行 fsck 操作。

  • CONCURRENT_MOUNT_AND_UMOUNT_OPERATIONS - 定义程序包启动时的一组并行安装(以及程序包关闭时并行卸装)操作。

为 RAC 实例定制控制脚本

使用程序包控制脚本执行下列操作:

  • 激活和停用 RAC 卷组。

  • 启动和关闭 RAC 实例。

  • 监视 RAC 实例。

在程序包控制脚本中设置 RAC 环境变量,用于为 RAC 定义正确的执行环境。

VG[] 数组中输入希望以共享模式激活的 LVM 卷组的名称。每个 RAC 卷组对应一个不同的数组元素。(请记住,对于 RAC 卷组,还必须使用 OPS_VOLUME_GROUP 参数将其编入群集配置文件中。) 请确保通过设置 VGCHANGE 参数以使用 vgchange 命令指定共享激活,如下所示:

VGCHANGE="vgchange -a s"

如果磁盘通过 LVM 镜像镜像到单独的物理路径上,而且希望覆盖定额,则请使用下列设置:

VGCHANGE="vgchange -a s -q n"

CVM_DG[] 数组中输入希望以共享模式激活的 CVM 磁盘组的名称。每个 RAC 磁盘组对应一个不同的数组元素。(请记住,对于 CVM 磁盘组,还必须使用 STORAGE_GROUP 参数将其编入程序包 ASCII 配置文件中。) 请确保 CVM 激活命令指定的共享激活类型合适。例如:

CVM_ACTIVATION_CMD="vxdg -g \$DiskGroup set activation=sharedwrite"

不要将 RAC 实例定义为程序包服务,而应将启动 RAC 实例的命令添加到程序包控制脚本的 customer_defined_run_commands 部分中。与此类似,应将暂停 RAC 实例的命令添加到程序包控制脚本的 customer_defined_halt_commands 部分中。

将 Oracle 监视命令定义为服务命令,或使用随 ECM Toolkit 提供的专用 Oracle 脚本。

配置 Oracle RAC 实例程序包

可以使用 Serviceguard Manager 或命令行来配置 Oracle RAC 实例程序包。

Enterprise Cluster Master Toolkit (ECMT) 提供了一个通用的 Oracle 数据库脚本模板,可以使用该模板为 Oracle RAC 实例程序包配置程序包行为。用户可以将该脚本集成到标准 Serviceguard 程序包控制脚本中,从而简化启动、监视和关闭 Oracle 数据库实例的过程。有关使用 ECMT 的详细信息,请参阅 ECMT 文档资料。

每个 Oracle RAC 数据库都可以在 SGeRAC 群集的所有节点上运行一个数据库实例。因此,无需将数据库实例故障切换到不同的 SGeRAC 节点。这就是 Oracle RAC 实例程序包和单个 Oracle 实例程序包的主要差别。

有关在 SGeRAC 节点上创建 Oracle RAC 实例程序包的信息

可以在创建程序包之前使用下列步骤在 SGeRAC 节点上设置相应的配置信息:

  1. 收集 RAC 实例 SID_NAME。如果正在使用 Serviceguard Manager,则该实例位于群集属性中。

    例如:SID_NAME=ORACLE_TEST0

    对于双节点群集的 ORACLE RAC 实例,每个节点都有一个 SID_NAME。

  2. 为每个节点收集 RAC 实例程序包名称,该名称应与每个节点的 SID_NAME 相同。

    例如:ORACLE_TEST0

  3. 为 RAC 数据库收集共享卷组名。在 Serviceguard Manager 中查看群集
    属性。

    例如:/dev/vgora92db

  4. 创建 Oracle RAC 实例程序包目录。
    /etc/cmcluster/${SID_NAME}

    例如:/etc/cmcluster/ORACLE_TEST0

  5. 如果正在使用命令行,请将 Oracle shell 脚本模板从 ECMT 缺省源目录复制到该程序包目录。
    # cd /opt/cmcluster/toolkit/oracle
    # cp oracle.sh /etc/cmcluster/${SID_NAME}/${SID_NAME}.sh
    # chmod 755 /etc/cmcluster/${SID_NAME}/${SID_NAME}.sh

    例如:
    # cd /opt/cmcluster/toolkit/oracle
    # cp oracle.sh /etc/cmcluster/ORACLE_TEST0/ORACLE_TEST0.sh
    # chmod 755 /etc/cmcluster/ORACLE_TEST0/ORACLE_TEST0.sh

  6. 收集用于监视 Oracle 实例进程的程序包服务名。在 Serviceguard Manager 中,该信息位于“服务”标签中。 SERVICE_NAME[0]=${SID_NAME}
    SERVICE_CMD[0]=”etc/cmcluster/${SID_NAME}/${SID_NAME}.sh monitor”
    SERVICE_RESTART[0]=”3”

    例如:SERVICE_NAME[0]=ORACLE_TEST0 SERVICE_CMD[0]=”/etc/cmcluster/ORACLE_TEST0/ORACLE_TEST0.sh monitor”
    SERVICE_RESTART[0]=”3”

  7. 收集如何使用 ECMT 脚本启动数据库的信息。在 Serviceguard Manager 中,输入下面的控制脚本启动命令文件名。
    /etc/cmcluster/${SID_NAME}/${SID_NAME}.sh start

    例如:/etc/cmcluster/ORACLE_TEST0/ORACLE_TEST0.sh start

  8. 收集如何使用 ECMT 脚本停止数据库的信息。在 Serviceguard Manager 中,输入控制脚本启动命令的文件名。
    /etc/cmcluster/${SID_NAME}/${SID_NAME}.sh halt

    例如:/etc/cmcluster/ORACLE_TEST0/ORACLE_TEST0.sh halt

使用 Serviceguard Manager 配置 Oracle RAC 实例程序包

下列步骤使用图 2-1 的示例中的信息。下面假定 SGMgr 已启动。假定 SGeRAC 群集环境已配置,并且可以使用 ECMT 启动 Oracle RAC 数据库实例。

  1. 启动 Serviceguard Manager 并连接到群集。图 2-1 显示节点“sg21”的 RAC 实例程序包。程序包名称为 ORACLE_TEST0。

    图 2-1 RAC 实例程序包在 Serviceguard Manager 中的显示

    RAC 实例程序包在 Serviceguard Manager 中的显示
  2. 创建程序包。

  3. 选择“参数”,然后选择要编辑的参数。

    接下来选中“启用模板”复选框,以启用 Oracle RAC 程序包模板。可以使用“重新设置模板缺省值”按钮重新设置模板缺省值。启用 Oracle RAC 模板时,该程序包只能在一个节点上运行。

  4. 选择“节点”标签,然后选择要运行该程序包的节点。

  5. 选择“网络”标签,然后添加程序包的受监视子网。

  6. 选择“服务”标签,然后配置服务。

  7. 选择“控制脚本”标签,并配置参数。

    配置卷组以及客户定义的运行(暂停)函数。

  8. 填写指定的参数后,应用程序包配置

启用数据库提供程序监视

要监视远程 Serviceguard RAC 群集,GUI 用户名和服务器名必须位于要查看的群集中的所有节点上的 /etc/cmcluster/cmclnodelist 文件中。

使用访问控制策略 (CAP) 监视数据库提供程序

要以非超级用户身份监视本地 SGeRAC 群集,必须通过 CAP 配置 GUI 用户名、服务器名和用户角色(至少应为监视角色)。

要监视远程群集,应通过 CAP 配置任何 GUI 用户名(非超级用户或超级用户)、服务器名和用户角色(至少应为监视角色)。

有关 Serviceguard 命令以及 API 客户端外部规范的详细信息,请参考“访问控制策略”。

打印版本
保密声明 使用本网站表示您同意其使用条件
© 2005 - , Hewlett-Packard Development Company, L.P.