如何在 Oracle Solaris Cluster 中配置故障切换来宾域

适用于 Oracle Solaris 11.1

作者:Venkat Chennuru

本文分步演示如何在 Oracle Solaris 11.1 上用 Oracle Solaris Cluster 4.1 部署高度可用的故障切换配置中的 Oracle VM Server for SPARC 来宾域。


2013 年 1 月发布(2013 年 1 月更新)

有关 Oracle VM Server for SPARC 和 Oracle Solaris Cluster 的更多信息
先决条件、假设和安装前检查
使用全局文件系统让逻辑域按故障切换配置运行
将来宾域置于 Oracle Solaris Cluster 控制下
验证功能
总结
另请参见
关于作者

OTN 旨在帮助您充分了解 Oracle 技术,以作出明智决策。本网站提供文章、软件下载、文档等。立即加入,获取完成工作所需的技术资源。

本文介绍的配置通过在备用集群节点上重新启动来自动化来宾域的故障切换,从而保护来宾域免受计划停机和意外停机的影响。自动故障切换可在组件停止运行或来宾域因预防性维护需要迁移时提供保护。

Oracle Solaris Cluster 提供两种不同的解决方案来保护 Oracle VM Server for SPARC 部署(以前称为 Sun Logical Domains,即 LDom)。

首先,可以将 Oracle VM Server for SPARC 域用作集群节点。这种配置类似于传统的“物理”服务器集群,只不过 Oracle Solaris Cluster 安装在虚拟机 (VM) 域(控制、来宾或 I/O 域)中。可以通过内置或自定义的集群代理监视该域中运行的应用程序,并且可以在域或服务器出现故障时(或应要求)将它们移至另一个域。

在本文中,我们将讨论另一种可能性。Oracle Solaris Cluster 安装在服务器控制域中时,可以将应用程序和来宾域作为 Solaris Cluster 资源来管理。本例使用了一个特定代理 — 适用于 Oracle VM for SPARC 的 Oracle Solaris Cluster 数据服务。此高可用性 (HA) 代理将来宾域作为“黑盒”来控制和管理。它不仅可以在发生故障时对来宾域进行故障切换,而且还可以使用域迁移程序(实时迁移或温迁移)操作受管切换。

本文详细说明如何配置来宾域将其置于 Oracle Solaris Cluster 的控制下。作为先决条件,您首先需要在使用两个控制域的两个 Oracle SPARC T 系列系统上安装双节点集群。

有关 Oracle VM Server for SPARC 和 Oracle Solaris Cluster 的更多信息

Oracle VM Server for SPARC 能够将一个物理系统拆分成多个独立的虚拟系统。这通过固件层的另一个软件应用程序实现 — 称作虚拟机管理程序 — 介于操作系统与硬件平台之间。虚拟机管理程序抽象了硬件,可以显示或隐藏各种资源,允许创建资源分区。这些资源分区作为独立系统运行,配备了虚拟 CPU、内存和 I/O 设备。通过 Logical Domains Manager 界面在控制域中执行用于创建和管理 VM 域的管理操作。

需要先将控制域配置为 Oracle Solaris Cluster 节点,然后才能用来托管故障切换来宾域服务。所有潜在的主节点上的虚拟服务配置必须相同。可在集群的任一节点上创建将置于 Oracle Solaris Cluster 控制下的来宾域。创建域之后,使用 ldm list-constraints -x ldom 命令检索域配置,并将域配置存储在集群配置信息库 (CCR) 中供所有集群节点访问。此全局可访问的信息供 Oracle Solaris Cluster 数据服务使用,这样 Oracle VM Server for SPARC 可以在资源组联机或脱机时分别创建或销毁节点上的域。

适用于 Oracle VM Server for SPARC 的 Oracle Solaris Cluster 数据服务提供的机制可以按顺序启动和关机、监视故障以及自动故障切换 Oracle VM Server for SPARC 来宾域。当来宾域在 Oracle Solaris Cluster 的控制下需要迁移到另一个集群节点时,数据服务首先尝试实时迁移来宾域;一旦实时迁移因任何原因失败,将采用正常迁移。实时迁移特性要求当前主节点和新的主节点可同时访问引导磁盘。

先决条件、假设和安装前检查

本节讨论适用于双节点集群的一些先决条件、配置假设和安装前检查。

先决条件

安装双节点集群。如需帮助,请参见文章“如何安装和配置双节点集群”和 Oracle Solaris Cluster 软件安装指南

配置假设

本文假设满足以下条件:

  • 两个 SPARC T 系列系统的两个控制域中已经安装 Oracle Solaris 11.1 和 Oracle Solaris Cluster 4.1。(也可以使用 Oracle Solaris 11 和 Oracle Solaris Cluster 4.0 组合。)
  • 双节点集群已使用系统的两个控制域进行了配置。
  • 集群节点上已经配置了 Oracle Solaris 和 Oracle Solaris Cluster 的映像包管理系统 (IPS) 信息库。
  • 集群硬件是 Oracle Solaris Cluster 4.1 软件支持的配置(请参见 Oracle Solaris Cluster 4.x 兼容性指南)。
  • 每个节点有两个用作专用互连(也称为传输)的空闲网络接口,以及至少一个连接到公共网络的网络接口。
  • SCSI 共享存储连接到两个节点。
  • 建议您在集群互连上启用巨型帧来提高实时迁移的性能,从而提高 Oracle Solaris Cluster 切换速度。
  • 建议但不要求在管理期间通过控制台访问节点。
  • 您的配置与图 1 类似,但您可以根据系统或网络配置增减设备。

    图 1

    图 1. Oracle Solaris Cluster 硬件配置

有关各种受支持拓扑结构的详细信息,请参见 Oracle Solaris Cluster 概念指南

安装前检查

确保满足以下条件:

  • 故障切换逻辑域配置的引导磁盘必须位于全局文件系统或网络文件系统 (NFS) 上,或者必须是一个共享设备。
  • 这两个节点上 I/O 域提供的服务必须采用相同的配置。
  • 只能在一个节点上配置逻辑域。逻辑域每次只能在一个节点上处于活动状态。
  • 您有一个共享磁盘用来托管故障切换逻辑域的引导磁盘。

    可以使用 /usr/cluster/bin/scdidadm -L/usr/cluster/bin/cldevice list 查看共享磁盘。每个集群节点有一个指向共享磁盘的路径,如清单 1 所示。

    root@phys-schost-1:~# /usr/cluster/bin/cldevice show d3
    
    === DID Device Instances ===
    
    DID Device Name:                       /dev/did/rdsk/d3
      Full Device Path:                       phys-schost-2:/dev/rdsk/c0t60080E5000
    17B52C00002B9D4EB40DB5d0
      Full Device Path:                       phys-schost-1:/dev/rdsk/c0t60080E5000
    17B52C00002B9D4EB40DB5d0
      Replication:                            none
      default_fencing:                        global
    
    root@phys-schost-1:~#     
    

    清单 1. 查看共享磁盘

使用全局文件系统让逻辑域按故障切换配置运行

在本节中,您将执行两个任务:准备文件系统和准备域配置。

准备文件系统

在故障切换配置中,逻辑域的引导磁盘必须位于全局文件系统、网络文件系统 (NFS) 上,或者是一个原始共享磁盘。引导磁盘必须能够同时从所有潜在主节点访问,以便执行实时迁移。

本文中的示例使用通过 Oracle Solaris Volume Manager 元设备上创建的 UFS 文件系统挂载的全局文件系统。

Oracle Solaris Cluster 提供一个特定的服务来管理全局文件系统或共享磁盘:SUNW.HAStoragePlus 服务。我们将使用 HAStoragePlus 资源管理此配置中使用的全局文件系统。

  1. 注册 SUNW.HAStoragePlus 资源类型:

    phys-schost-1# /usr/cluster/bin/clrt register SUNW.HAStoragePlus
    
  2. 创建故障切换资源组:

    phys-schost-1# /usr/cluster/bin/clrg create ldom-rg
    
  3. 在共享磁盘上创建一个文件系统来托管故障切换逻辑域的引导磁盘,并将以全局方式进行挂载:

    phys-schost-1# metaset -s bootdiskset -a -h phys-schost-1 phys-schost-2
    phys-schost-1# metaset -s bootdiskset -a /dev/did/dsk/dX
    phys-schost-1# metainit -s bootdiskset d0 1 1 /dev/did/dsk/dXs0
    phys-schost-1# newfs -v /dev/md/bootdiskset/dsk/d0
    
  4. 将以下条目添加到这两个节点上的 /etc/vfstab,因为您使用的是全局文件系统:

     dev/md/bootdiskset/dsk/d0 /dev/md/bootdiskset/rdsk/d0 /global/ldom 2 no global
    
  5. 将文件系统注册到 SUNW.HAStoragePlus 资源。

    全局文件系统将用于托管引导磁盘。

    phys-schost-1# /usr/cluster/bin/clrs create -g ldom-rg -p filesystemmountpoints=/global/ldom ldom-hasp-rs
    
  6. 使资源组联机并以全局方式挂载文件系统:

    phys-schost-1# /usr/cluster/bin/clrg online -emM ldom-rg
    

准备域配置

  1. 这两个 节点上的主域设置故障策略。

    主域的故障策略通过为 failure-policy 属性设置以下值之一来控制:

    • 当主域发生故障时,ignore 忽略所有从域。
    • 当主域发生故障时,panic 强行关闭所有从域。
    • 当主域发生故障时,reset 重置所有从域。
    • 当主域发生故障时,stop 停止所有从域。
    # ldm set-domain failure-policy=reset primary
    # ldm list -o domain primary
    
  2. 这两个 集群节点上创建虚拟服务。

    这两个集群节点上的虚拟服务名称必须完全 一样,如来宾域配置中所述。

    ldm add-vds primary-vds0 primary 
    ldm add-vconscon port-range=5000-5100 primary-vcc0 primary
    ldm add-vsw net-dev=net0 primary-vsw0 primary
    ldm add-vdsdev bootdisk-path ldg1-boot@primary-vds0
    

    bootdisk-path 取决于引导磁盘是原始磁盘,还是全局文件系统上基于文件的虚拟磁盘。

    如果是原始磁盘,应指定为 /dev/global/dsk/dXs2。在本例中,我们将使用一个全局文件系统,因此,它是基于文件的的虚拟磁盘。

    mkfile 20g /global/ldom/ldg1-boot
    ldm add-vdsdev /global/ldom/ldg1-boot ldg1-boot@primary-vds0
    
  3. 列出服务,确保它们在两个节点上完全相同。在 ldm list-services 输出中,ldg1-bootdvd 磁盘服务应完全一样,因为它们在联机时供来宾域使用。

    1. 查看 phys-schost-1 上的服务,如清单 2 所示:

      phys-schost-1# ldm list-services primary
      VCC
      NAME LDOM PORT-RANGE
      primary-vcc0 primary 5000-5100
      
      VSW
      NAME LDOM MAC NET-DEV ID DEVICE
      LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE INTER-VNET-L
      INK
      primary-vsw0 primary 00:14:4f:f9:5c:1a net0 0 switch@0
      1 1 1500 on
      
      VDS
      NAME LDOM VOLUME OPTIONS MPGROUP
      DEVICE
      primary-vds0 primary ldg1-boot /global/ldom/ldg1-boot
      dvd /var/tmp/sol-11_1-20-text-sparc.iso
      
      phys-schost-1#
      

      清单 2. 查看 phys-schost-1 上的服务

    2. 查看 phys-schost-2 上的服务,如清单 3 所示:

      phys-schost-2# ldm list-services primary
      VCC
      NAME LDOM PORT-RANGE
      primary-vcc0 primary 5000-5100
      
      VSW
      NAME LDOM MAC NET-DEV ID DEVICE
      LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE INTER-VNET-L
      INK
      primary-vsw0 primary 00:14:4f:fb:02:5c net0 0 switch@0
      1 1 1500 on
      
      VDS
      NAME LDOM VOLUME OPTIONS MPGROUP
      DEVICE
      primary-vds0 primary ldg1-boot /global/ldom/ldg1-boot
      dvd /var/tmp/sol-11_1-20-text-sparc.iso
      
      phys-schost-2#
      

      清单 3. 查看 phys-schost-2 上的服务

  4. 只在一个 节点上创建逻辑域:

    只能在一个节点上配置故障切换配置中的来宾逻辑域,并且在创建高可用的 Oracle VM Server for SPARC 资源后,配置将存储在 CCR 中。当逻辑域资源联机时,将在其所在的节点上创建逻辑域,并将启动和引导逻辑域。

    phys-schost-1# ldm add-domain ldg1
    phys-schost-1# ldm set-vcpu 32
    phys-schost-1# ldm set-mem 8g
    phys-schost-1# ldm add-vdisk ldg1-boot@primary-vds0 ldg1
    phys-schost-1# ldm add-vdisk dvd@primary-vds0 ldg1      
    phys-schost-1# ldm add-vnet vnet0 primary-vsw0 ldg1
    

    如果集群配置中存在混合架构,请将来宾域的 cpu-arch 更改为 generic

    phys-schost-1#  ldm set-domain cpu-arch=generic ldg1
    

    必须先安装并启动来宾域 ldg1,然后才能将其置于 Oracle Solaris Cluster 控制下:

    ldm bind ldg1
    ldm start ldg1
    
  5. 连接到控制台并通过 DVD 引导:

    telnet 0 5000 
    ok boot dvd  
    
  6. 如清单 4 所示,执行安装过程在来宾域 ldg1 中安装 Oracle Solaris:

    Phys-schost-2# ldm ls -l ldg1
    NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
    ldg1             active     -n----  5000    32    8G       0.0%  4d 17h 17m
    
    SOFTSTATE
    Solaris running
    
    UUID
        9fbee96f-3896-c224-e384-cb24ed9650e1
    
    MAC
        00:14:4f:fb:4d:49
    
    HOSTID
        0x84fb4d49
    
    CONTROL
        failure-policy=ignore
        extended-mapin-space=off
        cpu-arch=generic
    
    DEPENDENCY
        master=primary
    
    CORE
        CID    CPUSET
        4      (32, 33, 34, 35, 36, 37, 38, 39)
        5      (40, 41, 42, 43, 44, 45, 46, 47)
        6      (48, 49, 50, 51, 52, 53, 54, 55)
        7      (56, 57, 58, 59, 60, 61, 62, 63)
    
    VCPU
        VID    PID    CID    UTIL STRAND
        0      32     4      0.3%   100%
        1      33     4      0.0%   100%
        2      34     4      0.0%   100%
        3      35     4      0.0%   100%
        4      36     4      0.0%   100%
        5      37     4      0.0%   100%
        6      38     4      0.0%   100%
        7      39     4      0.0%   100%
        8      40     5      0.0%   100%
        9      41     5      1.2%   100%
        10     42     5      0.0%   100%
        11     43     5      0.0%   100%
        12     44     5      0.0%   100%
        13     45     5      0.0%   100%
        14     46     5      0.1%   100%
        15     47     5      0.0%   100%
        16     48     6      0.0%   100%
        17     49     6      0.0%   100%
        18     50     6      0.0%   100%
        19     51     6      0.0%   100%
        20     52     6      0.0%   100%
        21     53     6      0.0%   100%
        22     54     6      0.0%   100%
        23     55     6      0.0%   100%
        24     56     7      0.0%   100%
        25     57     7      0.0%   100%
        26     58     7      0.0%   100%
        27     59     7      0.0%   100%
        28     60     7      0.0%   100%
        29     61     7      0.0%   100%
        30     62     7      0.0%   100%
        31     63     7      0.0%   100%
    
    MEMORY
        RA               PA               SIZE
        0x10000000       0x200000000      256M
        0x400000000      0x220000000      7680M
        0x800000000      0x840000000      256M
    
    CONSTRAINT
        threading=max-throughput
    
    VARIABLES
        auto-boot?=false
    
    NETWORK
        NAME             SERVICE                     ID   DEVICE     MAC
       MODE   PVID VID                  MTU   LINKPROP
        vnet0            primary-vsw0@primary        0    network@0  00:14:4f:fa:31:
    6c        1                         1500
    
    DISK
        NAME             VOLUME                      TOUT ID   DEVICE  SERVER
      MPGROUP
        bootdisk         ldg1-boot@primary-vds0           0    disk@0  primary
    
        dvd              dvd@primary-vds0                 1    disk@1  primary
    
    
    VCONS
        NAME             SERVICE                     PORT   LOGGING
        ldg1             primary-vcc0@primary        5000   on
    
    phys-schost-2#
    
    phys-schost-2# ls -ld /var/tmp/passwd
    -r--------   1 root     root           7 Jul 26 13:36 /var/tmp/passwd
    

    清单 4. 安装过程

  7. 设置来宾域的 master 属性。

    master 属性需要设置为 primary,这样一来,如果主节点崩溃或重新启动,来宾逻辑域将重新启动。

    每个从域通过设置 master 属性最多可指定四个主域。

    phys-schost-1 # ldm set-domain master=primary ldg1
    phys-schost-1 # ldm list -o domain ldg1
    

    每个主域可以指定主域发生故障时从域的响应方式。例如,如果主域发生故障,可能需要其从域强行关闭。如果一个从域有多个主域,那么第一个发生故障的主域将触发其所有从域上定义的故障策略。

将来宾域置于 Oracle Solaris Cluster 控制下

  1. 注册适用于 Oracle VM for SPARC 的 Oracle Solaris Cluster 数据服务资源类型:

    phys-schost-1 # /usr/cluster/bin/clrt register SUNW.ldom
    
  2. ldg1 域置于数据服务的控制下:

    phys-schost-1 # /usr/cluster/bin/clrs create -g ldom-rg -t SUNW.ldom \
                -p Domain_name=ldg1 -p Password_file=/global/ldom/pass \
                -p Plugin_probe="/opt/SUNWscxvm/bin/ppkssh -P \
                user1:/home/user1/.ssh/id_dsa:ldg1:multi-user-server:online"        
                ldom-rs 
    

    口令文件应包含集群节点的根口令。出于安全考虑,此文件应由 root 拥有,并且只授予 root 只读权限 (400)。

    上面的 -p Plugin_probe 命令运行 ssh,如下所示。

    ssh -i /home/user1/.ssh/id_dsa -l user1 ldg1 svcs -H -o state multi-user-server:default
    

    在这里,ldg1ldg1 域的主机名。如果主机名和域名不同,您需要提供域的主机名。

    phys-schost-2# /usr/cluster/bin/clrg status ldg1-rg
    
    === Cluster Resource Groups ===
    
    Group Name       Node Name       Suspended      Status
    -------------    ---------         -----        --------------
    ldg1-rg          phys-schost-1     No           Offline
                     phys-schost-2     No           Online
    
    phys-schost-2# /usr/cluster/bin/clrs status ldg1-rs
    
    === Cluster Resources ===
    
    Resource Name       Node Name      State        Status Message
    -------------       ---------      -----        --------------
    ldg1-rs             phys-schost-1  Offline      Offline - Successfully 
                                                    stopped ldg1
                        phys-schost-2  Online       Online - ldg1 is active 
                                                    (normal)
    

    清单 5. 集群资源和资源组的状态

验证功能

  1. 根据配置,使用 sshrshtelnet 通过网络连接到来宾域,并查看运行时间:

    ssh -l username hostname-of-failover-guest-domain
    w
  2. 将资源组切换到其他节点,确保两个节点上都正确配置了服务。

    适用于 Oracle VM Server for SPARC 的 Oracle Solaris Cluster 数据服务执行实时迁移,这样可确保 sshrshtelnet 连接不受切换的影响。

    phys-schost-1 # clrg switch -n phys-schost-2 ldom-rg
    
  3. ssh 会话上对故障切换域的主机名运行 w 来查看运行时间,并验证来宾域是否在未重新启动的情况下完成了实时迁移。
  4. 将资源组切回主节点:

    phys-schost-2 # clrg switch -n phys-schost-1 ldom-rg
    
  5. ssh 会话上对故障切换域的主机名运行 w,验证来宾域是否处于活动状态。

总结

本文介绍了如何使用采用全局文件系统的双节点集群配置故障切换来宾域。本文还介绍了如何通过将故障切换来宾域在主从节点之间来回切换的方式,验证集群是否正常运行。

另请参见

有关如何配置 Oracle Solaris Cluster 组件的更多信息,请参见以下资源。

关于作者

在过去 12 年里,Venkat Chennuru 一直是 Oracle Solaris Cluster 组的质量带头人。在此之前,Venkat 曾是位于美国明尼苏达州明尼阿波利斯的 US West Communications 公司的系统管理员。在更早的时候,Venkat 在位于印度海得拉巴的 Intergraph India Pvt. Ltd. 公司担任系统和网络管理员一职。Venkat 具有电子和通信领域的特殊文凭,专攻工业电子和仪器仪表。

修订版 1.2,2013 年 1 月 23 日

facebook 横幅广告 twitter 横幅广告