如何在集群中创建故障切换区域

在 Oracle Solaris 11 上使用 Oracle Solaris Cluster 4.0

作者:Venkat Chennuru,2011 年 12 月


如何使用适用于 Oracle Solaris 区域的 Oracle Solaris 集群高可用性代理以故障切换模式快速而轻松配置 Oracle Solaris 区域。




简介

Oracle Solaris 区域技术使用灵活的、软件定义的边界隔离软件应用程序和服务,这就让您可以在 Oracle Solaris 的一个实例内创建许多私有的执行环境。在 Oracle Solaris 区域内部署应用程序有许多优点,如故障和安全隔离、硬件计算资源利用的优化和通过资源封顶减少软件许可。

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

部署任务关键型应用程序时,可以将 Oracle Solaris 区域的优点与集群技术相结合以获得适当的应用程序服务级别。Oracle Solaris 的高可用性 (HA) 解决方案 Oracle Solaris Cluster 提供了与 Oracle Solaris 区域的紧密集成,并扩展了 Oracle Solaris 11 以便为部署虚拟化负载提供高可用的基础架构。

Oracle Solaris Cluster 为 Oracle Solaris 上的 Oracle Solaris 区域提供了两种不同类型的配置。Oracle Solaris 区域集群 将多个集群节点上的 Oracle Solaris 区域模型扩展到虚拟集群。这个特性让您可以通过基于策略的监视和故障切换保护在区域内运行的应用程序。它还实现了对隔离“虚拟”区域集群中多层负载的可靠操作。(有关详细信息,请参见白皮书《区域集群 — 如何部署虚拟集群及其原因》。)

除了区域集群,Oracle Solaris Cluster 还提供了一种方式来保护区域本身:故障切换区域。此区域被视为一个黑匣子,由区域的 Oracle Solaris Cluster 高可用性代理监视和控制 — 启动、停止和探测该区域。在发生故障时或根据请求,该代理还可以在服务器之间移动该区域。

本文介绍如何在双节点集群上设置故障切换区域。有关详细信息,请查看 Oracle Solaris Cluster 软件安装指南

假设和安装前检查

本节讨论双节点集群的安装前检查和配置假设。

配置假设

本文假设满足以下条件:

  • 集群已经安装并配置了 Oracle Solaris 11 和 Oracle Solaris Cluster 4.0。
  • 在集群节点上已经配置了 Oracle Solaris 和 Oracle Solaris Cluster 的信息库。
  • 集群硬件配置支持 Oracle Solaris Cluster 4.0 软件。
  • 已经安装双节点 SPARC 集群。但安装过程也适用于 x86 集群。
  • 每个节点有两个用作专用互连(也称为传输)的空闲网络接口,以及至少一个连接到公共网络的网络接口。
  • SCSI 共享存储连接到两个节点。
  • 您的配置与图 1 类似,但您可能具有更少或更多的设备,具体取决于您的系统或网络配置。

:建议但不要求在管理期间通过控制台访问节点。

图 1

图 1. Oracle Solaris Cluster 硬件配置

安装前检查

高可用性区域配置中 Oracle Solaris 区域的 zonepath 必须驻留在高可用的本地文件系统上。必须在区域可驻留的每个集群节点上配置该区域。该区域每次仅在一个节点上处于活动状态,且每次只在一个节点上探测该区域的地址。

确保有一个共享磁盘可用于托管故障切换区域的 zonepath(参见清单 1)。可以使用 /usr/cluster/bin/scdidadm -L/usr/cluster/bin/cldevice 列表来查看共享磁盘。每个集群节点有一个指向共享磁盘的路径。

清单 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:~#     

让 Oracle Solaris 区域以故障切换配置运行

在故障切换配置中,区域的 zonepath 必须位于高用性文件系统上。Oracle Solaris Cluster 提供了管理故障切换系统的特定服务:SUNW.HAStoragePlus 资源类型。

  1. 注册 SUNW.HAStoragePlus (HASP) 资源类型:

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

    phys-schost-1# /usr/cluster/bin/clrg create zone-rg
    
  3. 在共享磁盘上创建一个 zpool 以托管故障切换区域的 zonepath:

    phys-schost-1# zpool create -m /ha-zones ha-zones \ /dev/rdsk/c0t60080E500017B52C00002B9D4EB40DB5d0
    phys-schost-1# zpool export ha-zones
    
  4. 向 HASP 资源注册 zpool,并为区域的磁盘存储 (zpool) 创建(HASP 类型的)资源。

    phys-schost-1# /usr/cluster/bin/clrs create -t SUNW.HAStoragePlus -g zone-rg \ -p zpools=ha-zones ha-zones-hasp-rs
    phys-schost-1# /usr/cluster/bin/clrg online -emM -n phys-schost-1 zone-rg
    phys-schost-1# zfs create ha-zones/solaris
    
  5. 在可托管该故障切换区域的所有节点上创建和配置该区域。

    除了托管 zonepath 的 zpool 必须在共享磁盘上之外,对区域配置没有限制。

    对于我们的双节点集群,必须同时在两个节点(phys-schost-1phys-schost-2)上执行区域配置(使用 zonecfg 完成)。以下是使用 phys-schost-1 的示例。在 phys-schost-2 上执行相同的操作。

    phys-schost-1# zonecfg -z solarisfz1 \ 'create -b;
    set zonepath=/ha-zones/solaris/solarisfz1;
    set autoboot=false; set ip-type=shared;
    add attr; set name=osc-ha-zone; set type=boolean; set value=true; end;
    add net; set address=zone-hostname ; set physical=sc_ipmp0; end;'
    
  6. 验证是否在两个节点上配置了区域:

    phys-schost-1# zoneadm list -cv
      ID NAME             STATUS      PATH                             BRAND    IP
       0 global           running       /                              solaris  shared
       - solarisfz1       configured    /ha-zones/solaris/solarisfz1   solaris  shared
    
    phys-schost-2# zoneadm list -cv
      ID NAME             STATUS      PATH                             BRAND    IP
       0 global           running       /                              solaris  shared
       - solarisfz1       configured    /ha-zones/solaris/solarisfz1   solaris  shared
    
  7. 使用 zoneadm on phys-schost-1 安装该区域,这是 ha-zones zpool 在线的位置。清单 2 显示了安装的输出。

    清单 2. 安装区域
    phys-schost-1:~# zoneadm -z solarisfz1 install
    Progress being logged to /var/log/zones/zoneadm.20030401T184050Z.solarisfz1.inst
    all
           Image: Preparing at /ha-zones/solaris/solarisfz1/root.
    
     Install Log: /system/volatile/install.3349/install_log
     AI Manifest: /tmp/manifest.xml.QGa4Gg
      SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
        Zonename: solarisfz1
    Installation: Starting ...
    
                  Creating IPS image
                  Installing packages from:
                      solaris
                          origin:  http://pkg.oracle.com/solaris/release/
                      ha-cluster
                          origin:  http://localhost:1008/ha-cluster/2c76b8fe7512dde3
    9c04c11f28f6be4603f39c66/
    DOWNLOAD                                  PKGS       FILES    XFER (MB)
    Completed                              167/167 32062/32062  175.8/175.8$<3>
    
    PHASE                                        ACTIONS
    Install Phase                            44313/44313
    
    PHASE                                          ITEMS
    Package State Update Phase                   167/167
    Image State Update Phase                         2/2
    Installation: Succeeded
    
            Note: Man pages can be obtained by installing pkg:/system/manual
    
     done.
    
            Done: Installation completed in 550.217 seconds.
    
    
      Next Steps: Boot the zone, then log into the zone console (zlogin -C)
    
                  to complete the configuration process.
    
    Log saved in non-global zone as /ha-zones/solaris/solarisfz1/root/var/log/zones/
    zoneadm.20030401T184050Z.solarisfz1.install
    
  8. 验证区域是否已成功安装并可以在 phys-schost-1 上成功启动。
    1. 首先,验证区域已经安装:

      phys-schost-1# zoneadm list -cv
        ID NAME             STATUS      PATH                             BRAND    IP
         0 global           running       /                              solaris  shared
         - solarisfz1       installed     /ha-zones/solaris/solarisfz1   solaris  shared
      
    2. 然后,在另一个窗口(例如,从 sshrlogintelnet 窗口)登录区域的控制台,然后引导区域:

      phys-schost-1# zlogin -C solarisfz1 
      phys-schost-1# zoneadm -z solarisfz1 boot
      
    3. 按照各系统配置交互屏幕上的提示配置区域。
    4. 关闭区域并将资源组切换到资源组 nodelist 中的另一个节点。

      phys-schost-1# zoneadm -z solarisfz1 shutdown
      phys-schost-1# /usr/cluster/bin/clrg switch -n phys-schost-2 zone-rg
      phys-schost-1# zoneadm -z solarisfz1 detach -F
      phys-schost-1# zoneadm list -cv
        ID NAME             STATUS      PATH                             BRAND    IP
         0 global           running       /                              solaris  shared
         - solarisfz1       configured    /ha-zones/solaris/solarisfz1   solaris  shared
      
  9. 将来自第一个节点 phys-schost-1 的活动引导环境 (BE) 的 UUID 分配给第二个节点 phys-schost-2 上的活动 BE。
    1. 首先,获取 phys-schost-1 上活动 BE 的全局唯一标识符 (UUID)。

      phys-schost-1:~# beadm list -H
      b175b-fresh;70db96a2-5006-c84e-da77-f8bd430ba914;;;64512;static;1319658138
      s11_175b;b5d7b547-180d-467e-b2c4-87499cfc1e9d;NR;/;8000659456;static;1319650094
      s11_175b-backup-1;aba7a813-feb9-e880-8d7b-9d0e5bcd09af;;;166912;static;1319658479
      
      phys-schost-2:~# beadm list -H
      b175b-fresh;c37d524b-734a-c1e2-91d9-cf460c94110e;;;65536;static;1319471410
      s11_175b;1d0cca6d-8599-e54a-8afa-beb518b1d87a;NR;/;8096948224;static;1319293680
      s11_175b-backup-1;db2b581a-ea82-6e8c-9a3d-c1b385388fb7;;;167936;static;1319472971
      
    2. phys-schost-2 上的全局区域的活动 BE 的 UUID 设置成与 phys-schost-1 的相同。活动 BE 在第三个字段上有标志 N(由分号分隔)。UUID 设置在 BE 的数据集上。可以通过运行 df -b / 获取 UUID。

      phys-schost-2:~# df -b /
      Filesystem                       avail
      rpool/ROOT/s11_175b   131328596
      root@vzoolah3a:/#
      phys-schost-2:~# zfs set org.opensolaris.libbe:uuid=b5d7b547-180d-467e-b2c4-87499cfc1e9d \ rpool/ROOT/s11_175b
      
  10. 附加区域并验证区域是否可以在第二节点上引导。
    1. 首先,附加区域:

      phys-schost-2# zoneadm -z solarisfz1 attach -F
      
    2. 从另一个会话连接区域控制台:

      phys-schost-2# zlogin -C solarisfz1 
      
    3. 引导区域并观察控制台上的引导消息:

      phys-schost-2# zoneadm -z solarisfz1 boot
      
  11. 如果引导成功,关闭并分离区域:

    phys-schost-2# zoneadm -z solarisfz1 shutdown
    phys-schost-2# zoneadm -z solarisfz1 detach -F
    
  12. 在两个节点上,安装故障切换容器代理(如果尚未安装)。以下示例显示在 phys-schost-1 上执行此操作:

    phys-schost-1# pkg install ha-cluster/data-service/ha-zones
    
  13. 从任一节点(在下例中,显示 phys-schost-1)创建资源。然后在两个节点上编辑 sczbt_config 文件并设置参数。
    1. 首先,注册资源:

      phys-schost-1# clrt register SUNW.gds
      
    2. 然后,在两个节点上,编辑 sczbt_config 文件并设置参数。(在清单 3 中的示例中,显示 phys-schost-1。)

      清单 3. 设置参数
      phys-schost-1# cd /opt/SUNWsczone/sczbt/util
      phys-schost-1# cp -p sczbt_config sczbt_config.solarisfz1-rs
      phys-schost-1# vi sczbt_config.solarisfz1-rs
      RS=solarisfz1-rs
      RG=zone-rg
      PARAMETERDIR=/ha-zones/solaris/solarisfz1/params
      SC_NETWORK=false
      SC_LH=
      FAILOVER=true
      HAS_RS=ha-zones-hasp-rs
      Zonename="solarisfz1"
      Zonebrand="solaris"
      Zonebootopt=""
      Milestone="svc:/milestone/multi-user-server"
      LXrunlevel="3"
      SLrunlevel="3"
      Mounts=""
      
    3. phys-schost-2 上,创建 params 目录,如 sczbt_config 文件中所示。

      phys-schost-2# mkdir /ha-zones/solaris/solarisfz1/params
      
    4. 在一个节点上,配置区域引导资源。使用 sczbt_config 文件中设置的参数对该资源进行配置。

      phys-schost-2# ./sczbt_register -f ./sczbt_config.solarisfz1-rs
      
    5. 在一个节点上,启用创建的故障切换区域资源。

      phys-schost-2# /usr/cluster/bin/clrs enable solarisfz1-rs
      
    6. 在一个节点上,检查资源组和资源的状态,如清单 4 所示。

      清单 4. 检查状态
      phys-schost-2# /usr/cluster/bin/clrs status -g zone-rg
      
      === Cluster Resources ===
      
      Resource Name         Node Name      State      Status Message
      -------------------   -------------  -----      -------------------
      solarisfz1-rs         phys-schost-1  Offline    Offline
                            phys-schost-2  Online     Online
      
      ha-zones-hasp-rs      phys-schost-1  Offline    Offline
                            phys-schost-2  Online     Online
      
      phys-schost-2#
      
  14. 使用 zlogin -C solarisfz1 验证区域是否已成功引导,然后切换到另一个节点测试故障切换功能,如清单 5 所示。

    清单 5. 检查故障切换功能
    phys-schost-2# /usr/cluster/bin/clrg switch -n phys-schost-1 zone-rg
    phys-schost-2# /usr/cluster/bin/clrs status -g zone-rg
    
    === Cluster Resources ===
    
    Resource Name         Node Name      State       Status Message
    -------------------   -------------  -----       -------------------
    solarisfz1-rs         phys-schost-1  Online      Online
                          phys-schost-2  Offline     Offline
    
    ha-zones-hasp-rs      phys-schost-1  Online      Online
                          phys-schost-2  Offline     Offline
    
    phys-schost-2#
    
  15. 使用 zlogin -C solarisfz1 验证区域是否已成功切换到另一节点。

总结

本文介绍如何使用 Oracle Solaris 11 上的 Oracle Solaris Cluster 4.0 在双节点集群上设置故障切换区域。还介绍了如何通过从一个节点到另一个节点进行区域切换来验证集群行为是否正常。

更多信息

有关如何配置 Oracle Solaris Cluster 组件的更多信息,请参见表 2 列出的资源。

表 2. 资源
资源 URL
Oracle Solaris Cluster 4.0 文档库 http://www.oracle.com/pls/topic/lookup?ctx=E23623
Oracle Solaris Cluster 软件安装指南 http://www.oracle.com/pls/topic/lookup?ctx=E23623&id=CLIST
Oracle Solaris Cluster 数据服务规划和管理指南 http://www.oracle.com/pls/topic/lookup?ctx=E23623&id=CLDAG
Oracle Solaris Cluster 4.0 版本说明 http://www.oracle.com/pls/topic/lookup?ctx=E23623&id=CLREL
Oracle Solaris Cluster 培训 http://www.oracle.com/technetwork/cn/server-storage/solaris-cluster/training/index.html
Oracle Solaris Cluster 下载 http://www.oracle.com/technetwork/cn/server-storage/solaris-cluster/downloads/index.html

修订版 1.0,2011 年 12 月 2 日

通过 FacebookTwitterOracle 博客关注我们。