6 使用引导脚本 #
SUSE Linux Enterprise High Availability 包含可简化群集安装过程的引导脚本。您可以使用这些脚本在第一个节点上设置群集、向群集添加更多节点、从群集中去除节点,以及调整现有群集中的某些设置。
6.1 crm cluster init
脚本概述 #
crm cluster init
命令会执行定义了群集通讯所需基本参数的引导脚本,以创建可正常运行的单节点群集。该脚本会检查并配置以下组件:
- NTP/Chrony
检查 NTP/Chrony 是否配置为在系统引导时启动。如果未配置成这样,系统会显示一条消息。
- SSH
检测或生成 SSH 密钥,以用于在群集节点之间进行无口令登录。
- Csync2
配置 Csync2,让其在群集中的所有节点上复制配置文件。
- Corosync
配置群集通讯系统。
- SBD/看门狗
检查是否存在看门狗,并询问您是否要将 SBD 配置为节点屏蔽机制。
- 虚拟浮动 IP
询问您是否要配置虚拟 IP 地址,以便使用 Hawk2 进行群集管理。
- 防火墙
在防火墙中打开群集通讯所需的端口。
- 群集名称
为群集定义名称,默认为
hacluster
。对于基本群集来说,这并非强制要求,但在使用 DLM 时必须指定名称。对 Geo 群集而言,使用独特的群集名称也很有用。群集名称通常会反映地理位置,这样您便可更轻松地识别 Geo 群集内的站点。- QDevice/QNetd
询问您是否要配置 QDevice/QNetd 以参与仲裁决定。我们建议对节点数为偶数的群集(特别是双节点群集)使用 QDevice 和 QNetd。
引导脚本设置的选项可能与 Pacemaker 默认设置不同。您可以在 /var/log/crmsh/crmsh.log
中查看引导脚本更改了哪些设置。引导期间设置的任何选项都可在以后使用 YaST 或 crmsh 进行修改。
crm cluster init
脚本会检测系统环境(例如 Microsoft Azure),并根据该环境的配置文件调整特定的群集设置。有关详细信息,请参见 /etc/crm/profiles.yml
文件。
6.2 使用 crm cluster init
设置第一个节点 #
使用 crm cluster init
脚本设置第一个节点只需极少的时间和人工干预。
下面的过程介绍了多种配置方式。我们建议在启动脚本前先查看整个过程。另外,若要配置只使用默认选项的最小设置,请参见安装和设置快速入门。
要使用引导脚本配置 SBD(STONITH 块设备),必须在初始化群集之前在每个节点上设置看门狗。请参见第 17.6 节 “设置看门狗”。
要使用引导脚本配置 QDevice,必须在初始化群集之前在每个节点上设置 QNetd 服务器。请参见第 18.3 节 “设置 QNetd 服务器”。
crm cluster init
设置第一个节点 #以
root
或具有sudo
特权的用户身份登录到第一个群集节点。启动引导脚本:
您可以不带任何选项启动脚本。这样,系统会提示您输入某些设置,并对其他设置使用 crmsh 的默认值。
如果您是以
root
身份登录,则可以不带其他参数运行以下命令:#
crm cluster init
如果您是以没有 SSH 代理转发权限的
sudo
用户身份登录,请使用sudo
运行以下命令:>
sudo crm cluster init
如果您是以启用了 SSH 代理转发功能的
sudo
用户身份登录,则必须保留环境变量SSH_AUTH_SOCK
,并指示脚本使用本地 SSH 密钥,而不要在节点上生成密钥:>
sudo --preserve-env=SSH_AUTH_SOCK crm cluster init --use-ssh-agent
或者,也可以在初始化命令中指定其他选项。您可以在同一命令中包含多个选项。下面列举了一些示例。如需查看更多选项,请运行
crm cluster init --help
。- 群集名称
默认群集名称为
hacluster
。要选择其他名称,请使用--name
(或-n
)选项。例如:#
crm cluster init --name CLUSTERNAME
选择一个有意义的名称,如群集的地理位置。如果日后要创建 Geo 群集,这将特别有用,因为站点的识别会变得简单。
- 多播
单播是用于群集通讯的默认传输类型。要改用多播,请使用选项
--multicast
(或-U
)。例如:#
crm cluster init --multicast
- SBD 磁盘
在后面的步骤中,脚本会询问您是否要设置 SBD,并提示您指定要使用的磁盘。要为群集配置多个 SBD 磁盘,请多次使用选项
--sbd-device
(或-s
)。例如:#
crm cluster init -s /dev/disk/by-id/ID1 -s /dev/disk/by-id/ID2
此选项也很有用,因为稍后脚本提示您输入路径时将不会提供设备 ID,届时您便可以使用制表符补全功能来补全设备 ID。
- 冗余通讯通道
受支持的群集必须有两个通讯通道。首选方法是使用网络设备绑定。如果不能使用绑定,可以在 Corosync 中设置冗余通讯通道(也称为第二环或心跳线)。默认情况下,脚本会提示您输入单个环的网络地址。要配置双环群集,请使用
‑‑interface
(或-i
)选项两次。例如:#
crm cluster init -i eth0 -i eth1
启动脚本后,它会提示您提供以下信息。如果在
init
命令中包含了其他选项,部分步骤可能会略有不同。配置群集通讯层 (Corosync):
输入要绑定的网络地址。默认情况下,脚本会建议使用网络地址
eth0
。也可以输入其他网络地址,例如地址bond0
。接受建议的端口 (
5405
) 或输入其他端口。如果搭配用于配置冗余通讯通道的选项启动脚本,则输入
y
接受第二条心跳线,然后接受建议的网络地址和端口,或输入其他地址和端口。
选择是否要将 SBD 设置为节点屏蔽机制。如果要使用其他屏蔽机制或稍后再设置 SBD,请输入
n
跳过此步骤。如果选择
y
,请选择要使用的 SBD 类型:要使用无磁盘 SBD,请输入
none
。要使用基于磁盘的 SBD,请输入要使用的块设备分区的持久性路径。该路径必须在群集中的所有节点中都保持一致,例如
/dev/disk/by-id/ID
。
选择是否要配置虚拟 IP 地址,以便使用 Hawk2 进行群集管理。然后,您便可以连接到该虚拟 IP 地址,而无需使用 Hawk2 登录单个群集节点。
如果选择
y
,请输入一个未使用的 IP 地址供 Hawk2 使用。选择是否配置 QDevice 和 QNetd。如果不需要使用 QDevice 或尚未设置 QNetd 服务器,请输入
n
跳过此步骤。您可以稍后再设置 QDevice 和 QNetd(如果需要)。如果选择
y
,请提供以下信息:输入 QNetd 服务器的主机名或 IP 地址。群集节点必须能够通过 SSH 访问此服务器,才能完成配置。
对于其余字段,您可以接受默认值,也可以根据需要更改:
接受建议的端口 (
5403
) 或输入其他端口。选择决定如何分配投票的算法。
选择需要决胜值时应使用的方法。
选择是否启用 TLS。
输入启发命令来影响投票的决定方式。要跳过此步骤,请将该字段留空。
该脚本会检查是否存在 NTP/Chrony 配置和硬件看门狗服务。如果需要,它会生成用于进行无口令 SSH 访问及 Csync2 同步的公共和私用 SSH 密钥,并启动相应服务。最后,该脚本会启动群集服务以使群集上线,并启用 Hawk2。要用于 Hawk2 的 URL 将显示在屏幕上。
要登录 Hawk2,请参见第 9.4.2 节 “登录”。
hacluster
的安全口令
crm cluster init
脚本会创建一个默认用户 (hacluster
) 和口令 (linux
)。尽快用安全口令替换默认口令:
#
passwd hacluster
6.3 使用 crm cluster join
添加节点 #
您可以使用 crm cluster join
引导脚本为群集添加更多节点。脚本只需要能够访问一个现有群集节点即可在当前计算机上自动完成基本设置。
有关详细信息,请运行 crm cluster join --help
命令。
如果群集使用 SBD(STONITH 块设备),则必须在运行
crm cluster join
脚本之前在该节点上设置看门狗。请参见第 17.6 节 “设置看门狗”。
crm cluster join
添加节点 #使用用于设置第一个节点的用户登录此节点。
启动引导脚本:
应使用什么方式启动脚本取决于您是如何设置第一个节点的。请查看以下选项,使用与第一个节点的设置相匹配的命令。如果需要,您可以在同一命令中包含多个选项。
如果将第一个节点设置为
root
,且仅为其配置了一个网络接口(或绑定设备),则可以不带其他参数运行以下命令:#
crm cluster join
如果为第一个节点设置了两个网络接口,则必须使用
--interface
(或-i
)选项两次来为该节点指定相同的接口:#
crm cluster join -i eth0 -i eth1
您可选择使用
--cluster-node
(或-c
)指定第一个节点:#
crm cluster join -c [USER]@NODE1
如果将第一个节点设置为
root
,则无需指定用户。如果您是以
sudo
用户身份设置的第一个节点,则必须使用-c
选项指定该用户和节点:>
sudo crm cluster join -c USER@NODE1
如果您是以启用了 SSH 代理转发功能的
sudo
用户身份设置的第一个节点,则还必须指示脚本使用本地 SSH 密钥,而不要在节点上生成密钥:>
sudo --preserve-env=SSH_AUTH_SOCK \ crm cluster join --use-ssh-agent -c USER@NODE1
如果 NTP/Chrony 未配置为在系统引导时启动,一条消息将会显示。脚本还会检查是否存在硬件看门狗设备。如果不存在此类设备,将会向您发出警告。
如果尚未使用
-c
选项指定第一个群集节点,系统将提示您输入其 IP 地址。如果您尚未在群集节点之间配置无口令 SSH 访问方式,系统会提示您输入第一个节点的口令。
登录到指定节点后,脚本会复制 Corosync 配置,配置 SSH 和 Csync2,使当前计算机作为新群集节点上线,并启动 Hawk2 所需的服务。
对每个节点重复上述过程。您可以随时使用 crm status
命令或登录 Hawk2 并导航至 › 来检查群集的状态。
6.4 使用 crm cluster remove
去除节点 #
您可以使用 crm cluster remove
引导脚本从群集中去除节点。
如果不带其他参数运行 crm cluster remove
,系统会提示您输入要去除的节点的 IP 地址或主机名。或者,也可以在运行命令时指定相应节点:
#
crm cluster remove NODE
在指定节点上,这会停止所有群集服务并去除本地群集配置文件。在群集的其余节点上,则会从群集配置中去除指定节点。
在大多数情况下,您必须在另一个节点上运行 crm cluster remove
,而不应在要去除的节点上运行该命令。不过,如果要去除最后一个节点并删除群集,则可以使用选项 --force
(或 -F
):
#
crm cluster remove --force LASTNODE
有关详细信息,请运行 crm cluster remove --help
。