作者:Orgad Kimchi 和 Roman Ivanov,2012 年 2 月
本文介绍如何利用 Oracle VM Server for SPARC 2.1(以前称为 Sun Logical Domains)中的实时迁移功能在不中断的情况下将正在运行的单个 Oracle Database 11g 第 2 版实例迁移到另一个系统。
注:包含 Oracle VM Server for SPARC 的 Oracle Database 11g 第 2 版已通过了 从 Oracle Solaris 10 10/08 及更高版本的认证。本文使用 Oracle Solaris 10 9/10 来评估 Oracle VM Server for SPARC 2.1 的实时迁移特性。
本文包括以下主题:
掌握这些概念有助于您更好地理解我们推荐的系统配置。
讨论高可用性时,我们需要区分计划停机和意外停机。
计划停机 是指中断日常系统操作的预防性或纠正性维护任务。通常,由于系统的软件和硬件设计方面的限制,这种停机无法延迟。
计划停机在时间上的安排应确保对系统可用性的影响最小,因为即使对子系统进行微小修改也会破坏可用性,从而影响业务需求。
计划停机是由修复、备份或升级操作等维护事件导致的。修复旨在移除故障组件,使系统恢复到正常运行状态。实施升级是为了以更新(或增强)版本取代当前硬件或软件。
意外停机 是由硬件故障和环境事件导致的。通常,迫切需要立即解决此类停机问题。本文并不针对此类停机。
Oracle VM Server for SPARC 2.1 获得 Oracle UltraSPARC T2 和 UltraSPARC T2 Plus 平台的支持,也获得 Oracle SPARC T3 和 SPARC T4 平台的支持。
通过 Oracle VM Server for SPARC,您可以在一个物理系统上创建多个虚拟系统。每个虚拟系统称为一个逻辑域,运行自己的 Oracle Solaris 10 或 Oracle Solaris 11 实例。
Oracle VM Server for SPARC 能够为负载细粒度地分配 CPU 和内存资源。本文介绍如何使用实时迁移特性来迁移活动域。在两台计算机之间进行实时迁移最大程度地减少了运行的应用程序的中断,并提供了强大的平台来管理生产环境。
Oracle 数据库是领先的数据库应用程序,经常用于服务器上。通过使用虚拟化和整合,Oracle 数据库现在可以运行在经过认证的所选虚拟环境中,如 Oracle VM Server for SPARC。
Oracle VM Server for SPARC 2.1 版引入了实时迁移特性,可以在不中断域运行的情况下将活动域迁移到另一个系统。
实时迁移使用 SSL 对逻辑域内存结构进行加密,因此它们可以安全地通过网络传输。
启动迁移的主机称为源计算机,域迁移到其中的主机称为目标计算机。
类似地,迁移开始之后,要迁移的域称为待迁移域。迁移过程中,在目标计算机上创建的域称为已迁移域。
实时迁移对 CPU、内存和 I/O 有一系列的要求和限制,在源计算机和目标计算机上必须满足这些要求和限制。参见 Oracle VM Server for SPARC 2.1 版本说明中的“实时域迁移要求”。
使用实时迁移提供以下好处:
开始之前,确保您的软件和硬件满足这些要求。
要在 Oracle VM Server for SPARC 上运行 Oracle 数据库单实例配置,必须使用 Oracle Database 11g 第 2 版 (Oracle Database 11.2.0.1)。还支持更高版本。参见 Oracle 数据库文档以验证特定版本是否受支持,并查看其他要求。另请参见 My Oracle Support 网站(需要注册)。
任何支持 Oracle VM Server for SPARC 的服务器都可以与 Oracle 数据库一起使用。根据选定的配置和部署的不同,可能需要其他硬件,如外部存储阵列或网络交换机。
图 1 显示了符合域实时迁移要求的典型硬件配置和布线。此示例使用以下硬件:
图 1. 硬件配置和布线
运行 Oracle 数据库的每个来宾域应至少具有 16 个 CPU(2 个 CPU 内核)和 4 GB 内存。
为 Oracle 数据库单实例来宾域提供虚拟设备(虚拟磁盘和虚拟网络)的每个控制域都应至少具有 8 个 CPU(1 个 CPU 内核)和 4 GB 内存。
在本文提供的示例中,源服务器配置有控制域和一个托管 Oracle 数据库的来宾域(名为 ldg1
)。控制域名为 primary
,也是一个 I/O 域。此外,控制域还用作服务域,为来宾域提供虚拟设备服务(虚拟磁盘和虚拟网络)。
作为服务域,控制域提供以下虚拟设备服务:
primary-vds0
),将物理磁盘作为虚拟磁盘导出到来宾域。primary-vcc0
),提供对来宾域虚拟控制台的访问。此服务使用端口范围 5000–5100 来访问虚拟控制台。primary-vsw0
),与主网络接口 (nxge0
) 关联。按照以下步骤配置您的环境以便进行实时迁移。
新的 SPARC 服务器上预先安装了 Oracle Solaris。对于这些系统,应确保安装了相应的 Oracle Solaris 版本,并验证打了所需的补丁。
要在 SPARC 系统上重新安装 Oracle Solaris,请参见 Oracle Solaris 10 文档或 Oracle Solaris 11 文档。在本文的示例中,操作系统安装在服务器的第一个内部磁盘上。
安装 Oracle Solaris 之后,可以配置并启用系统以使用 Oracle VM Server for SPARC 2.1 软件。
新的 SPARC 服务器上也预先安装了 Oracle VM Server for SPARC 软件。对于这些系统,应确保安装了相应的 Oracle VM Server for SPARC 版本,并验证打了所有需要的补丁。
如果在服务器上重新安装了 Oracle Solaris,您可能必须重新安装 Oracle VM Server for SPARC 软件。参见 Oracle VM 下载页面。
以下示例显示了在每台物理服务器上执行的操作。每台服务器已经安装了 Oracle Solaris 和所需的补丁。
SUNWldm.v
程序包。参见 Oracle VM Server for SPARC 2.1 管理指南 中的“在新系统上安装 Oracle VM Server for SPARC 软件”。 primary# pkgadd -d OVM_Server_SPARC-2_1/Product SUNWldm.v
Sun Storage 2540-M2 存储阵列连接到控制域,控制域将两个 LUN(LUN 0 和 LUN 1)作为虚拟磁盘导出到来宾域。
来宾域使用第一个 LUN (LUN 0) 作为操作系统的系统磁盘,使用第二个 LUN (LUN 1) 作为存储 Oracle 数据库数据文件的磁盘。图 2 显示了源计算机和目标计算机的存储布局。
图 2. 存储配置
安装 Oracle VM Server for SPARC 软件之后,重新配置当前系统使其成为控制域。在每台物理服务器上执行以下操作:
vcc
) 服务以供虚拟网络终端服务器后台程序 (vntsd
) 使用,并作为所有逻辑域控制台的集中器。primary# ldm add-vcc port-range=5000-5100 primary-vcc0 primary
vds
)。primary# ldm add-vds primary-vds0 primary
vsw
) 以便在逻辑域中的虚拟网络 (vnet
) 设备之间实现联网。primary# ldm add-vsw net-dev=igb0 primary-vsw0 primary
ldm list-services
命令验证已经创建了这些服务,如清单 1 所示。primary# ldm list-services primary VDS NAME VOLUME OPTIONS DEVICE primary-vds0 VCC NAME PORT-RANGE primary-vcc0 5000-5100 VSW NAME MAC NET-DEV DEVICE MODE primary-vsw0 02:04:4f:fb:9f:0d nxge0 switch@0 prog,promisc VCC NAME LDOM PORT-RANGE primary-vcc0 primary 5000-5100 VSW NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID ... primary-vsw0 primary 00:14:4f:f8:28:c2 igb0 0 switch@0 1 1 1500 on VDS NAME LDOM VOLUME OPTIONS MPGROUP DEVICE primary-vds0 primary
Oracle VM Server for SPARC 使用 SSL 对迁移流量进行加密,以保护敏感数据免受利用,并消除了对额外硬件和专用网络的需求;
当源计算机和目标计算机上的主域具有分配的加密单元时,迁移操作的速度会增加。速度增加的原因在于可以将 SSL 操作分流到加密单元。
注:SPARC T4 CPU 具有内置的加密指令,因此您不需要为 CPU 分配这些指令。
primary# ldm list -o crypto primary
primary# ldm set-crypto 1 primary
您可以通过向源计算机上的主域中添加更多 CPU 来减少整体迁移时间。最好为每个主域至少分配 8 个 CPU。例如,以下命令为控制域分配 8 个 CPU 和 4 GB 内存。
primary# ldm start-reconf primary primary# ldm set-vcpu 8 primary primary# ldm set-memory 4G primary
primary# init 6
重新启动系统之后,启用 Oracle VM Server for SPARC 并为系统配置一个域:控制域 primary
。在控制域中,您可以创建和配置其他域。
ldmd
) 和虚拟网络终端服务器 (vntsd
) 服务。primary# svcadm enable ldmd primary# svcadm enable vntsd
initial
的配置。primary# ldm add-config initial
primary# ldm list-config factory-default initial [current]
配置控制域之后,创建来宾域以用作 Oracle 数据库节点。在作为源计算机的物理服务器上,仅创建一个来宾域。另一台物理服务器最终将成为目标计算机。
最初使用以下资源创建来宾域 ldg1
:
vnet0
),它连接到虚拟交换机 primary-vsw0
。c0d0
并且是存储阵列中的一个 LUN。域 ldg1
使用存储阵列的 LUN 0 (c2t6d0
)。c0d1
并且是存储阵列中的一个 LUN。域 ldg1
使用存储阵列的 LUN 1 (c2t6d1
)。此虚拟磁盘用于存储 Oracle 数据库文件。执行以下步骤创建每个来宾域:
ldg1
来宾域。注:如果您的服务器不是基于 SPARC T4 的系统,则仅执行 ldm set-crypto
命令。
primary# ldm create ldg1 primary# ldm set-vcpu 24 ldg1 primary# ldm set-memory 8G ldg1 primary# ldm set-crypto 3 ldg1 primary# ldm add-vnet vnet0 primary-vsw0 ldg1 primary# ldm add-vdsdev /dev/dsk/c2t6d0s2 vol1@primary-vds0 primary# ldm add-vdisk vol1 vol1@primary-vds0 ldg1 primary# ldm add-vdsdev /dev/dsk/c2t6d1s2 oradata@primary-vds0 primary# ldm add-vdisk oradata oradata@primary-vds0 ldg1
primary# ldm bind ldg1 primary# ldm start ldg1
primary# ldm ls ldg1 NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME ldg1 active -n---- 5000 24 8G 0.0% 1h 1m
telnet
命令访问 ldg1
域的控制台。 primary# telnet localhost 5000
启动来宾域之后,确保在来宾域中安装了相应的 Oracle Solaris 操作系统和补丁。您可以通过网络、从 DVD 或使用 DVD ISO 映像来执行安装。参见 Oracle VM Server for SPARC 2.1 管理指南。
注:LUN 通常在不同服务器上以不同名称显示。控制域中的 LUN 名称不需要相同。但是,两个系统上的控制域必须使用相同的卷名(vol1
和 oradata
)对相同的 LUN(LUN 0 和 LUN 1)进行虚拟化。
清单 2 的示例显示了如何为名为 ldg1
的域配置 8 个 CPU、24 GB 内存以及 Sun Storage 2540-M2 存储阵列中的两个 LUN。
primary# ldm ls -l ldg1 NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME ldg1 active -n---- 5000 24 8G 0.0% 1h 1m SOFTSTATE Solaris running MAC 00:14:4f:fb:96:89 HOSTID 0x84fb9689 CONTROL failure-policy=ignore DEPENDENCY master= VCPU VID PID UTIL STRAND 0 16 0.2% 100% 1 17 0.0% 100% 2 18 0.5% 100% 3 19 0.0% 100% 4 20 0.0% 100% 5 21 0.0% 100% 6 22 0.1% 100% 7 23 0.0% 100% 8 24 0.1% 100% 9 25 0.0% 100% 10 26 0.0% 100% 11 27 0.0% 100% 12 28 0.0% 100% 13 29 0.0% 100% 14 30 0.0% 100% 15 31 0.0% 100% 16 32 0.0% 100% 17 33 0.0% 100% 18 34 0.0% 100% 19 35 0.0% 100% 20 36 0.0% 100% 21 37 0.0% 100% 22 38 0.0% 100% 23 39 0.1% 100% MEMORY RA PA SIZE 0x8000000 0x408000000 8G VARIABLES boot-device=vdisk1 keyboard-layout=US-English NETWORK NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP vnet1 primary-vsw0@primary 0 network@0 00:14:4f:f9:c0:62 1 1500 DISK NAME VOLUME TOUT ID DEVICE SERVER MPGROUP vdisk1 vol1@primary-vds0 0 disk@0 primary oradata oradata@primary-vds0 1 disk@1 primary VCONS NAME SERVICE PORT ldg1 primary-vcc0@primary 5000
清单 3 的示例显示了控制域的配置。使用 ldm list-services
命令验证已经创建了这些服务。
primary# ldm ls-services primary VCC NAME LDOM PORT-RANGE primary-vcc0 primary 5000-5100 VSW NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID ... primary-vsw0 primary 00:14:4f:f9:32:b0 nxgeg0 0 switch@0 1 1 ... VDS NAME LDOM VOLUME OPTIONS MPGROUP DEVICE primary-vds0 primary vol1 /dev/dsk/c2t6d0s2 oradata /dev/dsk/c2t6d1s2
确保在来宾域中安装了相应的 Oracle Solaris 版本,并验证打了所需的补丁。
在来宾域中安装 Oracle Solaris 之后,可以配置并启用系统使其使用 Oracle 数据库。
Oracle Database 软件的安装类似于标准 Oracle Database 安装。首先安装 Oracle Database,然后应用最新补丁集。使用第二个 LUN 创建 UFS 或 ZFS 文件系统用于存储 Oracle 数据库数据文件。
有关针对 Oracle 数据库使用 ZFS 的更多信息,请参见针对 Oracle 数据库配置 Oracle Solaris ZFS。
按如下方式准备目标服务器。
要将第一个 LUN (LUN 0) 和第二个 LUN (LUN 1) 添加到目标计算机,从目标服务器的控制域执行以下命令:
# ldm add-vdsdev /dev/dsk/c2t6d0s2 vol1@primary-vds0 # ldm add-vdsdev /dev/dsk/c2t6d1s2 oradata@primary-vds0
注:LUN 通常在不同服务器上以不同名称显示。控制域中的 LUN 名称不需要相同。但是,两个系统上的控制域必须使用相同的卷名(vol1
和 oradata
)对相同的 LUN(LUN 0 和 LUN 1)进行虚拟化。
# ldm add-vsw net-dev=nxge0 primary-vsw0 primary
修订版 1.0,2012 年 2 月 23 日 |