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 实例”。

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

网络

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

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

为群集创建高可用性副本

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

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

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

    注意:

    • 默认情况下,这款实用工具会使用 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