What You See Is What You Get Element

如何将故障切换来宾域配置成单节点 Oracle Solaris 集群

在 Oracle Solaris 11.2 上使用 Oracle Solaris Cluster 4.2

作者:Venkat Chennuru

本文分步演示如何在 Oracle Solaris 11.2 上用 Oracle Solaris Cluster 4.2 部署高度可用的故障切换配置中的 Oracle VM Server for SPARC 来宾域,以及如何将来宾域配置成单节点集群。


2014 年 11 月发布


本文分步演示如何在 Oracle Solaris 11.2 上用 Oracle Solaris Cluster 4.2 部署高度可用的故障切换配置中的 Oracle VM Server for SPARC 来宾域,以及如何将来宾域配置成单节点集群。此配置通过在备用集群节点上重新启动来自动化来宾域的故障切换,从而保护来宾域免受计划停机和意外停机的影响。自动故障切换可在组件停止运行或来宾域因预防性维护需要迁移时提供保护。来宾域中的单节点集群可以通过单节点集群中的进程监视和重启工具,帮助保持应用的正常运行。

想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。

关于 Oracle Solaris Cluster

Oracle Solaris Cluster 提供了两种不同的解决方案来保护 Oracle VM Server for SPARC 部署(又称作 Logical Domains 或 LDom)。

  • 首先,可以将 Oracle VM Server for SPARC 域用作集群节点。这种配置类似于传统的“物理”服务器集群,只不过 Oracle Solaris Cluster 安装在逻辑域(控制、来宾或 I/O 域)中。可以通过内置或自定义的集群代理监视该域中运行的应用,并且可以根据需要或者在域或服务器发生故障时在另一个域上重新启动应用。
  • 第二种可能是用被称为 Oracle Solaris Cluster HA for Oracle VM Server for SPARC (HA for Oracle VM Server) 数据服务的特定代理保护域。在这种情况下,Oracle Solaris Cluster 安装在服务器控制域中,HA for Oracle VM Server 令其不仅可以管理应用,还可以将来宾域作为 Oracle Solaris Cluster 资源来管理。此高可用性 (HA) 代理将来宾域作为“黑盒”来控制和管理。它不仅可以在发生故障时对来宾域进行故障切换,而且还可以使用域迁移程序(实时迁移或温迁移)操作受管切换。

本文讨论第三种可能性,它与第二种类似,只是其中来宾域配置为单节点集群,管理该来宾域中的应用监视和应用重启。

本文详细说明如何配置来宾域将其置于 Oracle Solaris Cluster 的控制下。作为前提条件,您必须使用两个控制域安装一个双节点集群。有关此安装的更多信息,请参见文章“如何安装和配置双节点集群”和 Oracle Solaris Cluster 软件安装指南

关于 Oracle VM Server for SPARC 和 HA for Oracle VM Server 数据服务

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

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

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

配置假设

本文假设使用以下配置:

  • 两个 Oracle SPARC T 系列系统的两个控制域上已经安装了 Oracle Solaris 11.2 和 Oracle Solaris Cluster 4.2。也可以使用 Oracle Solaris 11.1 和 Oracle Solaris Cluster 4.2 组合。
  • 双节点集群配有两个服务器控制域。
  • 集群节点上已经配置适用于 Oracle Solaris 和 Oracle Solaris Cluster 的映像包管理系统信息库。
  • 集群硬件配置支持 Oracle Solaris Cluster 4.2 软件和 Oracle VM Server for SPARC 版本。有关更多信息,请参见 Oracle Solaris Cluster 4.x 兼容性指南
  • 每个节点有两个用作专用互连(也称为传输)的空闲网络接口,以及至少一个连接到公共网络的网络接口。
  • 集群上配置了 Oracle ZFS 存储设备。有关更多信息,请参见“如何在集群中安装 Oracle ZFS 存储设备”。

此外,建议您在集群互连上启用巨型帧来提高实时迁移的性能,从而提高 Oracle Solaris Cluster 切换速度。建议但不要求在管理期间通过控制台访问节点。

您的配置与图 1 类似。您可能具有更少或更多的设备,具体取决于您的系统或网络配置。

图 1. Oracle Solaris Cluster 硬件配置

图 1. Oracle Solaris Cluster 硬件配置

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

要求

继续之前,应注意以下要求:

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

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

  1. 准备文件系统:

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

    本文中示例使用一个 NFS 位置来托管故障切换 LDom 的引导磁盘。Oracle Solaris Cluster 提供了 SUNW.ScalMountPoint 服务来管理 NFS 文件系统挂载。使用 SUNW.ScalMountPoint 服务管理此配置使用的 NFS 挂载。

    1. 注册 SUNW.ScalMountPoint 资源类型。

      phys-schost-1# /usr/cluster/bin/clrt register SUNW.ScalMountPoint
      
    2. 创建可扩展资源组以托管可扩展资源。

      phys-schost-1# /usr/cluster/bin/clrg create -S -p \ 
      Maximum_primaries=2 -p Desired_primaries=2 ldom-scalrg
      
    3. 创建可扩展资源以在所有节点上挂载 NFS 文件系统。

      phys-schost-1# /usr/cluster/bin/clrs create -g ldom-scalrg -t \ 
      SUNW.ScalMountPoint -x \
      MountPointDir=/disks -x FileSystemType=nas -x \
      TargetFileSystem=nfs-server:/export/disks ldom-scalrs
      
    4. 将资源组联机,同时在两个节点上挂载 NFS 位置。

      phys-schost-1# /usr/cluster/bin/clrg online -eM ldom-scalrg
      
    5. 创建 HA LDom 资源组。

      phys-schost-1# /usr/cluster/bin/clrg create -p \
      rg_affinities=++ldom-scalrg ldom-rg
      phys-schost-1# /usr/cluster/bin/clrg online -eM ldom-rg
      
  2. 准备域配置:

    1. 这两个 节点上的主域设置故障策略。主域的故障策略通过设置 failure-policy 属性来控制。必须将其设置为 reset

      # 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
      

      引导磁盘路径取决于引导磁盘是原始磁盘还是全局文件系统或网络文件系统上基于文件的虚拟磁盘。如果是原始磁盘,必须将其指定为 /dev/global/dsk/dXs2。此示例使用网络文件系统,因此,它是一个基于文件的虚拟磁盘。

      # mkfile 20g /disks/ldg1-boot
      # ldm add-vdsdev /disks/ldg1-boot ldg1- boot@primary-vds0
      

      列出服务,确保两个集群节点上的服务相同。在 ldm list-services 命令输出中,ldg1-bootdvd 磁盘服务应完全一样,因为它们在联机时供来宾域使用。

    3. 检查 phys-schost-1 上的服务。

      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 /disks/ldg1-boot
      dvd /var/tmp/sol-11_1-20-text-sparc.iso
      phys-schost-1#
      
    4. 检查 phys-schost-2 上的服务。

      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 /disks/ldg1-boot
      dvd /var/tmp/sol-11_1-20-text-sparc.iso
      phys-schost-2#
      
    5. 只在一个节点上创建逻辑域。只能在一个节点上配置故障切换配置中的来宾 LDom,并且在创建 HA LDom 资源时,配置将存储在 CCR 中。当 LDom 资源联机时,将在其联机的节点上创建 LDom。HA LDom 资源启动并引导 LDom。

      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
      

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

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

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

      phys-schost-1# ldm bind ldg1
      phys-schost-1# ldm boot ldg1
      
    6. 如果 vntsd 服务尚未联机,则启用它。然后连接到控制台并通过 DVD 引导。

      # svcadm enable vntsd
      # telnet 0 5000
      # ok boot dvd
      
    7. 执行安装过程,在来宾域 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
      
    8. 设置来宾域的 master 属性。master 属性必须设置为 primary,这样一来,如果主节点崩溃或重新启动,来宾 LDom 将重新启动。每个从域可以通过设置 master 属性指定多达四个主域。

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

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

  3. 将来宾域置于 Oracle Solaris Cluster 控制之下:
    1. 注册 SUNW.ldom 资源类型。

      phys-schost-1# /usr/cluster/bin/clrt register SUNW.ldom
      
    2. 在这两个集群节点上创建加密密码文件。

      phys-schost-1# dd if=/dev/urandom of=/var/cluster/ldom_key bs=16 count=1
      phys-schost-1# chmod 400 /var/cluster/ldom_key
      phys-schost-1# echo <root-password> | /usr/sfw/bin/openssl enc -aes128 \
      -e -pass file:/var/cluster/ldom_key -out /opt/SUNWscxvm/.ldg1_passwd
      phys-schost-1# chmod 400 /opt/SUNWscxvm/.ldg1_passwd
      phys-schost-1# echo "encrypted" > /disks/passwd
      
    3. 验证可以解密加密密码。

      phys-schost-1# /usr/sfw/bin/openssl enc -aes128 -d -pass \ 
      file:/var/cluster/ldom_key -in /opt/SUNWscxvm/.ldg1_passwd
      
    4. ldg1 域置于数据服务的控制下。

      phys-schost-1# /usr/cluster/bin/clrs create -g ldom-rg -t SUNW.ldom \
      -p Domain_name=ldg1 -p Password_file=/disks/passwd \
      -p Plugin_probe="/opt/SUNWscxvm/bin/ppkssh \
      -P user1:/home/user1/.ssh/id_dsa:ldg1:multi-user-server:online" \
      -p resource_dependencies_offline_restart=ldom-scalrs ldom-rs
      
    5. 运行以下命令,验证两个节点上的 ssh 设置。在这里,ldg1ldg1 域的主机名。

      phys-schost-1# ssh -i /home/user1/.ssh/id_dsa -l user1 ldg1 svcs -H -o state multi-user-server:default
      
      phys-schost-2# ssh -i /home/user1/.ssh/id_dsa -l user1 ldg1 svcs -H -o state multi-user-server:default
      
    6. 检查资源和资源组的状态:

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

验证来宾域故障切换

  1. 根据配置,使用 sshrshtelnet 通过网络连接到来宾域,然后运行 w 命令查看正常运行时间,并验证来宾域是否在未重新启动的情况下完成了“实时迁移”:

    # ssh -l username <host-name-of-failover-guest-domain>
    w
    
  2. 将资源组切换到其他节点,确保两个节点上都正确配置了服务。LDom 代理执行实时迁移,这样可确保 sshrshtelnet 连接不受切换的影响。

    phys-schost-1# clrg switch -n phys-schost-2 ldom-rg
    
  3. 将资源组切换回主节点。

    phys-schost-2# clrg switch -n phys-schost-1 ldom-rg
    
  4. ssh 会话上对故障切换域的主机名运行 w,验证来宾域是否处于活动状态。
  5. 由于来宾域已经使用 HA 代理针对 HA 进行配置,可以使用 Oracle Solaris Cluster 安装程序安装该域并将其配置为单节点集群,如下一节所述。

    为了准备安装,登录到域控制台。您可以使用下面所示的 ldm 命令确定域控制台的端口号(本例中为 5001)。相比于从 phys-schost-2 控制台登录,从 ssh 会话登录 phys-schost-2 更好。

    root@phys-schost-2# ldm ls ldg1
    NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  NORM  UPTIME
    ldg1             active     -n----  5001    8     8G       0.1%  0.1%  18h 49m
    root@phys-schost-2 # telnet 0 5001
    

安装、配置和验证单节点集群

  1. 安装集群。

    root@ldg1-hostname:~# pkg set-publisher -k /var/pkg/ssl/Oracle_Solaris_Cluster_4.key.pem \
    -c /var/pkg/ssl/Oracle_Solaris_Cluster_4.certificate.pem \
    -O https://pkg.oracle.com/ha-cluster/release ha-cluster
    
    root@ldg1-hostname:~# pkg publisher
    PUBLISHER                   TYPE     STATUS P LOCATION
    solaris                     origin   online F http://pkg.oracle.com/solaris/release/
    ha-cluster                  origin   online F https://pkg.oracle.com/ha-cluster/release/
    root@ldg1-hostname:~#
    
    root@ldg1-hostname:~# pkg install --accept ha-cluster-full
               Packages to install: 124
               Mediators to change:   1
                Services to change:  10
           Create boot environment:  No
    Create backup boot environment: Yes
    DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
    Completed                            124/124   17794/17794  438.3/438.3  674k/s
    
    PHASE                                          ITEMS
    Installing new actions                   23248/23248
    Updating package state database                 Done
    Updating package cache                           0/0
    Updating image state                            Done
    Creating fast lookup database                   Done
    Updating package cache                           2/2
    
    root@ldg1-hostname:~# /usr/cluster/bin/scinstall -iFo -C testcluster
    
    Initializing cluster name to "testcluster" ... done
    Initializing authentication options ... done
    /usr/cluster/bin/scinstall[13]: test: argument expected
    
    
    Setting the node ID for "ldg1-hostname" ... done (id=1)
    
    Updating nsswitch.conf ... done2
    
    Adding cluster node entries to /etc/inet/hosts ... done
    
    
    Configuring IP multipathing groups ...done2
    
    Ensure that the EEPROM parameter "local-mac-address?" is set to "true" ... done
    
    Ensure network routing is disabled ... done
    Network routing has been disabled on this node by creating /etc/notrouter.
    Having a cluster node act as a router is not supported by Oracle Solaris Cluster.
    Please do not re-enable network routing.
    Please reboot this machine.
    
    
    Log file - /var/cluster/logs/install/scinstall.log.945
    
    root@ldg1-hostname:~# reboot
    
  2. 登录到集群节点控制台,验证状态。

    root@ldg1-hostname:~# /usr/cluster/bin/clnode status
    
    === Cluster Nodes ===
    
    --- Node Status ---
    
    Node Name                               Status
    ---------                                       ------
    ldg1-hostname                           Online
    

    此故障切换 LDom 可用作任何其他物理单节点集群,托管资源组和资源。创建 LogicalHostname 资源之前,将 lh-hostname 的主机名和 IP 地址映射添加到 /etc/hosts 文件。

    root@idg1-hostname:~# /usr/cluster/bin/clrg create lh-rg    
    root@idg1-hostname:~# /usr/cluster/bin/clrslh create -g lh-rg lh-hostname
    root@idg1-hostname:~# /usr/cluster/bin/clrg online -emM +
    root@idg1-hostname:~# /usr/cluster/bin/clrg status       
    
    === Cluster Resource Groups ===
    
    Group Name       Node Name        Suspended      Status
    ----------       ---------        ---------      ------
    lh-rg            ldg1-hostname    No             Online
    

总结

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

另请参见

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

关于作者

在过去 14 年里,Venkat Chennuru 一直是 Oracle Solaris Cluster 组的质量带头人。

修订版 1.0,2014 年 11 月 25 日

关注我们:
博客 | Facebook | Twitter | YouTube