文章
服务器与存储管理
作者:Venkat Chennuru
2014 年 11 月发布
本文分步演示如何在 Oracle Solaris 11.2 上用 Oracle Solaris Cluster 4.2 部署高度可用的故障切换配置中的 Oracle VM Server for SPARC 来宾域,以及如何将来宾域配置成单节点集群。此配置通过在备用集群节点上重新启动来自动化来宾域的故障切换,从而保护来宾域免受计划停机和意外停机的影响。自动故障切换可在组件停止运行或来宾域因预防性维护需要迁移时提供保护。来宾域中的单节点集群可以通过单节点集群中的进程监视和重启工具,帮助保持应用的正常运行。
|
Oracle Solaris Cluster 提供了两种不同的解决方案来保护 Oracle VM Server for SPARC 部署(又称作 Logical Domains 或 LDom)。
本文讨论第三种可能性,它与第二种类似,只是其中来宾域配置为单节点集群,管理该来宾域中的应用监视和应用重启。
本文详细说明如何配置来宾域将其置于 Oracle Solaris Cluster 的控制下。作为前提条件,您必须使用两个控制域安装一个双节点集群。有关此安装的更多信息,请参见文章“如何安装和配置双节点集群”和 Oracle Solaris Cluster 软件安装指南。
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 Solaris Cluster 切换速度。建议但不要求在管理期间通过控制台访问节点。
您的配置与图 1 类似。您可能具有更少或更多的设备,具体取决于您的系统或网络配置。

图 1. Oracle Solaris Cluster 硬件配置
有关各种受支持拓扑结构的详细信息,请参见 Oracle Solaris Cluster 概念指南。
继续之前,应注意以下要求:
在故障切换配置中,逻辑域的引导磁盘必须位于全局文件系统、网络文件系统 (NFS) 上,或者是一个原始共享磁盘。引导磁盘必须能够同时从所有潜在主节点访问,以便执行实时迁移。
本文中示例使用一个 NFS 位置来托管故障切换 LDom 的引导磁盘。Oracle Solaris Cluster 提供了 SUNW.ScalMountPoint 服务来管理 NFS 文件系统挂载。使用 SUNW.ScalMountPoint 服务管理此配置使用的 NFS 挂载。
SUNW.ScalMountPoint 资源类型。phys-schost-1# /usr/cluster/bin/clrt register SUNW.ScalMountPoint
phys-schost-1# /usr/cluster/bin/clrg create -S -p \ Maximum_primaries=2 -p Desired_primaries=2 ldom-scalrg
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
phys-schost-1# /usr/cluster/bin/clrg online -eM ldom-scalrg
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
failure-policy 属性来控制。必须将其设置为 reset。# 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
引导磁盘路径取决于引导磁盘是原始磁盘还是全局文件系统或网络文件系统上基于文件的虚拟磁盘。如果是原始磁盘,必须将其指定为 /dev/global/dsk/dXs2。此示例使用网络文件系统,因此,它是一个基于文件的虚拟磁盘。
# mkfile 20g /disks/ldg1-boot # ldm add-vdsdev /disks/ldg1-boot ldg1- boot@primary-vds0
列出服务,确保两个集群节点上的服务相同。在 ldm list-services 命令输出中,ldg1-boot 和 dvd 磁盘服务应完全一样,因为它们在联机时供来宾域使用。
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#
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#
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
vntsd 服务尚未联机,则启用它。然后连接到控制台并通过 DVD 引导。# svcadm enable vntsd # 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
master 属性。master 属性必须设置为 primary,这样一来,如果主节点崩溃或重新启动,来宾 LDom 将重新启动。每个从域可以通过设置 master 属性指定多达四个主域。phys-schost-1# ldm set-domain master=primary ldg1 phys-schost-1# ldm list -o domain ldg1
每个主域可以指定主域发生故障时从域的响应方式。例如,如果主域发生故障,可能需要其从域强行关闭。如果一个从域有多个主域,那么第一个发生故障的主域将触发其所有从域上定义的故障策略。
SUNW.ldom 资源类型。phys-schost-1# /usr/cluster/bin/clrt register SUNW.ldom
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
phys-schost-1# /usr/sfw/bin/openssl enc -aes128 -d -pass \ file:/var/cluster/ldom_key -in /opt/SUNWscxvm/.ldg1_passwd
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
ssh 设置。在这里,ldg1 是 ldg1 域的主机名。 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
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)
ssh、rsh 或 telnet 通过网络连接到来宾域,然后运行 w 命令查看正常运行时间,并验证来宾域是否在未重新启动的情况下完成了“实时迁移”:# ssh -l username <host-name-of-failover-guest-domain> w
ssh、rsh 或 telnet 连接不受切换的影响。phys-schost-1# clrg switch -n phys-schost-2 ldom-rg
phys-schost-2# clrg switch -n phys-schost-1 ldom-rg
ssh 会话上对故障切换域的主机名运行 w,验证来宾域是否处于活动状态。为了准备安装,登录到域控制台。您可以使用下面所示的 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
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
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 日 |