文章
服务器与存储管理
作者:Venkat Chennuru
2013 年 1 月发布(2013 年 1 月更新)
有关 Oracle VM Server for SPARC 和 Oracle Solaris Cluster 的更多信息
|
本文介绍的配置通过在备用集群节点上重新启动来自动化来宾域的故障切换,从而保护来宾域免受计划停机和意外停机的影响。自动故障切换可在组件停止运行或来宾域因预防性维护需要迁移时提供保护。
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 能够将一个物理系统拆分成多个独立的虚拟系统。这通过固件层的另一个软件应用程序实现 — 称作虚拟机管理程序 — 介于操作系统与硬件平台之间。虚拟机管理程序抽象了硬件,可以显示或隐藏各种资源,允许创建资源分区。这些资源分区作为独立系统运行,配备了虚拟 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 软件安装指南。
本文假设满足以下条件:

图 1. Oracle Solaris Cluster 硬件配置
有关各种受支持拓扑结构的详细信息,请参见 Oracle Solaris Cluster 概念指南。
确保满足以下条件:
可以使用 /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 资源管理此配置中使用的全局文件系统。
phys-schost-1# /usr/cluster/bin/clrt register SUNW.HAStoragePlus
phys-schost-1# /usr/cluster/bin/clrg create ldom-rg
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
/etc/vfstab,因为您使用的是全局文件系统:dev/md/bootdiskset/dsk/d0 /dev/md/bootdiskset/rdsk/d0 /global/ldom 2 no global
全局文件系统将用于托管引导磁盘。
phys-schost-1# /usr/cluster/bin/clrs create -g ldom-rg -p filesystemmountpoints=/global/ldom ldom-hasp-rs
phys-schost-1# /usr/cluster/bin/clrg online -emM ldom-rg
主域的故障策略通过为 failure-policy 属性设置以下值之一来控制:
ignore 忽略所有从域。panic 强行关闭所有从域。reset 重置所有从域。stop 停止所有从域。# ldm set-domain failure-policy=reset primary # ldm list -o domain primary
这两个集群节点上的虚拟服务名称必须完全 一样,如来宾域配置中所述。
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
ldm list-services 输出中,ldg1-boot 和 dvd 磁盘服务应完全一样,因为它们在联机时供来宾域使用。 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 上的服务
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 上的服务
只能在一个节点上配置故障切换配置中的来宾逻辑域,并且在创建高可用的 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
telnet 0 5000 ok boot dvd
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. 安装过程
master 属性。master 属性需要设置为 primary,这样一来,如果主节点崩溃或重新启动,来宾逻辑域将重新启动。
每个从域通过设置 master 属性最多可指定四个主域。
phys-schost-1 # ldm set-domain master=primary ldg1 phys-schost-1 # ldm list -o domain ldg1
每个主域可以指定主域发生故障时从域的响应方式。例如,如果主域发生故障,可能需要其从域强行关闭。如果一个从域有多个主域,那么第一个发生故障的主域将触发其所有从域上定义的故障策略。
phys-schost-1 # /usr/cluster/bin/clrt register SUNW.ldom
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
在这里,ldg1 是 ldg1 域的主机名。如果主机名和域名不同,您需要提供域的主机名。
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. 集群资源和资源组的状态
ssh、rsh 或 telnet 通过网络连接到来宾域,并查看运行时间:ssh -l username hostname-of-failover-guest-domain w
适用于 Oracle VM Server for SPARC 的 Oracle Solaris Cluster 数据服务执行实时迁移,这样可确保 ssh、rsh 或 telnet 连接不受切换的影响。
phys-schost-1 # clrg switch -n phys-schost-2 ldom-rg
ssh 会话上对故障切换域的主机名运行 w 来查看运行时间,并验证来宾域是否在未重新启动的情况下完成了实时迁移。phys-schost-2 # clrg switch -n phys-schost-1 ldom-rg
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 日 |