跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文档 / Geo 群集指南 / 设置 booth 服务
适用范围 SUSE Linux Enterprise High Availability Extension 15 SP2

4 设置 booth 服务

本章介绍 booth 的设置和配置选项、如何将 booth 配置同步到所有站点和仲裁方、如何启用和启动 booth 服务,以及如何在 booth 的服务运行时重新配置 booth。

4.1 Booth 配置和设置选项

默认的 booth 配置为 /etc/booth/booth.conf。此文件必须在 Geo 群集的所有站点(包括仲裁方)上相同。要使 booth 配置在所有站点和仲裁方上同步,请根据第 4.5 节 “将 Booth 配置同步到所有站点和仲裁方”中所述使用 Csync2。

注意
注意:/etc/booth 和文件的所有权

目录 /etc/booth 及其包含的所有文件需属于用户 hacluster 和组 haclient。每当从此目录复制新文件时,请使用 cp 命令的 -p 选项来保留所有权。或者,在创建新文件时,请随后使用 chown hacluster:haclient 文件 设置用户和组。

对于包含多个 Geo 群集的设置,可以共享同一个仲裁方(从 SUSE Linux Enterprise High Availability Extension 12 开始)。通过提供多个 booth 配置文件,可以在同一个仲裁方上启动多个 booth 实例,其中每个 booth 实例在不同的端口上运行。这样,便可以使用一台计算机充当不同 Geo 群集的仲裁方。有关如何为多个 Geo 群集配置 booth 的细节,请参见第 4.4 节 “使用多租户 Booth 设置”

为了防止恶意方中断 booth 服务,可以基于共享密钥配置身份验证来与 booth 通讯。有关细节,请参见例 4.1 “Booth 配置文件”中的5。与不同 booth 服务器通讯的所有主机都需要此密钥。因此,请确保在 Csync2 配置中包含密钥文件,或者在所有参与方中手动同步此文件。

4.2 自动票据与手动票据

票据授予在特定群集站点上运行某些资源的权限。系统支持以下两种类型的票据:

  • 自动票据由 boothd 守护程序控制。

  • 手动票据仅可由群集管理员管理。

自动票据和手动票据具有以下属性:

  • 自动票据和手动票据可以定义在一起:您可以在同一个 Geo 群集中定义并使用自动票据和手动票据。

  • 手动票据管理仍然是手动进行的:对于手动控制的票据,无法进行自动票据管理。手动票据不需要进行仲裁选择,无法自动故障转移,也没有失效时间。

  • 手动票据不会自动转移:手动授予给某个站点的票据会一直保留在该站点上,直到它们被手动撤消。即使该站点变为脱机状态,该票据也不会转移到其他站点。此行为可确保依赖于某个票据的服务始终保留在特定的站点上,不会转移到其他站点。

  • 用于管理这两种类型的票据的命令是相同的:手动票据与自动票据使用相同的命令来管理(例如 grantrevoke)。

  • 如果只使用手动票据,则不需要仲裁方: 如果在 Geo 群集中只配置手动票据,则不需要仲裁方,因为手动票据管理不需要仲裁决策。

要配置票据,请使用 /etc/booth/booth.conf 配置文件(更多信息请参见第 4.3 节 “使用默认的 Booth 设置”)。

4.3 使用默认的 Booth 设置

如果您是按《Geo Clustering Quick Start》(Geo 群集快速入门)中所述使用 ha-cluster-bootstrap 脚本设置基本 Geo 群集的,那么该脚本已使用最小参数集在所有站点上创建默认的 booth 配置。要扩展或微调最小 booth 配置,请参考例 4.1第 4.4 节 “使用多租户 Booth 设置”中的示例。

要添加或更改 booth 所需的参数,请手动编辑 booth 配置文件,或使用 YaST 的 Geo 群集模块。要访问 YaST 模块,请从命令行使用 yast2 geo-cluster 将它启动(或者启动 YaST,然后选择高可用性 › Geo 群集)。

例 4.1︰ Booth 配置文件
transport = UDP 1
port = 9929 2
arbitrator = 192.168.203.100 3
site =  192.168.201.100 4
site =  192.168.202.100 4
authfile = /etc/booth/authkey 5
ticket = "ticket-nfs" 6
     mode = MANUAL 7
ticket = "ticketA" 6
     expire = 600 8
     timeout = 10 9
     retries = 5 10
     renewal-freq = 30 11
     before-acquire-handler12 = /etc/booth/ticket-A13 db-1 14
     acquire-after = 60 15
ticket = "ticketB" 6
     expire = 600 8
     timeout = 10 9
     retries = 5 10
     renewal-freq = 30 11
     before-acquire-handler12 = /etc/booth/ticket-B13 db-8 14
     acquire-after = 60 15

1

用于站点间通讯的传输协议。仅支持 UDP,但将来可支持其他传输层。因此,目前可以省略此参数。

2

用于在每个站点上 booth 实例之间通讯的端口。如果不使用默认端口 (9929),请选择尚未用于其他服务的端口。确保在节点和仲裁方的防火墙上都打开该端口。booth 客户端使用 TCP 来与 boothd 通讯。Booth 始终会同时绑定到 UDP 和 TCP 端口并予以侦听。

3

用作仲裁方的计算机的 IP 地址。请为 Geo 群集设置中要使用的每个仲裁方添加一个项。

4

用于站点上 boothd 的 IP 地址。请为 Geo 群集设置中要使用的每个站点添加一个项。确保为每个站点插入正确的虚拟 IP 地址 (IPaddr2),否则 booth 机制将不能正确运行。Booth 可以使用 IPv4 和 IPv6 地址。

如果您是使用 ha-cluster-bootstrap 脚本设置 booth 的,那么您在设置期间指定的虚拟 IP 已写入到 booth 配置中(并且也已添加到群集配置中)。要手动设置群集资源,请参见第 6.2 节 “配置 boothd 的资源组”

5

可选的参数。基于共享密钥为客户端和服务器启用 booth 身份验证。此参数指定密钥文件的路径。

密钥要求
  • 密钥可以是二进制数或文本。

    如果是文本,将忽略以下字符:前置和尾随空格、换行符。

  • 密钥长度必须为 8 到 64 个字符。

  • 密钥必须属于用户 hacluster 和组 haclient

  • 密钥必须只能由文件所有者读取。

6

将由 booth 或群集管理员管理的票据。请为每个票据添加一个 ticket 条目。例如,此处指定的票据 ticket-nfs 可用于 NFS 和 DRBD 的故障转移,如 https://documentation.suse.com/sbp/all/html/SBP-DRBD/index.html 中所述。

7

可选的参数。定义票据模式。默认情况下,所有票据均由 booth 管理。要定义由管理员管理的票据(手动票据),请将 mode 参数设为 MANUALmanual

手动票据没有 expirerenewal-freqretries 参数。

8

可选的参数。定义票据的失效时间,以秒为单位。已获得票据的站点将会定期续订票据。如果 booth 在截至所定义的失效时间内没有收到票据续订信息,票据将被撤消并授予其他站点。如果没有指定到期时间,默认情况下,票据将于 600 秒后过期。不应将该参数设置为小于 120 秒的值。ha-cluster-init 脚本设置的默认值为 600

9

可选的参数。定义超时期限,以秒为单位。如果 booth 未在此期限内收到回复,则在该段时间过后,booth 将重发送包。定义的超时应足够长,以便包能够进入其他 booth 成员(所有仲裁方和站点)。

10

可选的参数。定义 booth 在放弃等待其他站点的确认之前需要重试发送包多少次。小于 3 的值无效,会阻止 booth 启动。

11

可选的参数。设置票据续订频率周期。默认情况下,票据续订每隔失效时间的一半发生一次。如果在持续较长的一段时间内网络可靠性往往降低,则建议以更高的频率续订票据。在每次续订之前,应运行 before-acquire-handler

12

可选的参数。支持一个或多个脚本。如果使用多个脚本,则每个脚本可以负责不同的检查,例如群集状态、数据中心连接、环境运行状况传感器和其他检查。将所有脚本储存在目录 /etc/booth.d/票据名称中,并确保它们具有正确的所有权(用户 hacluster 和组 haclient)。将目录名称指派为参数值 before-acquire-handler

此目录中的脚本按字母顺序执行。在 boothd 尝试获取或续订票据之前,将调用所有脚本。要授予或续订票据,所有脚本必须成功。语义与单个脚本的语义相同:如果退出代码不为 0boothd 将放弃票据。

13

产品中包含的 /usr/share/booth/service-runnable 脚本用作示例。要使用该脚本,请将它链接到相应的票据目录:

root # ln -s /usr/share/booth/service-runnable /etc/booth.d/TICKET_NAME

假设 /etc/booth.dTICKET_NAME 目录包含 service-runnable 脚本。这个简单的脚本基于 crm_simulate。它可用于测试是否可以在当前群集站点上运行特定的群集资源。这意味着,它将检查群集运行状况是否足够良好,可以运行该资源(满足所有资源依赖性要求、群集分区具有仲裁、没有脏节点,等等)。例如,如果依赖链中的某个服务在所有可用节点上的失败计数为 INFINITY,则无法在该站点上运行该服务。在这种情况下,声明票据就没有意义。

14

before-acquire-handler(在本例中为 service-runnable 脚本)要测试的资源。需要参照相应票据保护的资源。在本示例中,资源·db-1ticketA 保护,db-8ticketB 保护。DRBD 的资源 (ms_drbd_nfs) 由票据 ticket-nfs 保护。

15

可选的参数。票据丢失后,booth 将额外等待这段时间,然后再获取票据。这样,丢失票据的站点便可以通过停止资源或者屏蔽资源来放弃资源。典型的延迟为 60 秒,但最终延迟取决于受保护的资源和屏蔽配置。默认值为 0

如果您不确定停止资源、降级资源或屏蔽节点的时间有多长(该时间取决于 loss-policy),可以使用此参数来防止资源同时在两个站点上运行。

4.3.1 手动编辑 Booth 配置文件

  1. root 或同等身份登录到群集节点。

  2. 如果 /etc/booth/booth.conf 尚不存在,请将示例 booth 配置文件 /etc/booth/booth.conf.example 复制到 /etc/booth/booth.conf

    root # cp -p /etc/booth/booth.conf.example /etc/booth/booth.conf
  3. 根据例 4.1 “Booth 配置文件”编辑 /etc/booth/booth.conf

  4. 确认更改并保存文件。

  5. 在所有群集节点和仲裁方上,打开在防火墙中为 booth 配置的端口。参见例 4.1 “Booth 配置文件”中的位置 2

4.3.2 使用 YaST 设置 Booth

  1. root 或同等身份登录到群集节点。

  2. 启动 YaST Geo 群集模块。

  3. 选择编辑现有 booth 配置文件,或者单击添加创建新的 booth 配置文件。

    1. 在出现的屏幕中配置以下参数:

      • 配置文件: booth 配置文件的名称。YaST 建议按默认使用 booth。这样,就会将 booth 配置写入 /etc/booth/booth.conf。仅当您需要根据第 4.4 节 “使用多租户 Booth 设置”中所述为不同的 Geo 群集设置多个 booth 实例时,才更改此值。

      • 传输: 用于站点间通讯的传输协议。仅支持 UDP,但将来可支持其他传输层。另请参见例 4.1 “Booth 配置文件”中的位置 1

      • 端口: 用于在每个站点上 booth 实例之间通讯的端口。另请参见例 4.1 “Booth 配置文件”中的位置 2

      • 仲裁方: 用作仲裁方的计算机的 IP 地址。另请参见例 4.1 “Booth 配置文件”中的位置 3

        要指定仲裁方,请单击添加。在打开的对话框中,输入仲裁方的 IP 地址,然后单击确定

      • 站点: 用于站点上 boothd 的 IP 地址。另请参见例 4.1 “Booth 配置文件”中的位置 4

        要指定 Geo 群集的站点,请单击添加。在打开的对话框中,输入一个站点的 IP 地址,然后单击确定

      • 票据: 将由 booth 或群集管理员管理的票据。另请参见例 4.1 “Booth 配置文件”中的位置 6

        要指定票据,请单击添加。在打开的对话框中,输入唯一的票据名称。若要使用相同的参数和值定义多个票据,请创建一个票据模板来为所有票据指定默认参数和值,从而减少配置工作量。为此,请使用 __default__ 作为票据名称。

      • 身份验证: 要为 booth 启用身份验证,请单击身份验证,然后在打开的对话框中,激活启用安全身份验证。如果已有一个密钥,请在身份验证文件中指定路径和文件名。要为新的 Geo 群集生成密钥文件,请单击生成身份验证密钥文件。随后将创建密钥并将其写入身份验证文件中指定的位置。

        此外,可以指定票据的可选参数。有关概述,请参见例 4.1 “Booth 配置文件”中的位置 715

        单击确定确认更改。

      示例票据依赖性
      图 4.1︰ 示例票据依赖性
    2. 单击确定关闭当前 booth 配置屏幕。YaST 将显示定义的 booth 配置文件的名称。

  4. 在关闭 YaST 模块之前,请切换到防火墙配置类别。

  5. 要打开您为 booth 配置的端口,请启用打开防火墙中的端口

    重要
    重要:防火墙设置仅适用于本地计算机

    防火墙设置仅适用于当前计算机。将为 /etc/booth/booth.conf 中指定的所有端口或者其他任何 booth 配置文件打开 UDP/TCP 端口(请参见第 4.4 节 “使用多租户 Booth 设置”)。

    请确保同时在 Geo 群集的其他所有节点和仲裁方上打开相应的端口。可以手动或者通过将以下文件与 Csync2 同步来执行此操作:

    • /usr/lib/firewalld

    • /usr/lib/firewalld/services/booth.xml

  6. 单击完成确认所有设置并关闭 YaST 模块。根据步骤 3.a 中指定的配置文件NAME,配置将写入 /etc/booth/NAME.conf

4.4 使用多租户 Booth 设置

对于包含多个 Geo 群集的设置,可以共享同一个仲裁方(从 SUSE Linux Enterprise High Availability Extension 12 开始)。通过提供多个 booth 配置文件,可以在同一个仲裁方上启动多个 booth 实例,其中每个 booth 实例在不同的端口上运行。这样,便可以使用一台计算机充当不同 Geo 群集的仲裁方。

假设您有两个 Geo 群集,一个位于 EMEA(欧洲、中东和非洲),另一个位于 APAC(亚太区)。

要为这两个 Geo 群集使用同一个仲裁方,请在 /etc/booth 目录中创建两个配置文件:/etc/booth/emea.conf/etc/booth/apac.conf。最起码,这两个配置文件的以下参数必须不同:

  • 用于 booth 实例通讯的端口。

  • 属于使用仲裁方的不同 Geo 群集的站点。

例 4.2︰ /etc/booth/apac.conf
transport = UDP 1
port = 9133 2
arbitrator = 192.168.203.100 3
site = 192.168.2.254 4
site = 192.168.1.112 4
authfile = /etc/booth/authkey-apac 5
ticket ="tkt-db-apac-intern" 6
     timeout = 10 
     retries = 5 
     renewal-freq = 60 
     before-acquire-handler12 = /usr/share/booth/service-runnable13 db-apac-intern 14 
ticket = "tkt-db-apac-cust" 6
     timeout = 10 
     retries = 5 
     renewal-freq = 60 
     before-acquire-handler = /usr/share/booth/service-runnable db-apac-cust
例 4.3︰ /etc/booth/emea.conf
transport = UDP 1
port = 9150 2
arbitrator = 192.168.203.100 3
site = 192.168.201.100 4
site = 192.168.202.100 4
authfile = /etc/booth/authkey-emea 5
ticket = "tkt-sap-crm" 6
     expire = 900 
     renewal-freq = 60 
     before-acquire-handler12 = /usr/share/booth/service-runnable13 sap-crm 14
ticket = "tkt-sap-prod" 6
     expire = 600 
     renewal-freq = 60 
     before-acquire-handler = /usr/share/booth/service-runnable sap-prod

1

用于站点间通讯的传输协议。仅支持 UDP,但将来可支持其他传输层。因此,目前可以省略此参数。

2

用于在每个站点上 booth 实例之间通讯的端口。配置文件使用不同的端口来允许在同一仲裁方上启动多个 booth 实例。

3

用作仲裁方的计算机的 IP 地址。在上述示例中,我们为不同的 Geo 群集使用了同一个仲裁方。

4

用于站点上 boothd 的 IP 地址。两个 booth 配置文件中定义的站点不同,因为这些站点属于两个不同的 Geo 群集。

5

可选的参数。基于共享密钥为客户端和服务器启用 booth 身份验证。此参数指定密钥文件的路径。为不同的租户使用不同的密钥文件。

密钥要求
  • 密钥可以是二进制数或文本。

    如果是文本,将忽略以下字符:前置和尾随空格、换行符。

  • 密钥长度必须为 8 到 64 个字符。

  • 密钥必须属于用户 hacluster 和组 haclient

  • 密钥必须只能由文件所有者读取。

6

将由 booth 或群集管理员管理的票据。理论上讲,可以在不同的 booth 配置文件中定义相同的票据名称 — 票据不会造成干扰,因为它们属于不同 booth 实例管理的不同 Geo 群集。但是,(为了便于讲述),我们建议按上述示例中所示,为每个 Geo 群集使用不同的票据名称。

12

可选的参数。如果设置该参数,则在 boothd 尝试获取或续订票据之前,将调用指定的命令。如果退出代码不为 0boothd 将放弃票据。

13

此处提到的 service-runnable 脚本在产品中用作示例。它是一个基于 crm_simulate 的简单脚本。它可用于测试是否可以在当前群集站点上运行特定的群集资源。这意味着,它将检查群集运行状况是否足够良好,可以运行该资源(满足所有资源依赖性要求、群集分区具有仲裁、没有脏节点,等等)。例如,如果依赖链中的某个服务在所有可用节点上的失败计数为 INFINITY,则无法在该站点上运行该服务。在这种情况下,声明票据就没有意义。

14

before-acquire-handler(在本例中为 service-runnable 脚本)要测试的资源。需要参照相应票据保护的资源。

过程 4.1︰ 为不同的 Geo 群集使用相同的仲裁方
  1. 例 4.2 “/etc/booth/apac.conf例 4.3 “/etc/booth/emea.conf中所述,在 /etc/booth 中创建不同的 booth 配置文件。可以手动执行此操作,或者按第 4.3.2 节 “使用 YaST 设置 Booth”中所述使用 YaST 来创建。

  2. 在仲裁方上,打开 /etc/booth 中任一 booth 配置文件内定义的端口。

  3. 在属于使用仲裁方的单个 Geo 群集的节点上,打开相应 booth 实例所用的端口。

  4. 在使用相同 booth 配置的所有群集节点和仲裁方上,同步相应的 booth 配置文件。有关详细信息,请参见第 4.5 节 “将 Booth 配置同步到所有站点和仲裁方”

  5. 在仲裁方上,按在仲裁方上启动 Booth 服务中所述为多租户设置启动各个 booth 实例。

  6. 在各个 Geo 群集上,按在群集站点上启动 Booth 服务中所述启动 booth 服务。

4.5 将 Booth 配置同步到所有站点和仲裁方

注意
注意:在所有站点和仲裁方上使用相同的 Booth 配置

要使 booth 正常工作,一个 Geo 群集中的所有群集节点和仲裁方必须使用相同的 booth 配置。

可以使用 Csync2 来同步 booth 配置。有关细节,请参见第 5.1 节 “Geo 群集的 Csync2 设置”第 5.2 节 “使用 Csync2 同步更改”

如果任何 booth 配置发生更改,请务必在所有参与方上相应地更新配置文件,并按第 4.7 节 “运行时重配置 Booth”中所述重启动 booth 服务。

4.6 启用和启动 Booth 服务

在群集站点上启动 Booth 服务

每个群集站点的 booth 服务都通过 booth 资源组(如果您是使用 ha-cluster-init 脚本设置 Geo 群集的,则其已自动配置,否则请按第 6.2 节 “配置 boothd 的资源组”中所述手动配置)来管理。要为每个站点启动一个 booth 服务实例,请在每个群集站点上启动相应的 booth 资源组。

在仲裁方上启动 Booth 服务

从 SUSE Linux Enterprise 12 开始,booth 仲裁方由 systemd 管理。单元文件名为 booth@.service@ 表示可以使用一个参数(在本例中为配置文件的名称)运行该服务。

要在仲裁方上启用 booth 服务,请使用以下命令:

root # systemctl enable booth@booth

从命令行启用服务后,只要该服务未被禁用,就可以使用 YaST 服务管理器对它进行管理。如果该服务已禁用,则下一次重启动 systemd 时,它将从 YaST 的服务列表中消失。

用于启动 booth 服务的命令取决于 booth 设置:

  • 如果按第 4.3 节中所述使用默认设置,则表示只配置了 /etc/booth/booth.conf。在这种情况下,请登录到每个仲裁方并使用以下命令:

    root # systemctl start booth@booth
  • 如果按第 4.4 节中所述以多租户模式运行 booth,则已在 /etc/booth 中配置了多个 booth 配置文件。要为单个 booth 实例启动服务,请使用 systemctl start booth@ NAME,其中的 NAME 代表相应配置文件 /etc/booth/NAME.conf 的名称。

    例如,如果创建了 booth 配置文件 /etc/booth/emea.conf/etc/booth/apac.conf,请登录到仲裁方并执行以下命令:

    root # systemctl start booth@emea
    root # systemctl start booth@apac

这将以仲裁方模式启动 booth 服务。它可以与所有其他 booth 守护程序通讯,但和群集站点上运行的 booth 守护程序不同,它不能被授予票据。Booth 仲裁方只参与选择。否则,它们处于休眠状态。

4.7 运行时重配置 Booth

如果在已运行 booth 服务的情况下需要更改 booth 配置,请执行以下操作:

  1. 根据需要调整 booth 配置文件。

  2. 将更新的 booth 配置文件同步到属于 Geo 群集的所有群集节点和仲裁方。有关详细信息,请参见第 5 章 “跨所有站点和仲裁方同步配置文件

  3. 第 4.6 节 “启用和启动 Booth 服务”中所述,在仲裁方和站点上重启动 booth 服务。这不会给已授予站点的票据造成任何影响。