Skip to main content

为群集配置高可用性复制

可以在单独的数据中心配置整个 GitHub Enterprise Server 群集的副本,这使群集可以故障转移至冗余节点。

关于集群的高可用性复制

可以通过配置 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 实例”。

Note

你打算用于高可用性复制的节点应该是独立的 GitHub Enterprise Server 实例。 不要将被动副本初始化为第二个群集。

网络

您必须为预配的每个新节点分配一个静态 IP 地址,并且必须配置负载均衡器以接受连接,并将其引导到群集前端层中的节点。

主节点和副本节点之间的延迟不得超过 70 毫秒。 我们不建议在两个节点之间配置防火墙。 有关副本群集中节点之间网络连接的详细信息,请参阅“群集网络配置”。

为群集创建高可用性副本

若要为群集创建高可用性副本,使用 ghe-cluster-repl-bootstrap 实用工具,然后完成工具详细给出的跟进任务。

  1. SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。

  2. 若要开始配置高可用性,请运行以下命令。 -p-s 标志是可选的。 如果使用的是标志,请将 PRIMARY-DATACENTER 和 SECONDARY-DATACENTER 替换为主数据中心和辅助数据中心的名称。

    Note

    • 默认情况下,这款实用工具会使用 cluster.conf 中的主数据中心的名称。
    • 如果未定义主数据中心的名称,则实用工具将使用 mona
    • 如果未定义辅助数据中心的名称,则实用工具将使用 hubot
    Shell
    ghe-cluster-repl-bootstrap -p PRIMARY-DATACENTER -s SECONDARY-DATACENTER
    
  3. 运行实用工具后,将会看到包含进一步指令的输出。 若要完成配置,请完成输出中列出的任务。

监控主动与副本群集节点之间的复制

群集中主动节点与副本节点之间的初始复制需要时间。 时间量取决于要复制的数据量和 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 禁用复制

  1. SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。

  2. 若要禁用复制,请运行以下命令:

    Shell
    ghe-cluster-repl-teardown
    
  3. 配置运行完成后,GitHub Enterprise Server 将显示以下消息。

    Finished cluster configuration
    

手动禁用复制

  1. SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。

  2. 在文本编辑器中,打开位于 /data/user/common/cluster.conf 的群集配置文件。 例如,您可以使用 Vim。 在编辑文件之前创建 cluster.conf 文件的备份。

    Shell
    sudo vim /data/user/common/cluster.conf
    
  3. 在顶级 [cluster] 部分中,删除 redis-master-replicamysql-master-replica 键值对。

  4. 删除副本节点的每个部分。 对于副本节点,replica 配置为 enabled

  5. 应用新配置。 此命令可能需要一些时间才能完成,因此我们建议在终端多路复用器(例如 screentmux)中运行该命令。

     ghe-cluster-config-apply
    
  6. 配置运行完成后,GitHub Enterprise Server 将显示以下消息。

    Finished cluster configuration