基于 SUSE® Linux Enterprise High Availability Extension 的 Geo 群集可视为“覆盖”群集,其中每个群集站点对应传统群集中的一个群集节点。覆盖群集由投票间群集票据管理器(以下简称“投票间”)管理。Geo 群集中的各方都会运行一个服务,即 boothd
。它连接到其余站点上运行的投票间守护程序,并交换连接性细节。投票间依靠称为“票据”的群集对象来确保群集资源在各站点之间的高度可用性。票据授予在特定群集站点上运行某些资源的权限。投票间可保证每个票据一次只会授予给一个站点。
如果两个投票间实例之间的通讯断开,则可能是因为群集站点之间的网络发生故障或其中一个群集站点中断。在此情况下,您需要使用一个额外的实例(第三个群集站点或仲裁方
)来就各决策(例如在站点间进行资源的故障转移)达成一致意见。仲裁方是一台以特殊模式运行投票间实例的计算机(不属于群集)。每个 Geo 群集都可以有一个或多个仲裁方。
有关用于 Geo 群集的概念、组件和票据管理的更多细节,请参见Chapter 2, Conceptual Overview。
下面,我们将会设置一个包含两个群集站点和一个仲裁方的基本 Geo 群集:
我们假设群集站点名为 amsterdam
和 berlin
。
我们假设每个站点分别包含两个节点。节点 alice
和 bob
属于群集 amsterdam
。节点 charlie
和 doro
属于群集 berlin
。
站点 amsterdam
将分配到以下虚拟 IP 地址:192.168.201.100
。
站点 berlin
将分配到以下虚拟 IP 地址:192.168.202.100
。
我们假设仲裁方的 IP 地址为 192.168.203.100
。
继续操作前,请确保已满足以下要求:
您至少拥有两个要合并到 Geo 群集中的现有群集(如果需要先设置两个群集,请按照安装和设置快速入门中的指导操作。)
每个群集都有一个有意义的名称,该名称可反映其位置,定义于 /etc/corosync/corosync.conf
中。
您已安装不属于任何现有群集且将用作仲裁方的第三台计算机。
有关各项的详细要求,另请参见第 3 节 “要求”。
要加入 Geo 群集的所有计算机(群集节点和仲裁方)上都已安装以下软件:
SUSE® Linux Enterprise Server 12 SP5
SUSE Linux Enterprise High Availability Extension 12 SP5
Geo Clustering for SUSE Linux Enterprise High Availability Extension 12 SP5
要用于每个群集站点的虚拟 IP 在 Geo 群集中必须可访问。
必须可以通过每个投票间实例上的一个 UDP 和 TCP 端口访问站点。这意味着,必须相应地配置通讯双方之间的所有防火墙和 IPsec 隧道。
可能需要做出其他有关打开更多端口的设置决策(例如,为 DRBD 或数据库复制打开端口)。
所有站点上的所有群集节点应同步到群集外部的 NTP 服务器。有关详细信息,请参见 https://documentation.suse.com/sles-12/html/SLES-all/cha-netz-xntp.html。
如果节点未同步,将难以分析日志文件和群集报告。
在 Geo 群集中使用奇数数量的成员。这样可确保在网络连接断开时仍存有大部分站点(从而避免出现节点分裂情形)。如果群集站点的数量为偶数,请使用一个仲裁方。
每个站点上的群集都有一个有意义的名称,例如 amsterdam
和 berlin
。
已在相应的 /etc/corosync/corosync.conf
文件中定义每个站点的群集名称。
totem { [...] cluster_name: amsterdam }
您可以手动完成此操作(即编辑 /etc/corosync/corosync.conf
),也可以通过 YaST 群集模块进行(即切换到 类别,然后定义 )。随后,请停止 pacemaker
服务然后再将其启动,以使更改生效:
root #
systemctl
stop pacemakerroot #
systemctl
start pacemaker
使用 ha-cluster-geo-init
可将一个群集变为 Geo 群集的第一个站点。该脚本会获取某些参数(例如群集的名称、仲裁方,以及一个或多个票据)并基于它们创建 /etc/booth/booth.conf
。它会将投票间配置复制到当前群集站点上的所有节点。它还会为当前群集站点上的投票间配置所需的群集资源。
有关细节,请参见第 6 节 “设置 Geo 群集的第一个站点”。
使用 ha-cluster-geo-join
可将当前群集添加到现有的 Geo 群集中。该脚本会从现有群集站点复制投票间配置,并将其写入到当前群集站点上所有节点的 /etc/booth/booth.conf
中。它还会为当前群集站点上的投票间配置所需的群集资源。
有关细节,请参见第 7 节 “向 Geo 群集添加另一个站点”。
使用 ha-cluster-geo-init-arbitrator
可将当前计算机变为 Geo 群集的仲裁方。该脚本会从现有群集站点复制投票间配置,并将其写入 /etc/booth/booth.conf
。
有关细节,请参见第 8 节 “添加仲裁方”。
所有引导脚本都会记录到 /var/log/ha-cluster-bootstrap.log
中。如需引导过程的任何细节,请查看日志文件。在引导过程中设置的任何选项都可在稍后加以修改(通过修改投票间设置、修改资源等)。有关详细信息,请参见Geo Clustering Guide。
安装单独的扩展 Geo Clustering for SUSE Linux Enterprise High Availability Extension,即可不受距离限制使用高可用性群集。
要设置 Geo 群集,您需要包含在以下安装模式中的包:
High Availability
Geo Clustering for High Availability
仅当您已在 SUSE Customer Center(或本地注册服务器)中注册了系统,并且已添加相应的产品通道或安装媒体作为扩展时,这两个模式才可用。有关如何安装扩展的信息,请参见《SUSE Linux Enterprise 12 SP5 部署指南》:https://documentation.suse.com/sles-12/html/SLES-all/cha-add-ons.html。
要通过命令行从这两个模式安装包,请使用 Zypper:
root #
zypper
install -t pattern ha_sles ha_geo
或者,使用 YaST 在图形界面中安装:
以 root
用户身份启动 YaST 并选择 › 。
单击
› ,然后激活以下模式:
High Availability
Geo Clustering for High Availability
单击
开始安装包。高可用性和 Geo 群集所需的软件包不会自动复制到群集节点。
请在要加入地域群集的所有计算机上安装 SUSE Linux Enterprise Server 12 SP5
以及 High Availability
和 Geo Clustering for High Availability 模式。
您不必在要加入群集的所有计算机上手动安装这些包,而应使用 AutoYaST 克隆现有节点。有关详细信息,请参见第 3.2 节 “使用 AutoYaST 进行批量安装和部署”。
不过,必须手动将 Geo 群集扩展安装到要加入 Geo 群集的所有计算机上。目前尚不支持使用 AutoYaST 安装 Geo Clustering for SUSE Linux Enterprise High Availability Extension。
使用 ha-cluster-geo-init
脚本可将现有群集变为 Geo 群集的第一个站点。
ha-cluster-geo-init
设置第一个站点 (amsterdam
) #
为每个群集站点定义一个虚拟 IP,以便访问该站点。在此,我们假设使用 192.168.201.100
和 192.168.202.100
。您并不需要将虚拟 IP 配置为群集资源。此工作将由引导脚本完成。
至少定义一个票据的名称,该票据用于授予在群集站点上运行特定资源的权限。使用一个有意义的名称来反映将依赖于该票据的资源,例如 ticket-nfs
。引导脚本只需要票据名称,您可以稍后再按第 10 节 “后续步骤”中所述定义其余的细节(资源的票据依赖项)。
登录现有群集的节点(例如,群集 amsterdam
的节点 alice
)。
运行 ha-cluster-geo-init
。例如,使用以下选项:
root #
ha-cluster-geo-init
\ --clusters1 "amsterdam=192.168.201.100 berlin=192.168.202.100" \ --tickets2 ticket-nfs \ --arbitrator3 192.168.203.100
该引导脚本会创建投票间配置文件,并在群集站点间同步该文件。它还会创建投票间所需的的基本群集资源。执行过程 2 的步骤 4 将创建以下投票间配置和群集资源:
ha-cluster-geo-init
创建的投票间配置 ## The booth configuration file is "/etc/booth/booth.conf". You need to # prepare the same booth configuration file on each arbitrator and # each node in the cluster sites where the booth daemon can be launched. # "transport" means which transport layer booth daemon will use. # Currently only "UDP" is supported. transport="UDP" port="9929" arbitrator="192.168.203.100" site="192.168.201.100" site="192.168.202.100" authfile="/etc/booth/authkey" ticket="ticket-nfs" expire="600"
ha-cluster-geo-init
创建的群集资源 #primitive1 booth-ip IPaddr2 \ params rule #cluster-name eq amsterdam ip=192.168.201.100 \ params rule #cluster-name eq berlin ip=192.168.202.100 \ primitive2 booth-site ocf:pacemaker:booth-site \ meta resource-stickiness=INFINITY \ params config=booth \ op monitor interval=10s group3 g-booth booth-ip booth-site \ meta target-role=Stopped4
每个群集站点的虚拟 IP 地址。必须为投票间守护程序提供该虚拟 IP 地址,因为其需要每个群集站点上都有永久的 IP 地址。 | |
投票间守护程序的原始资源。它会与其余群集站点上的投票间守护程序通讯。在站点的任何节点上均可启动该守护程序,但若要使资源位于同一个节点上(如果可行),则需将资源粘性设置为 | |
两个原始资源的群集资源组。通过这种配置,每个投票间守护程序都将在各自的 IP 地址处可用,独立于运行守护程序的节点。 | |
该群集资源组默认不会启动。校验群集资源的配置(并添加完成设置所需的资源)后,您需要启动该资源组。有关详细信息,请参见完成 Geo 群集设置所需的步骤。 |
初始化 Geo 群集的第一个站点后,请按过程 3 中所述使用 ha-cluster-geo-join
添加第二个群集。该脚本需要通过 SSH 访问已配置的群集站点,并且会将当前的群集添加到 Geo 群集。
ha-cluster-geo-join
添加第二个站点 (berlin
) #
登录要添加的群集站点的某个节点(例如,群集 berlin
的节点 charlie
)。
运行 ha-cluster-geo-join
命令。例如:
root #
ha-cluster-geo-join
\ --cluster-node1 192.168.201.100\ --clusters2 "amsterdam=192.168.201.100 berlin=192.168.202.100"
ha-cluster-geo-join
脚本会从 1 复制投票间配置,请参见例 1。此外,它还会创建投票间所需的群集资源(请参见例 2)。
使用 ha-cluster-geo-init
和 ha-cluster-geo-join
设置 Geo 群集的所有站点后,请使用 ha-cluster-geo-init-arbitrator
设置仲裁方。
ha-cluster-geo-init-arbitrator
设置仲裁方 #登录要用作仲裁方的计算机。
运行以下命令。例如:
root #
ha-cluster-geo-init-arbitrator
--cluster-node1 192.168.201.100
指定要从何处复制投票间配置。请使用已配置的 Geo 群集站点中某节点的 IP 地址或主机名。或者,使用现有群集站点的虚拟 IP 地址(如本示例中所示)。 |
ha-cluster-geo-init-arbitrator
脚本会从 1 复制投票间配置,如例 1 所示。它还会在仲裁方上启用并启动投票间服务。因此,一旦群集站点上也在运行投票间服务,仲裁方便会立即与这些群集站点上的投票间实例通讯。
要查看您已在引导过程中创建的群集站点及资源与票据,请使用 Hawk2。通过 Hawk2 Web 界面,您可以监视和管理多个(不相关的)群集和 Geo 群集。
要通过 Hawk5 的SUSE Linux Enterprise High Availability Extension 12 SP2。
监视的所有群集必须运行如果您之前未在每个群集节点上用自己的证书(或官方证书颁发机构签名的证书)替换 Hawk2 的自我签名证书,请执行以下操作:在每个群集的每个节点上至少登录 Hawk2 一次。验证证书(或在浏览器中添加例外以绕过警告)。否则,Hawk2 将无法连接到群集。
启动 Web 浏览器并输入第一个群集站点 amsterdam
的虚拟 IP。
https://192.168.201.100:7630/
或者,使用 alice
或 bob
的 IP 地址或主机名。如果您已使用引导脚本设置两个节点,则 hawk
服务在这两个节点上应当都会运行。
登录到 Hawk2 Web 界面。
在左侧导航栏中,选择
。Hawk2 会显示当前群集站点的资源和节点的概述。此外,它还会显示已为 Geo 群集配置的所有
。如需有关此视图中所用图标的信息,请单击 。amsterdam
) 的 Hawk2 仪表板 #要添加第二个群集站点的仪表板,请单击
。
输入用于在berlin
。
输入其中一个群集节点(在本例中为 charlie
或 doro
)的完全限定的主机名。
单击
。Hawk2 会为新添加的群集站点显示另一个选项卡,其中会列出该群集站点的节点和资源的概述。要查看群集站点的更多细节或管理群集站点,请切换到站点的选项卡并单击锁链图标。
Hawk2 会在新的浏览器窗口或选项卡中打开此站点的
视图。在此视图中,您可以管理 Geo 群集的这部分内容。使用 Geo 群集引导脚本,您可以快速地设置可用于测试用途的基本 Geo 群集。不过,要将创建的 Geo 群集迁移到正常工作的可用于生产环境的 Geo 群集,则需执行更多步骤(请参见完成 Geo 群集设置所需的步骤)。
引导过程完成后,仲裁方投票间服务还不能与群集站点上的投票间服务通讯,因为这些服务默认不会启动。
每个群集站点的投票间服务都由投票间资源组 g-booth
管理(请参见例 2 “ha-cluster-geo-init
创建的群集资源”)。要为每个站点启动一个投票间服务实例,请在每个群集站点上启动相应的投票间资源组。这样可让所有投票间实例互相通讯。
要使资源依赖您已在 Geo 群集引导过程中创建的票据,请配置约束。请为每个约束设置 loss-policy
,它用于定义当从群集站点撤消票据时相应资源应发生的情况。
有关细节,请参见Chapter 6, Configuring Cluster Resources and Constraints。
在投票间可以管理 Geo 群集中的特定票据前,您首先需要手动将该票据授予给站点。您可以使用投票间客户端命令行工具或 Hawk2 授予票据。
有关细节,请参见Chapter 8, Managing Geo Clusters。
引导脚本会在两个群集站点上创建相同的投票间资源,并在所有站点(包括仲裁方)上创建相同的投票间配置文件。如果您扩展 Geo 群集设置(以便迁移到生产环境),可能需要调整投票间配置并更改与投票间有关的群集资源的配置。之后,您需要将更改同步到 Geo 群集的其余站点才能使其生效。
要将投票间配置中的更改同步到所有群集站点(包括仲裁方),请使用 Csync2。有关详细信息,请参见Chapter 5, Synchronizing Configuration Files Across All Sites and Arbitrators。
CIB(群集信息数据库)不会跨 Geo 群集的群集站点自动同步。这意味着需要将所有群集站点上必需的资源配置中的所有更改手动传输到其余站点。要执行此操作,请标记相应资源,从当前 CIB 导出这些资源并将其导入到其余群集站点上的 CIB。有关细节,请参见Section 6.4, “Transferring the Resource Configuration to Other Cluster Sites”。
https://documentation.suse.com/sle-ha-12/ 上提供了更多有关此产品的文档。其中包括完整的《Geo Clustering Guide
》(Geo 群集指南)。更多配置和管理任务,敬请参考该文档。
“SUSE Best Practices
”(SUSE 最佳实践)系列中发布了详细介绍如何通过 DRBD 跨 Geo 群集进行数据复制的文档:https://documentation.suse.com/sbp/all/html/SBP-DRBD/index.html。
版权所有 © 2006– 2024 SUSE LLC 和贡献者。保留所有权利。
根据 GNU 自由文档许可证 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的许可权限;本版权声明和许可证附带不可变部分。许可证版本 1.2 的副本包含在题为“GNU 自由文档许可证”的部分。
有关 SUSE 商标,请参见 http://www.suse.com/company/legal/。所有其它第三方商标是其各自所有者的财产。商标符号(®、™ 等)代表 SUSE 及其附属公司的商标。星号 (*) 代表第三方商标。
本指南力求涵盖所有详细信息。但这并不确保本指南准确无误。SUSE LLC 及其附属公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。