1. Oracle Solaris Cluster 管理简介
2. Oracle Solaris Cluster 和 RBAC
如何从群集节点中卸载 Oracle Solaris Cluster 软件
创建、设置和管理 Oracle Solaris Cluster SNMP 事件 MIB
如何从在非群集模式下引导的节点中获取 Solaris Volume Manager 元集
如何保存 Solaris Volume Manager 软件配置
如何重新创建 Solaris Volume Manager 软件配置
11. 修补 Oracle Solaris Cluster 软件和固件
本节介绍了如何对整个全局群集或区域群集执行管理任务。下表列出了这些管理任务及相关过程。通常在全局区域中执行群集管理任务。要管理区域群集,必须以群集模式启动至少一台将托管该区域群集的计算机。不需要启动并运行所有区域群集节点;当目前不在群集中的节点重新加入该群集时,Oracle Solaris Cluster 将重放任何配置更改。
在本章中,phys-schost# 表示全局群集提示符。clzonecluster 交互式 shell 提示符为 clzc:schost>。
表 9-1 任务列表:管理群集
|
根据需要,您可以在初次安装后更改群集的名称。
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
phys-schost# clsetup
显示“Main Menu”。
这时将显示“Other Cluster Properties”菜单。
phys-schost# stclient -x
phys-schost# stclient -d -i service_tag_instance_number
phys-schost# reboot
示例 9-1 更改群集的名称
以下示例显示了由 clsetup(1CL) 实用程序生成的 cluster(1CL) 命令,此命令用于将群集名称更改为 dromedary。
phys-schost# cluster -c dromedary
Oracle Solaris Cluster 安装期间,会自动为每个节点分配一个唯一的节点 ID 号。该 ID 号是按节点首次加入群集的顺序分配的。节点 ID 编号一经指定,便不能再更改。节点 ID 编号经常在错误消息中使用,标识与消息有关的群集节点。请按照此过程来确定节点 ID 和节点名称之间的映射。
您不需要具有超级用户身份,即可列出全局群集或区域群集的配置信息。此过程的其中一个步骤是从全局群集的一个节点上执行的。另一个步骤是从区域群集节点执行的。
phys-schost# clnode show | grep Node
phys-schost# zlogin sczone clnode -v | grep Node
示例 9-2 将节点 ID 映射到节点名称
下面的示例显示了全局群集的节点 ID 分配。
phys-schost# clnode show | grep Node === Cluster Nodes === Node Name: phys-schost1 Node ID: 1 Node Name: phys-schost2 Node ID: 2 Node Name: phys-schost3 Node ID: 3
使用 Oracle Solaris Cluster 可以确定新节点是否可将自身添加到全局群集中以及要使用的验证的类型。您可以允许任何新的节点通过公共网络加入群集、拒绝新节点加入群集或指定可以加入群集的具体节点。新节点可以通过使用标准 UNIX 或者 Diffie-Hellman (DES) 认证来进行认证。如果选择的是 DES 认证,还必须在节点加入前配置所有需要的加密密钥。有关更多信息,请参见 keyserv(1M) 和 publickey(4) 手册页。
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
phys-schost# clsetup
显示“Main Menu”。
这时将显示“New Nodes”菜单。
示例 9-3 防止将新计算机添加到全局群集中
clsetup 实用程序生成 claccess 命令。下面的示例显示了可防止将新计算机添加到群集的 claccess 命令。
phys-schost# claccess deny -h hostname
示例 9-4 允许将所有新计算机添加到全局群集中
clsetup 实用程序生成 claccess 命令。下面的示例显示了使所有新计算机都可以添加到群集的 claccess 命令。
phys-schost# claccess allow-all
示例 9-5 指定要添加到全局群集中的新计算机
clsetup 实用程序生成 claccess 命令。下面的示例显示了使单个新计算机可以添加到群集的 claccess 命令。
phys-schost# claccess allow -h hostname
示例 9-6 将验证设置为标准 UNIX
clsetup 实用程序生成 claccess 命令。下面的示例显示了使加入群集的新节点重置为标准 UNIX 验证的 claccess 命令。
phys-schost# claccess set -p protocol=sys
示例 9-7 将验证设置为 DES
clsetup 实用程序生成 claccess 命令。下面的示例显示了对加入群集的新节点使用 DES 验证的 claccess 命令。
phys-schost# claccess set -p protocol=des
如果采用 DES 验证,您还必须配置所有必要的加密密钥,然后才能将节点加入群集。有关更多信息,请参见 keyserv(1M) 和 publickey(4) 手册页。
Oracle Solaris Cluster 软件使用网络时间协议 (Network Time Protocol, NTP) 来保持群集节点间的时间同步。节点进行时间同步时,全局群集会根据需要自动进行调整。有关更多信息,请参见《Oracle Solaris Cluster Concepts Guide》和《Network Time Protocol User's Guide》。
注意 - 如果使用的是 NTP,请不要在群集处于打开和运行状态时调整群集时间。请不要以交互方式使用 date(1)、rdate(1M)、xntpd(1M) 或 svcadm(1M) 命令来调整时间,或在 cron(1M) 脚本中使用这些命令来调整时间。 |
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
phys-schost# cluster shutdown -g0 -y -i 0
在基于 SPARC 的系统上,运行以下命令。
ok boot -x
在基于 x86 的系统上,运行以下命令。
# shutdown -g -y -i0 Press any key to continue
GRUB 菜单显示如下内容:
GNU GRUB version 0.95 (631K lower / 2095488K upper memory) +-------------------------------------------------------------------------+ | Solaris 10 /sol_10_x86 | | Solaris failsafe | | | +-------------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, or 'c' for a command-line.
有关基于 GRUB 的引导的更多信息,请参见《系统管理指南:基本管理》中的"使用 GRUB 引导基于 x86 的系统(任务图)"。
GRUB 引导参数屏幕的显示与以下内容类似:
GNU GRUB version 0.95 (615K lower / 2095552K upper memory) +----------------------------------------------------------------------+ | root (hd0,0,a) | | kernel /platform/i86pc/multiboot | | module /platform/i86pc/boot_archive | +----------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press 'b' to boot, 'e' to edit the selected command in the boot sequence, 'c' for a command-line, 'o' to open a new line after ('O' for before) the selected line, 'd' to remove the selected line, or escape to go back to the main menu.
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ESC at any time exits. ] grub edit> kernel /platform/i86pc/multiboot -x
屏幕将显示编辑后的命令。
GNU GRUB version 0.95 (615K lower / 2095552K upper memory) +----------------------------------------------------------------------+ | root (hd0,0,a) | | kernel /platform/i86pc/multiboot -x | | module /platform/i86pc/boot_archive | +----------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press 'b' to boot, 'e' to edit the selected command in the boot sequence, 'c' for a command-line, 'o' to open a new line after ('O' for before) the selected line, 'd' to remove the selected line, or escape to go back to the main menu.-
注 - 对内核引导参数命令所做的这一更改在系统引导后将失效。下次重新引导节点时,系统将引导至群集模式。如果希望引导至非群集模式,请重新执行上述步骤,并将 -x 选项添加到内核引导参数命令中。
phys-schost# date HHMM.SS
phys-schost# rdate hostname
phys-schost# reboot
在每个节点上,运行 date 命令。
phys-schost# date
如果需要配置或更改 OpenBoot™ PROM 设置,请使用此过程。
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
# telnet tc_name tc_port_number
指定终端集中器的名称。
指定终端集中器上的端口号。端口号取决于配置。通常,端口 2 和 3(5002 和 5003)供站点上所安装的第一个群集使用。
phys-schost# clnode evacuate node # shutdown -g0 -y
注意 - 不要在群集控制台上用 send brk 来关闭群集节点。 |
首次安装群集时,系统会指定默认专用主机名。默认专用主机名的格式为:clusternode< nodeid>-priv,例如:clusternode3-priv。只有当专用主机名已在域中使用,您才能更改它。
注意 - 不要尝试给新的专用主机名分配 IP 地址。群集软件将进行分配。 |
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
phys-schost# clresource disable resource[,...]
禁用的应用程序应包括:
HA-DNS 和 HA-NFS 服务(如果已配置)
已通过定制操作配置为使用该专用主机名的任何应用程序
任何正由客户机通过专用互连使用的应用程序
有关使用 clresource 命令的信息,请参见 clresource(1CL) 手册页和《Oracle Solaris Cluster Data Services Planning and Administration Guide》。
使用 svcadm 命令关闭网络时间协议 (Network Time Protocol, NTP) 守护程序。有关 NTP 守护进程的更多信息,请参见 svcadm(1M) 手册页。
phys-schost# svcadm disable ntp
仅从群集中的一个节点运行此实用程序。
注 - 选择新的专用主机名时,请确保该名称对于群集节点是唯一的。
根据提示回答问题。系统会要求您提供要更改专用主机名的节点的名称 (clusternode< nodeid> -priv) 以及新的专用主机名。
请在群集每个节点上执行此步骤。刷新操作可避免群集应用程序和数据服务访问旧的专用主机名。
phys-schost# nscd -i hosts
如果在安装时执行此步骤,还要记得删除所配置的节点的名称。默认模板中预先配置有 16 个节点。通常,每个群集节点上的 ntp.conf.cluster 文件都相同。
对群集的每个节点执行本步骤。
使用 svcadm 命令重新启动 NTP 守护程序。
# svcadm enable ntp
phys-schost# clresource enable resource[,...]
有关使用 clresource 命令的信息,请参见 clresource(1CL) 手册页和《Oracle Solaris Cluster Data Services Planning and Administration Guide》。
示例 9-8 更改专用主机名
以下示例在节点 phys-schost-2 上将专用主机名从 clusternode2-priv 更改为 clusternode4-priv。
[Disable all applications and data services as necessary.] phys-schost-1# /etc/init.d/xntpd stop phys-schost-1# clnode show | grep node ... private hostname: clusternode1-priv private hostname: clusternode2-priv private hostname: clusternode3-priv ... phys-schost-1# clsetup phys-schost-1# nscd -i hosts phys-schost-1# vi /etc/inet/ntp.conf ... peer clusternode1-priv peer clusternode4-priv peer clusternode3-priv phys-schost-1# ping clusternode4-priv phys-schost-1# /etc/init.d/xntpd start [Enable all applications and data services disabled at the beginning of the procedure.]
使用此过程可在安装完成后为全局群集中的非投票节点添加专用主机名。在本章的操作过程中,phys-schost# 表示全局群集提示符。此操作过程仅适用于全局群集。
phys-schost# clsetup
根据提示回答问题。全局群集非投票节点专用主机名没有默认值。您需要提供一个主机名。
专用主机名是在首次安装群集时分配的。专用主机名的格式为:clusternode< nodeid>-priv,例如:clusternode3-priv。只有当专用主机名已在域中使用,您才能更改它。
注意 - 不要尝试给新的专用主机名分配 IP 地址。群集软件将进行分配。 |
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
phys-schost# clresource disable resource1, resource2
禁用的应用程序应包括:
HA-DNS 和 HA-NFS 服务(如果已配置)
已通过定制操作配置为使用该专用主机名的任何应用程序
任何正由客户机通过专用互连使用的应用程序
有关使用 clresource 命令的信息,请参见 clresource(1CL) 手册页和《Oracle Solaris Cluster Data Services Planning and Administration Guide》。
phys-schost# clsetup
只需在群集的一个节点上执行此步骤即可。
注 - 选择新的专用主机名时,请确保该名称对于群集是唯一的。
全局群集非投票节点的专用主机名无默认值。您需要提供一个主机名。
根据提示回答问题。系统会要求您提供要更改专用主机名的非投票节点的名称 (clusternode< nodeid> -priv) 以及新的专用主机名。
请在群集每个节点上执行此步骤。刷新操作可避免群集应用程序和数据服务访问旧的专用主机名。
phys-schost# nscd -i hosts
使用此过程可删除全局群集中非投票节点的专用主机名。此操作过程仅适用于全局群集。
可以更改作为 Oracle Solaris Cluster 配置组成部分的节点的名称。必须先重命名 Oracle Solaris 主机名才能重命名节点。使用 clnode rename 命令重命名节点。
以下说明适用于全局群集中运行的任何应用程序。
ok> boot -x
# clnode rename -n newnodename oldnodename
# sync;sync;sync;/etc/reboot
# clnode status -v
您可以按照如何重命名节点中的步骤,选择在重命名节点之前或之后更改逻辑主机名资源的 hostnamelist 属性。此步骤是可选的。
以下步骤说明了如何配置 apache-lh-res 资源以使用新的逻辑主机名,而且必须在群集模式下执行。
# clrg offline apache-rg
# clrs disable appache-lh-res
# clrs set -p HostnameList=test-2 apache-lh-res
# clrs enable apache-lh-res
# clrg online apache-rg
# clrs status apache-rs
如果要使某个全局群集节点在很长一段时间内停止服务,请将该节点置于维护状态。这样,在维护节点时,该节点不参与法定计数。要将某个节点置于维护状态,必须先使用 clnode(1CL) evacuate 和 cluster(1CL) shutdown 命令关闭该节点。
注 - 使用 Oracle Solaris shutdown 命令关闭单个节点。仅当关闭整个群集时,才能使用 cluster shutdown 命令。
当群集节点关闭并置于维护状态后,配置到该节点端口的所有法定设备的法定选票计数均会减 1。当该节点脱离维护模式并恢复联机状态后,节点和法定设备的投票计数会递增 1。
使用 clquorum(1CL) disable 命令可将群集节点置于维护状态。
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
phys-schost# clnode evacuate node
phys-schost# shutdown -g0 -y-i 0
phys-schost# clquorum disable node
指定要置于维护模式的节点的名称。
phys-schost# clquorum status node
如果节点置于维护状态,则它的 Status 值应为 offline,Present 和 Possible 法定投票数均应为 0(零)。
示例 9-9 将全局群集节点置于维护状态
以下示例将一个群集节点置于维护状态并检验结果。clnode status 的输出内容显示,phys-schost-1 的 Node votes 值为 0(零),状态为 Offline。Quorum Summary 也应显示投票计数已减少。视具体的配置情况而定,Quorum Votes by Device 的输出信息可能也会表明某些法定磁盘设备已脱机。
[On the node to be put into maintenance state:] phys-schost-1# clnode evacuate phys-schost-1 phys-schost-1# shutdown -g0 -y -i0 [On another node in the cluster:] phys-schost-2# clquorum disable phys-schost-1 phys-schost-2# clquorum status phys-schost-1 -- Quorum Votes by Node -- Node Name Present Possible Status --------- ------- -------- ------ phys-schost-1 0 0 Offline phys-schost-2 1 1 Online phys-schost-3 1 1 Online
要使节点恢复联机状态,请参见如何使节点脱离维护状态。
使用以下过程可使全局群集节点恢复联机状态,并将法定投票计数重置为默认值。对于群集节点,默认法定计数为 1。对于法定设备,默认法定计数为 N-1,其中 N 是具有指向该法定设备的端口且投票计数不为零的节点的数目。
当节点置于维护状态后,其法定选票计数会减 1。所有配置了到该节点的端口的法定设备也将减少其法定选票计数。重置法定选票计数并使节点脱离维护状态后,该节点的法定选票计数和法定设备选票计数均会加 1。
只要在全局群集节点已置于维护状态的情况下运行此过程,即可使该节点脱离维护状态。
注意 - 如果您既未指定 globaldev 选项,也未指定 node 选项,则会重置整个群集的法定计数。 |
phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。
此过程提供了 Oracle Solaris Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。
重新引导处于维护状态的节点之前,必须先从其他任一节点上重置法定计数,否则该节点可能会挂起,等待达到法定数目。
phys-schost# clquorum reset
用于重置法定数目的更改标志。
phys-schost# clquorum status
如果节点已脱离维护状态,它的状态应为 online,且 Present 和 Possible 法定投票均显示相应的投票计数。
示例 9-10 使群集节点脱离维护状态并重置法定选票计数
以下示例将群集节点及其法定设备的法定计数重置为默认值并检验结果。cluster status 的输出内容显示,phys-schost-1 的 Node votes 值为 1,状态为 online。Quorum Summary 也应显示投票计数增加了。
phys-schost-2# clquorum reset
在基于 SPARC 的系统上,运行以下命令。
ok boot
在基于 x86 的系统上,运行以下命令。
显示 GRUB 菜单后,选择相应的 Oracle Solaris 条目,然后按 Enter 键。GRUB 菜单显示如下内容:
GNU GRUB version 0.95 (631K lower / 2095488K upper memory) +-------------------------------------------------------------------------+ | Solaris 10 /sol_10_x86 | | Solaris failsafe | | | +-------------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, or 'c' for a command-line.
phys-schost-1# clquorum status --- Quorum Votes Summary --- Needed Present Possible ------ ------- -------- 4 6 6 --- Quorum Votes by Node --- Node Name Present Possible Status --------- ------- -------- ------ phys-schost-2 1 1 Online phys-schost-3 1 1 Online --- Quorum Votes by Device --- Device Name Present Possible Status ----------- ------- -------- ------ /dev/did/rdsk/d3s2 1 1 Online /dev/did/rdsk/d17s2 0 1 Online /dev/did/rdsk/d31s2 1 1 Online `
可以通过设置负载限制来启用资源组负载在各节点或区域间的自动分配。可为每个群集节点配置一组负载限制。将负载因子分配给资源组,负载因子与节点的已定义负载限制相对应。默认行为是跨资源组节点列表中的所有可用节点均匀分配资源组负载。
资源组由 RGM 从资源组节点列表中的某个节点启动,以便不会超出该节点的负载限制。在资源组由 RGM 分配给节点后,每个节点上资源组的负载因子将会汇总来提供总负载。然后总负载会与该节点的负载限制相比较。
负载限制包含以下项:
用户指定的名称。
软限制值-可以临时超出软负载限制。
硬限制值-绝不能超出硬负载限制,并且应严格执行此限制。
可以使用一个命令同时设置硬限制和软限制。如果没有明确设置其中某一限制,则会使用默认值。可使用 clnode create-loadlimit、clnode set-loadlimit 和 clnode delete-loadlimit 命令创建和修改每个节点的硬/软负载限制。有关更多信息,请参见 clnode(1CL) 手册页。
可以将某个资源组配置为具有较高优先级,以减小其从特定节点被替换的可能性。还可以设置 preemption_mode 属性,以确定某个资源组是否会由于节点过载而被优先级较高的资源组从节点中抢占。concentrate_load 属性还允许您将资源组负载集中分配给尽可能少的节点。默认情况下,concentrate_load 属性的默认值为 FALSE。
注 - 您可以在全局群集或区域群集中配置节点的负载限制。可以使用命令行、clsetup 实用程序或 Oracle Solaris Cluster Manager 界面配置负载限制。以下过程说明如何使用命令行配置负载限制。
# clnode create-loadlimit -p limitname=mem_load -Z zc1 -p softlimit=11 -p hardlimit=20 node1 node2 node3
在此例中,区域群集名称为 zc1。样例属性名为 mem_load,软限制值为 11,硬负载限制值为 20。软限制和硬限制是可选参数,如果您没有特别定义,则默认为无限制。有关更多信息,请参见 clnode(1CL) 手册页。
# clresourcegroup set -p load_factors=mem_load@50,factor2@1 rg1 rg2
在此例中,为两个资源组(即 rg1 和 rg2)设置了负载因子。负载因子设置与节点的已定义负载限制相对应。还可以使用 clresourceroup create 命令在资源组创建期间执行此步骤。有关更多信息,请参见 clresourcegroup(1CL) 手册页。
# clresourcegroup remaster rg1 rg2
此命令可将资源组从当前主节点移至其他节点,以实现均匀负载分配。
# clresourcegroup set -p priority=600 rg1
默认优先级为 500。在节点分配中,具有较高优先级值的资源组优先于具有较低优先级的资源组。
# clresourcegroup set -p Preemption_mode=No_cost rg1
有关 HAS_COST、 NO_COST 和 NEVER 选项的更多信息,请参见 clresourcegroup(1CL) 手册页。
# cluster set -p Concentrate_load=TRUE
正向或负向强关联优先于负载分配。不得违反强关联,也不得违反硬负载限制。如果同时设置了强关联和硬负载限制,那么假如无法满足这两项约束,可能会强制某些资源组保持脱机状态。
以下示例指定区域群集 zc1 中的资源组 rg1 与区域群集 zc2 中的资源组 rg2 之间的正向强关联。
# clresourcegroup set -p RG_affinities=++zc2:rg2 zc1:rg1
# clnode status -Z all -v
输出中包含为节点或其非全局区域定义的任何负载限制设置。