如何配置 Oracle Solaris 故障切换内核区域

在 Oracle Solaris 11.2 上使用 Oracle Solaris Cluster 4.2

作者:Venkat Chennuru

本文介绍如何在双节点集群中使用适用于 Oracle Solaris 区域的 Oracle Solaris Cluster 高可用性 (HA) 代理将一个 Oracle Solaris 内核区域配置为故障切换模式。


2014 年 10 月发布


想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。
目录
关于 Oracle Solaris Cluster 故障切换区域
配置假设
先决条件
使用故障切换文件系统让内核区域按故障切换配置运行
另请参见
关于作者

本文旨在帮助新老 Oracle Solaris 管理员使用适用于 Oracle Solaris Zones 的 Oracle Solaris Cluster HA 代理快速、轻松地将 Oracle Solaris 内核区域配置为故障切换模式。有关更多详细信息,请参见适用于 Oracle Solaris 区域的 Oracle Solaris Cluster 数据服务指南

关于 Oracle Solaris Cluster 故障切换区域

Oracle Solaris 区域支持被称作内核区域的完全独立、隔离的环境,内核区域在区域内提供一个完整的内核和用户环境。内核区域增加了操作的灵活性,非常适合维护窗口明显难以安排的多租户环境。内核区域不必与全局区域运行于相同的内核版本上,可以单独更新,无需重启全局区域。您还可以将内核区域与 Oracle VM Sever for SPARC 结合使用,实现更大的虚拟化灵活性。

本文介绍如何在双节点集群上配置故障切换内核区域。

配置假设

本文假设使用以下配置:

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

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

图 1

图 1. Oracle Solaris Cluster 硬件配置

先决条件

确保满足以下先决条件:

  1. HA 区域配置中内核区域的引导磁盘必须位于共享磁盘上。
  2. 必须在区域可故障切换的每个集群节点上配置该区域。
  3. 该区域每次仅在一个节点上处于活动状态,且每次只在一个节点上探测该区域的地址。
  4. 确保有一个共享磁盘可用于托管故障切换区域的 zonepath。可以使用 /usr/cluster/bin/scdidadm -L/usr/cluster/bin/cldevice list 查看共享磁盘。每个集群节点有一个指向共享磁盘的路径。
  5. 验证 Oracle Solaris 操作系统版本不低于 11.2。

    root@phys-schost-1:~# uname -a
    SunOS phys-schost-1 5.11 11.2 sun4v sparc sun4v
    
  6. 验证内核区域标记包 brand/brand-solaris-kz 已安装在主机上。

    root@phys-schost-1# pkg list brand/brand-solaris-kz
    NAME (PUBLISHER)                                  VERSION                    IFO
    system/zones/brand/brand-solaris-kz               0.5.11-0.175.2.0.0.41.0    i--
    
  7. 运行 virtinfo 命令验证集群节点上支持内核区域。以下示例显示主机 phys-schost-1 上已安装内核区域标记包。

    root@phys-schost-1:~# virtinfo
    NAME            CLASS
    logical-domain  current
    non-global-zone supported
    kernel-zone     supported
    
  8. 识别两个共享磁盘,一个用作引导磁盘,另一个用作挂起磁盘。仅当内核区域的配置中包含挂起资源属性时,该内核区域才支持挂起和恢复。如果未配置挂起设备,则不能使用热迁移。内核区域支持在故障切换期间执行冷热迁移。本示例使用共享磁盘 d7d8。您可以使用 suriadm 查询这两个磁盘的 URI。

    root@phys-schost-1:~# /usr/cluster/bin/scdidadm -L d7 d8
    7        phys-schost-1:/dev/rdsk/c0t60080E500017B5D80000084D52711BB9d0 /dev/did/rdsk/d7     
    7        phys-schost-2:/dev/rdsk/c0t60080E500017B5D80000084D52711BB9d0 /dev/did/rdsk/d7     
    8        phys-schost-1:/dev/rdsk/c0t60080E500017B5D80000084B52711BAEd0 /dev/did/rdsk/d8     
    8        phys-schost-2:/dev/rdsk/c0t60080E500017B5D80000084B52711BAEd0 /dev/did/rdsk/d8     
    root@phys-schost-1:~# suriadm lookup-uri /dev/did/dsk/d7
    dev:did/dsk/d7
    root@phys-schost-1:~# suriadm lookup-uri /dev/did/dsk/d8
    dev:did/dsk/d8
    
  9. 区域的源和目标必须位于同一平台上才能进行区域迁移。在 x86 系统上,供应商及 CPU 版本必须相同。在 SPARC 系统上,区域的源和目标必须位于相同的硬件平台上。例如,不能将内核区域从 SPARC T4 主机迁移到 SPARC T3 主机。

使用故障切换文件系统让内核区域按故障切换配置运行

在故障区域配置中,区域的 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 sol-kz-fz1-rg
    
  3. 创建一个 HAStoragePlus 资源来监视用作内核区域的引导或挂起设备的磁盘。

    root@phys-schost-1:~# clrs create -t SUNW.HAStoragePlus -g sol-kz-fz1-rg \
    -p GlobalDevicePaths=dsk/d7,dsk/d8 sol-kz-fz1-hasp-rs
    root@phys-schost-1:~# /usr/cluster/bin/clrg online -emM -n phys-schost-1 \ sol-kz-fz1-rg
    
  4. phys-schost-1 上创建并配置区域。必须确保引导和挂起设备位于共享磁盘上。为了配置双节点集群,在 phys-schost-1 上执行以下命令,然后将区域配置复制到 phys-schost-2

    root@phys-schost-1:~# zonecfg -z sol-kz-fz1 'create -b; set brand=solaris-kz;
    add capped-memory;
    set physical=2G; end; add device;
    set storage=dev:did/dsk/d7; set bootpri=1; end; add suspend; set 
    storage=dev:did/dsk/d8; end; add anet; set lower-link=auto; end; set autoboot=false; add attr;
    set name=osc-ha-zone; set type=boolean; set value=true; end;'
    
  5. 验证区域已配置。

    phys-schost-1# zoneadm list -cv
      ID NAME             STATUS      PATH      BRAND      IP
       0 global           running      /        solaris    shared
       - sol-kz-fz1       configured   -        solaris-kz excl
    
  6. 使用 zoneadm 安装区域,然后引导区域。

    root@phys-schost-1:~# zoneadm -z sol-kz-fz1 install
    Progress being logged to /var/log/zones/zoneadm.20140829T212403Z.sol-kz-fz1.install
    pkg cache: Using /var/pkg/publisher.
     Install Log: /system/volatile/install.4811/install_log
     AI Manifest: /tmp/zoneadm4203.ZLaaYi/devel-ai-manifest.xml
      SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
    Installation: Starting ...
            Creating IPS image
            Installing packages from:
                solaris
                    origin:  http://solaris-publisher.domain.com/support/sru/
                ha-cluster
                    origin:  http://cluster-publisher.domain.com/solariscluster/sru/
            The following licenses have been accepted and not displayed.
            Please review the licenses for the following packages post-install:
              consolidation/osnet/osnet-incorporation                     
            Package licenses may be viewed using the command:
              pkg info --license <pkg_fmri>
    
    DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
    Completed                            482/482   64261482/482   64261/64261  544.1/544.1  1.9M/s
    
    PHASE                                          ITEMS
    Installing new actions                   87569/87569
    Updating package state database                 Done
    Updating package cache                           0/0
    Updating image state                            Done
    Creating fast lookup database                   Done
    Installation: Succeeded
            Done: Installation completed in 609.014 seconds.
    
  7. 验证区域是否已成功安装并引导。

    phys-schost-1# zoneadm list -cv
      ID NAME             STATUS      PATH        BRAND       IP   
       0 global           running     /           solaris     shared
       - sol-kz-fz1       installed   -           solaris-kz  excl
    
  8. 在另一个窗口中,登录区域控制台并引导区域。按照各系统配置交互屏幕上的提示配置区域。

    phys-schost-1# zlogin -C sol-kz-fz1
    phys-schost-1# zoneadm -z sol-kz-fz1 boot
    
  9. 关闭区域并将资源组切换到资源组节点列表中的另一个节点。

    phys-schost-1# zoneadm -z sol-kz-fz1 shutdown
    phys-schost-1# zoneadm -z sol-kz-fz1 detach -F
    phys-schost-1# /usr/cluster/bin/clrg switch -n phys-schost-2 sol-kz-fz1-rg
    phys-schost-1# zoneadm list -cv
      ID NAME        STATUS      PATH   BRAND      IP
       0 global      running     /      solaris    shared
       - sol-kz-fz1  configured  -      solaris-kz excl
    
  10. 将区域配置复制到第二个节点,使用配置文件在第二个节点上创建内核区域。

    root@phys-schost-1:~# zonecfg -z sol-kz-fz1 export -f \ 
    /var/cluster/run/sol-kz-fz1.cfg
    root@phys-schost-1:~# scp /var/cluster/run/sol-kz-fz1.cfg phys-schost- \
    2:/var/cluster/run/
    root@phys-schost-1:~# rm /var/cluster/run/sol-kz-fz1.cfg
    root@phys-schost-2:~# zonecfg -z sol-kz-fz1 -f /var/cluster/run/sol-kz-\ 
    fz1.cfg
    root@phys-schost-2:~# rm /var/cluster/run/sol-kz-fz1.cfg
    
  11. 附加区域并验证区域是否可以在第二个节点上引导。从另一个会话登录,确保区域正常引导。

    root@phys-schost-2:~# zoneadm -z sol-kz-fz1 attach -x force-takeover
    root@phys-schost-2:~# zoneadm -z sol-kz-fz1 boot
    root@phys-schost-2:~# zlogin -C sol-kz-fz1
    
  12. 关闭并分离区域。

    root@phys-schost-2:~# zoneadm -z sol-kz-fz1 shutdown
    root@phys-schost-2:~# zoneadm -z sol-kz-fz1 detach -F
    
  13. 安装故障切换区域代理(如果尚未安装)。

    root@phys-schost-1# pkg install ha-cluster/data-service/ha-zones
    root@phys-schost-2# pkg install ha-cluster/data-service/ha-zones
    
  14. 要从任何一个节点创建资源,请编辑 sczbt_config 文件并设置参数,如下所示。

    root@phys-schost-2:~# clrt register SUNW.gds
    root@phys-schost-2:~# cd /opt/SUNWsczone/sczbt/util
    root@phys-schost-2:~# cp -p sczbt_config sczbt_config.sol-kz-fz1-rs
    root@phys-schost-2:~# vi sczbt_config.sol-kz-fz1-rs
    RS=sol-kz-fz1-rs
    RG=sol-kz-fz1-rg
    PARAMETERDIR=
    SC_NETWORK=false
    SC_LH=
    FAILOVER=true
    HAS_RS=RS=sol-kz-fz1-hasp-rs
    RG=sol-kz-fz1-rg
    Zonename="sol-kz-fz1"
    Zonebrand="solaris-kz"
    Zonebootopt=""
    Milestone="svc:/milestone/multi-user-server"
    LXrunlevel="3"
    SLrunlevel="3"
    Mounts=""
    Migrationtype="warm"
    
  15. 要配置区域引导资源,请在区域引导配置文件中设置参数。

    root@phys-schost-2:~# ./sczbt_register -f ./sczbt_config.kz
    sourcing ./sczbt_config.kz
    Registration of resource kz-rs succeeded.
    root@phys-schost-2:~# /usr/cluster/bin/clrs enable sol-kz-fz1-rs
    
  16. 检查资源组和资源的状态。

    root@phys-schost-2:~# /usr/cluster/bin/clrs status -g sol-kz-fz1-rg
    === Cluster Resources ===
    Resource Name         Node Name     State        Status Message
    -------------------   ------------- -----        -------------------
    sol-kz-fz1-rs         phys-schost-1 Online       Online - Service is online.
                          phys-schost-2 Offline      Offline
    
    sol-kz-fz1-hasp-rs    phys-schost-1  Online      Online
                          phys-schost-2  Offline     Offline
    root@phys-schost-2:~#
    
  17. 使用 zlogin -C sol-kz-fz1 命令登录,验证该区域是否成功引导,然后切换到另一个节点以测试故障切换。

    root@phys-schost-2:~# /usr/cluster/bin/clrg switch -n phys-schost-1 sol-kz-fz1-rg
    root@phys-schost-2:~# /usr/cluster/bin/clrs status -g sol-kz-fz1-rg
    === Cluster Resources ===
    
    Resource Name         Node Name     State         Status Message
    -------------------   ----------    -----          -------------------
    sol-kz-fz1-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
    root@phys-schost-2:~#
    

另请参见

有关如何配置 Oracle Solaris Cluster 组件的更多信息,请参阅以下手册。

关于作者

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

修订版 1.0,2014 年 10 月 24 日

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