Sun Cluster 系统管理指南(适用于 Solaris OS)

第 8 章 添加和删除节点

本章介绍如何向群集添加节点以及如何删除节点:

有关群集维护任务的信息,请参见第 9 章

向群集添加节点

本节介绍如何向全局群集或区域群集添加节点。您可以在全局群集中托管区域群集的节点上创建一个新的区域群集节点,前提是该全局群集节点尚未托管该特定区域群集的节点。您无法将全局群集中的现有非投票节点转换为区域群集节点。

在本章中,phys-schost# 表示全局群集提示符。clzonecluster 交互式 shell 提示符为 clzc:schost>

下表列出了向现有群集中添加节点时所要执行的任务。请按照显示的顺序执行这些任务。

表 8–1 任务图:向现有的全局或区域群集添加节点

任务 

指导 

在节点上安装主机适配器并检验现有的群集互连是否支持该新节点 

《Sun Cluster 3.1 - 3.2 Hardware Administration Manual for Solaris OS》

添加共享存储器 

《Sun Cluster 3.1 - 3.2 Hardware Administration Manual for Solaris OS》

准备群集以添加节点 

《Sun Cluster 软件安装指南(适用于 Solaris OS)》中的“如何在添加全局群集节点之前做好群集准备工作”

使用 clsetup 将节点添加到授权节点列表中

如何向授权节点列表添加节点

在新的群集节点上安装并配置软件 

《Sun Cluster 软件安装指南(适用于 Solaris OS)》中的第 2  章 “在全局群集节点上安装软件”

如果该群集是在 Sun Cluster Geographic Edition 伙伴关系中配置的,请将新节点配置为该配置中的积极参与者 

《Sun Cluster Geographic Edition System Administration Guide》中的“How to Add a New Node to a Cluster in a Partnership”

Procedure如何向授权节点列表添加节点

在向现有全局群集或区域群集添加 Solaris 主机或虚拟机之前,请确保该节点已正确安装和配置了所有必需的软件和硬件,包括与专用群集互连的可用物理连接。

有关硬件安装信息,请参阅《Sun Cluster 3.1 - 3.2 Hardware Administration Manual for Solaris OS》或服务器附带的硬件文档。

使用此过程可将计算机的节点名称添加到群集的授权节点列表中,从而使该计算机将自身安装到该群集中。

phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 在当前某个全局群集成员上成为超级用户。从全局群集的节点中执行这些步骤。

  2. 确保已正确完成表 8–1 的任务图中列出的所有必要的先决硬件安装和配置任务。

  3. 启动 clsetup 实用程序。


    phys-schost# clsetup
    

    显示“Main Menu”。


    注 –

    要向区域群集中添加节点,请使用 clzonecluster 实用程序。有关手动向区域群集中添加区域的说明,请参见步骤 9。


  4. 键入与显示“新节点菜单”选项相对应的编号,然后按 Return 键。

  5. 键入与修改授权列表选项相对应的编号,然后按 Return 键。指定可添加自身的计算机的名称。

    按照提示将该节点的名称添加到群集中。系统会要求您提供要添加的节点的名称。

  6. 检验是否已成功执行该任务。

    如果 clsetup 实用程序正确无误地完成了此任务,将会显示消息 "Command completed successfully"。

  7. 要防止向群集中添加任何新计算机,请键入相应选项的编号,以指示群集忽略添加新计算机的请求。按回车键。

    按照 clsetup 提示操作。该选项将通知群集忽略公共网络上尝试将自身添加到群集中的任何新计算机发出的所有请求。

  8. 退出 clsetup 实用程序。

  9. 要手动向区域群集中添加节点,必须指定 Solaris 主机和虚拟节点名称。还必须指定要用于每个节点上的公共网络通信的网络资源。在下面的示例中,区域名称是 sczone,而 bge0 是两台计算机上的公共网络适配器。


    clzc:sczone>add node
    clzc:sczone:node>set physical-host=phys-cluster-1
    clzc:sczone:node>set hostname=hostname1
    clzc:sczone:node>add net
    clzc:sczone:node:net>set address=hostname1
    clzc:sczone:node:net>set physical=bge0
    clzc:sczone:node:net>end
    clzc:sczone:node>end
    clzc:sczone>add node
    clzc:sczone:node>set physical-host=phys-cluster-2
    clzc:sczone:node>set hostname=hostname2
    clzc:sczone:node>add net
    clzc:sczone:node:net>set address=hostname2
    clzc:sczone:node:net>set physical=bge0
    clzc:sczone:node:net>end
    clzc:sczone:node>end
    

    有关配置节点的详细说明,请参见《Sun Cluster 软件安装指南(适用于 Solaris OS)》中的“配置区域群集”

  10. 在此新群集节点上安装并配置软件。

    请使用 scinstall 或 JumpStartTM 软件完成新节点的安装和配置,如《Sun Cluster 软件安装指南(适用于 Solaris OS)》中所述。


示例 8–1 将全局群集节点添加到授权的节点列表中

以下示例说明了如何将一个名为 phys-schost-3 的节点添加到现有群集的授权节点列表中。


[Become superuser and execute the clsetup utility.]
phys-schost# clsetup
[Select New nodes>Specify the name of a machine which may add itself.]
[Answer the questions when prompted.]
[Verify that the scconf command completed successfully.]
 
claccess allow -h phys-schost-3
 
    Command completed successfully.
[Select Prevent any new machines from being added to the cluster.]
[Quit the clsetup New Nodes Menu and Main Menu.]
[Install the cluster software.]

另请参见

clsetup(1CL)

有关添加群集节点的完整任务列表,请参见表 8–1,“任务图:添加群集节点”。

要向现有资源组添加节点,请参见《Sun Cluster Data Services Planning and Administration Guide for Solaris OS》

在全局群集中创建非投票节点(区域)

本节介绍如何在全局群集节点上创建非投票节点(简称区域)。

Procedure如何在全局群集中创建非投票节点

  1. 在要创建非投票节点的全局群集节点上成为超级用户。

    您必须在全局区域中工作。

  2. 对于 Solaris 10 OS,请在每个节点上检验服务管理工具 (Service Management Facility, SMF) 的多用户服务是否联机。

    如果某个节点上的服务尚未处于联机状态,请等待直到状态变为联机后,再继续执行下一步。


    phys-schost# svcs multi-user-server node
    STATE          STIME    FMRI
    online         17:52:55 svc:/milestone/multi-user-server:default
  3. 配置、安装和引导新区域。


    注 –

    您必须将 autoboot 属性设置为 true,以便在全局群集中的非投票节点中支持资源组功能。


    请按照 Solaris 文档中的过程操作:

    1. 执行《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的第 18  章 “规划和配置非全局区域(任务)”中所述的过程。

    2. 执行《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的“安装和引导区域”中所述的过程。

    3. 执行《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的“如何引导区域”中所述的过程。

  4. 检验区域是否处于 ready 状态。


    phys-schost# zoneadm list -v
    ID  NAME     STATUS       PATH
     0  global   running      /
     1  my-zone  ready        /zone-path
    
  5. 对于 ip-type 属性设置为 exclusive 的完全根区域:如果该区域可能托管逻辑主机名资源,应配置从全局区域挂载方法目录的文件系统资源。


    phys-schost# zonecfg -z sczone
    zonecfg:sczone> add fs
    zonecfg:sczone:fs> set dir=/usr/cluster/lib/rgm
    zonecfg:sczone:fs> set special=/usr/cluster/lib/rgm
    zonecfg:sczone:fs> set type=lofs
    zonecfg:sczone:fs> end
    zonecfg:sczone> exit
    
  6. (可选的)对于共享 IP 区域,请为该区域指定一个专用 IP 地址和一个专用主机名。

    以下命令从群集的专用 IP 地址范围中选择一个可用 IP 地址并进行指定。此外,该命令还将一个指定的专用主机名(或主机别名)分配给区域,并将其映射到已分配的专用 IP 地址。


    phys-schost# clnode set -p zprivatehostname=hostalias node:zone
    
    -p

    指定一个属性。

    zprivatehostname=hostalias

    指定区域专用主机名(或主机别名)。

    node

    节点名称。

    zone

    全局群集非投票节点的名称。

  7. 执行初始的内部区域配置。

    请按照《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的“执行初始内部区域配置”中的过程操作。从以下方法中任选其一:

    • 登录到区域。

    • 使用 /etc/sysidcfg 文件。

  8. 在非投票节点中,修改 nsswitch.conf 文件。

    通过进行这些更改,可以使区域能够解析对群集特定主机名和 IP 地址的搜索。

    1. 登录到区域。


      phys-schost# zlogin -c zonename
      
    2. 打开 /etc/nsswitch.conf 文件以进行编辑。


      sczone# vi /etc/nsswitch.conf
      
    3. hostsnetmasks 条目的查找语句的开头添加 cluster 开关,后面跟 files 开关。

      修改后的条目应显示如下:


      …
      hosts:      cluster files nis [NOTFOUND=return]
      …
      netmasks:   cluster files nis [NOTFOUND=return]
      …
    4. 对于所有其他条目,确保 files 开关是该条目中列出的第一个开关。

    5. 退出区域。

  9. 如果您创建了一个独占 IP 区域,请在该区域中的每个 /etc/hostname.interface 文件中配置 IPMP 组。

    对于区域中的数据服务通信所使用的每个公共网络适配器,都必须配置一个 IPMP 组。此信息不是从全局区域继承的。有关在群集中配置 IPMP 组的更多信息,请参见《Sun Cluster 软件安装指南(适用于 Solaris OS)》中的“公共网络”

  10. 为该区域使用的所有逻辑主机名资源设置名称-地址映射。

    1. 向该区域上的 /etc/inet/hosts 文件中添加名称-地址映射。

      此信息不是从全局区域继承的。

    2. 如果使用名称服务器,应添加名称-地址映射。

从群集中删除节点

本节提供有关如何在全局群集或区域群集中删除节点的说明。您还可以从全局群集中删除特定的区域群集。下表列出了从现有群集中删除节点时所要执行的任务。请按照显示的顺序执行这些任务。


注意 – 注意 –

对于 RAC 配置,如果仅使用此过程删除某个节点,则该删除操作可能会导致该节点在重新引导期间出现紧急情况。有关如何从 RAC 配置中删除节点的说明,请参见《Sun Cluster Data Service for Oracle RAC Guide for Solaris OS》中的“How to Remove Sun Cluster Support for Oracle RAC From Selected Nodes”。完成该过程后,请执行下面相应的步骤。


表 8–2 任务图:删除节点

任务 

指导 

将所有资源组和设备组移出要删除的节点 

clnode evacuate node

通过检查允许的主机检验该节点是否可以删除 

如果该节点无法删除,请给予该节点访问群集配置的权限 

claccess show node

claccess allow -h node-to-remove

从所有设备组中删除该节点 

如何将节点从设备组中删除 (Solaris Volume Manager)

 

删除与要删除的节点连接的所有法定设备 

如果您要从双节点群集中删除节点,则此步骤是可选的。

如何删除法定设备

注意,尽管在下一步中删除存储设备之前,您必须先删除定额设备,但是可以在之后立即重新添加该定额设备。 

如何从集群中删除最后一个法定设备

将要删除的节点置于非群集模式 

如何使节点进入维护状态

从区域群集中删除节点 

如何从区域群集中删除节点

从群集软件配置中删除节点 

如何从群集软件配置中删除节点

(可选)从群集节点卸载 Sun Cluster 软件 

如何从群集节点中卸载 Sun Cluster 软件

删除整个区域群集 

如何删除区域群集

Procedure如何从区域群集中删除节点

通过停止节点、卸载节点并从配置中删除节点,可从区域群集中删除节点。如果以后您决定将该节点添加回区域群集中,请按照表 8–1 中的说明操作。下面的大部分步骤都是从该全局群集节点中执行的。

  1. 成为全局群集中某个节点上的超级用户。

  2. 通过指定要删除的区域群集节点及其区域群集来关闭该节点。


    phys-schost# clzonecluster halt -n node zoneclustername
    

    还可以在区域群集内使用 clnode evacuateshutdown 命令。

  3. 卸载区域群集节点。


    phys-schost# clzonecluster uninstall -n node zoneclustername
    
  4. 从配置中删除该区域群集节点。

    使用以下命令:


    phys-schost# clzonecluster configure zoneclustername
    

    clzc:sczone> remove node physical-host=zoneclusternodename
    
  5. 检验该节点是否已从区域群集中删除。


    phys-schost# clzonecluster status
    

Procedure如何从群集软件配置中删除节点

执行此过程可从全局群集中删除节点。

phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 继续执行此过程之前,请确保已将节点从所有资源组、设备组和法定设备配置中删除,并将该节点置于维护状态。

  2. 在要删除的节点上,成为超级用户或使用一个可提供 solaris.cluster.modify RBAC 授权的角色。从全局群集中的某个节点执行此过程中的所有步骤。

  3. 将您要删除的全局群集节点引导到非群集模式下。对于区域群集节点,在执行此步骤之前,请按照如何从区域群集中删除节点中的说明操作。

    • 在基于 SPARC 的系统上,运行以下命令。


      ok boot -x
      
    • 在基于 x86 的系统上,运行以下命令。


      shutdown -g -y -i0
      
      Press any key to continue
    1. 在 GRUB 菜单中,使用方向键选择适当的 Solaris 条目,然后键入 e 编辑其命令。

      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 的系统(任务图)”

    2. 在引导参数屏幕中,使用方向键选择内核条目,然后键入 e 编辑该条目。

      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.
    3. 在命令中添加 -x 以指定将系统引导至非群集模式。


      [ 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
    4. 按 Enter 键接受所做更改,并返回到引导参数屏幕。

      屏幕将显示编辑后的命令。


      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.-
    5. 键入 b 将节点引导至非群集模式。

      对内核引导参数命令所做的这一更改在系统引导后将失效。下次重新引导节点时,系统将引导至群集模式。如果希望引导至非群集模式,请重新执行上述步骤,并将 --x 选项添加到内核引导参数命令中。


      注 –

      如果要删除的节点不可用或者不再能够被引导,请在任何活动的群集节点上运行以下命令:clnode clear -F <node-to-be-removed>。通过运行 clnode status <nodename> 检验该节点是否已删除。


  4. 在要删除的节点上,从群集中删除该节点。


    phys-schost# clnode remove -F
    

    如果 clnode remove 命令失败,并且存在过时的节点引用,请在活动节点上运行 clnode clear -F nodename


    注 –

    如果您要删除群集中的最后一个节点,则该节点必须处于非群集模式下并且该群集中未剩下任何活动节点。


  5. 通过另一个群集节点检验是否已删除该节点。


    phys-schost# clnode status nodename
    
  6. 完成节点删除操作。


示例 8–2 从群集软件配置中删除节点

此示例说明了如何从群集中删除节点 phys-schost-2。应当在您要从群集中删除的节点 (phys-schost-2) 上以非群集模式运行 clnode remove 命令。


[Remove the node from the cluster:]
phys-schost-2# clnode remove
phys-schost-1# clnode clear -F phys-schost-2
[Verify node removal:]
phys-schost-1# clnode status
-- Cluster Nodes --
                    Node name           Status
                    ---------           ------
  Cluster node:     phys-schost-1       Online

另请参见

要从已删除的节点中卸载 Sun Cluster 软件,请参见如何从群集节点中卸载 Sun Cluster 软件

有关硬件操作过程,请参见《Sun Cluster 3.1 - 3.2 Hardware Administration Manual for Solaris OS》

有关删除群集节点的完整任务列表,请参见表 8–2

要向现有的群集添加节点,请参见如何向授权节点列表添加节点

Procedure如何从全局群集中删除非投票节点(区域)

  1. 在创建非投票节点的全局群集节点上成为超级用户。

  2. 从系统中删除非投票节点。

    请按照《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的“从系统中删除非全局区域”中的过程操作。

Procedure如何在节点连接多于两个的群集中删除阵列与单个节点之间的连接

使用此过程可在具有三节点或四节点连通性的群集中从单个群集节点分离存储阵列。

phys-schost# 提示符表示全局群集提示符。此操作过程适用于全局群集。

此过程提供了 Sun Cluster 命令的长格式。此外,大多数命令还有简短格式。这些命令除了名称长短的不同以外,其功能都是相同的。有关命令及其简短格式的列表,请参见附录 B

  1. 备份与要删除的存储阵列相关联的所有数据库表、数据服务和卷。

  2. 确定要断开连接的节点上正在运行的资源组和设备组。


    phys-schost# clresourcegroup status
    phys-schost# cldevicegroup status
    
  3. 如果需要,将所有资源组和设备组移出要断开连接的节点。


    Caution (SPARC only) – Caution (SPARC only) –

    如果群集正在运行 Oracle RAC 软件,请先关闭在节点上运行的 Oracle RAC 数据库实例,然后再将组从节点移出。有关说明,请参见《Oracle Database Administration Guide》。



    phys-schost# clnode evacuate node
    

    clnode evacuate 命令可将指定节点上的所有设备组切换到下一个首选节点。该命令还将指定节点上的投票或非投票节点中的所有资源组切换到下一个首选的投票或非投票节点。

  4. 使设备组处于维护状态。

    有关默许 Veritas 共享磁盘组具有 I/O 活动的过程,请参见 VxVM 文档。

    有关将设备组置于维护状态的过程,请参见如何使节点进入维护状态

  5. 从设备组中删除节点。

    • 如果使用 VxVM 或原始磁盘,请使用 cldevicegroup(1CL) 命令删除设备组。

    • 如果使用 Solstice DiskSuite,应使用 metaset 命令删除设备组。

  6. 对于每一个包含 HAStoragePlus 资源的资源组,请从该资源组的节点列表中删除该节点。


    phys-schost# clresourcegroup remove-node -z zone -n node + | resourcegroup
    
    node

    节点名称。

    zone

    可控制资源组的非投票节点的名称。只有在创建资源组时指定了非投票节点的情况下,才能指定 zone

    有关更改资源组的节点列表的更多信息,请参见《Sun Cluster Data Services Planning and Administration Guide for Solaris OS》


    注 –

    执行 clresourcegroup 命令时,资源类型、资源组和资源属性的名称均区分大小写。


  7. 如果要删除的存储阵列是节点上连接的最后一个存储阵列,应断开节点与该存储阵列连接的集线器或交换机之间的光缆(否则,应跳过此步骤)。

  8. 如果要从正在断开连接的节点上移除主机适配器,请关闭该节点的电源。如果要从将断开连接的节点上拆除主机适配器,请跳到步骤 11

  9. 从节点上拆下主机适配器。

    有关移除主机适配器的操作过程,请参见节点的相关文档。

  10. 打开节点的电源,但不引导该节点。

  11. 如果安装了 Oracle RAC 软件,请将 Oracle RAC 软件包从要断开连接的节点中删除。


    phys-schost# pkgrm SUNWscucm 
    

    Caution (SPARC only) – Caution (SPARC only) –

    如果不从已断开连接的节点上删除 Oracle RAC 软件,当该节点重新加入群集时,将出现紧急情况并可能导致失去数据可用性。


  12. 以群集模式引导节点。

    • 在基于 SPARC 的系统上,运行以下命令。


      ok boot
      
    • 在基于 x86 的系统上,运行以下命令。

      显示 GRUB 菜单后,选择相应的 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.
  13. 在节点上,通过更新 /devices/dev 条目来更新设备名称空间。


    phys-schost# devfsadm -C 
     cldevice refresh
    
  14. 使设备组重新联机。

    有关将 Veritas 共享磁盘组置于联机状态的过程,请参见 Veritas Volume Manager 的文档。

    有关将设备组置于联机状态的信息,请参见如何使节点脱离维护状态

Procedure如何纠正错误消息

要纠正尝试执行任何群集节点的删除过程时所产生的错误消息,请执行以下过程。

  1. 尝试将该节点重新加入全局群集。此操作过程仅适用于全局群集。


    phys-schost# boot
    
  2. 该节点是否成功加入群集?

    • 如果不是,则继续执行步骤 b

    • 如果是,请执行以下步骤从设备组中删除该节点。

    1. 如果该节点重新加入群集成功,请从其余的设备组中删除该节点。

      请按照如何将节点从所有设备组中删除中的过程操作。

    2. 从所有设备组中删除该节点后,请返回到如何从群集节点中卸载 Sun Cluster 软件,并重复执行其中的过程。

  3. 如果该节点未能重新加入群集,请将该节点的 /etc/cluster/ccr 文件重命名为您所选的任何其他名称,例如 ccr.old


    # mv /etc/cluster/ccr /etc/cluster/ccr.old
    
  4. 返回到如何从群集节点中卸载 Sun Cluster 软件,并重复执行其中的过程。