关于集群的高可用性复制
可以通过配置 GitHub Enterprise Server 的群集部署来防止数据中心或云区域发生中断,从而实现高可用性。 在高可用性配置中,一组相同的副本节点与活动群集中的节点同步。 如果硬件或软件故障影响具有活动群集的数据中心,您可以手动故障转移到副本节点,继续处理用户请求,以尽可能减少中断的影响。
在高可用性配置中,托管数据服务的节点会定期与副本群集同步。 被动节点在等待状态下运行,不适用于应用程序或处理用户请求。
我们建议配置高可用性,作为 GitHub Enterprise Server 全面群集的一部分。 我们还建议进行定期备份。 有关详细信息,请参阅“在实例上配置备份”。
先决条件
硬件和软件
对于活动群集中的每个现有节点,都需要预配第二个具有相同硬件资源的虚拟机。 例如,如果你的群集有 13 个节点,并且每个节点有 12 个 vCP、96 GB 的 RAM 和 750 GB 的附加存储,则必须预配 13 个新虚拟机,每个虚拟机具有 12 个 vCPU、96 GB 的 RAM 和 750 GB 的附加存储。
在每个新虚拟机上,安装活动群集的节点上运行的相同版本 GitHub Enterprise Server。 您不需要上传许可证或执行任何其他配置。 有关详细信息,请参阅“设置 GitHub Enterprise Server 实例”。
注意: 你打算用于高可用性副本的节点应该是独立的 GitHub Enterprise Server 实例。 不要将被动副本初始化为第二个群集。
网络
您必须为预配的每个新节点分配一个静态 IP 地址,并且必须配置负载均衡器以接受连接,并将其引导到群集前端层中的节点。
主节点和副本节点之间的延迟不得超过 70 毫秒。 我们不建议在两个节点之间配置防火墙。 有关副本群集中节点之间网络连接的详细信息,请参阅“群集网络配置”。
为群集创建高可用性副本
若要为群集创建高可用性副本,使用 ghe-cluster-repl-bootstrap
实用工具,然后完成工具详细给出的跟进任务。
-
SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。
-
若要开始配置高可用性,请运行以下命令。
-p
和-s
标志是可选的。 如果使用的是标志,请将 PRIMARY-DATACENTER 和 SECONDARY-DATACENTER 替换为主数据中心和辅助数据中心的名称。注意:
- 默认情况下,这款实用工具会使用
cluster.conf
中的主数据中心的名称。 - 如果未定义主数据中心的名称,则实用工具将使用
mona
。 - 如果未定义辅助数据中心的名称,则实用工具将使用
hubot
。
Shell ghe-cluster-repl-bootstrap -p PRIMARY-DATACENTER -s SECONDARY-DATACENTER
ghe-cluster-repl-bootstrap -p PRIMARY-DATACENTER -s SECONDARY-DATACENTER
- 默认情况下,这款实用工具会使用
-
运行实用工具后,将会看到包含进一步指令的输出。 若要完成配置,请完成输出中列出的任务。
监控主动与副本群集节点之间的复制
群集中主动节点与副本节点之间的初始复制需要时间。 时间量取决于要复制的数据量和 GitHub Enterprise Server 的活动水平。
您可以通过 GitHub Enterprise Server 系统管理 shell 使用命令行工具监控群集中任何节点的进度。 有关管理 shell 的详细信息,请参阅“访问管理 shell (SSH)”。
若要监视所有服务的复制,请使用以下命令。
ghe-cluster-repl-status
你可以使用 ghe-cluster-status
查看群集的整体运行状况。 有关详细信息,请参阅“命令行实用程序”。
故障转移后重新配置高可用性复制
从群集的产动节点故障转移到群集的副本节点后,可以通过两种方式重新配置高可用性。 选择的方法将取决于故障转移的原因以及原始主动节点的状态。
- 为辅助数据中心中的每个新主动节点预配和配置一组新的副本节点。
- 使用原始主动节点作为新的副本节点。
重新配置高可用性的过程与高可用性的初始配置相同。 有关详细信息,请参阅“为群集创建高可用性副本”。
如果使用原始活动节点,在重新配置高可用性后,需要在节点上取消设置维护模式。 有关详细信息,请参阅“启用和排定维护模式”。
禁用群集的高可用性复制
可以使用 ghe-cluster-repl-teardown
实用工具停止复制到 GitHub Enterprise Server 群集部署的副本节点。 或者,可以手动禁用副本。
使用 ghe-cluster-repl-teardown
禁用复制
-
SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。
-
若要禁用复制,请运行以下命令:
Shell ghe-cluster-repl-teardown
ghe-cluster-repl-teardown
-
配置运行完成后,GitHub Enterprise Server 将显示以下消息。
Finished cluster configuration
手动禁用复制
-
SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。
-
在文本编辑器中,打开位于
/data/user/common/cluster.conf
的群集配置文件。 例如,您可以使用 Vim。 在编辑文件之前创建cluster.conf
文件的备份。Shell sudo vim /data/user/common/cluster.conf
sudo vim /data/user/common/cluster.conf
-
在顶级
[cluster]
部分中,删除redis-master-replica
和mysql-master-replica
键值对。 -
删除副本节点的每个部分。 对于副本节点,
replica
配置为enabled
。 -
应用新配置。 此命令可能需要一些时间才能完成,因此我们建议在终端多路复用器(例如
screen
或tmux
)中运行该命令。ghe-cluster-config-apply
-
配置运行完成后,GitHub Enterprise Server 将显示以下消息。
Finished cluster configuration