Skip to main content

疏散运行数据服务的群集节点

如果 GitHub Enterprise Server 群集中的某个节点运行存储分布式数据的服务,可在准备通过疏散节点数据来替换节点时确保冗余。

谁可以使用此功能?

GitHub 确定聚类分析的资格,并且必须为实例的许可证启用配置。 聚类分析需要仔细规划和额外的管理开销。 有关详细信息,请参阅“关于集群”。

关于疏散运行数据服务的群集节点

在 GitHub Enterprise Server 的群集配置中,可能需要使单个节点脱机。 例如,可能需要替换节点的虚拟机 (VM)。 如果要替换的节点在存储层中运行,GitHub 建议先疏散节点的数据服务。 疏散可确保剩余节点包含数据的最小预期副本。

有关 GitHub Enterprise Server 的节点和服务层的更多信息,请参阅“关于集群节点”。

警告:

  • 为了避免在更换节点期间丢失数据,GitHub 强烈建议在使节点脱机之前,先疏散节点上适用的数据服务。

  • 为了确保群集上任何数据服务的冗余,数据副本应至少存在于三个节点上。 例如,当四个或更多个节点存储 Git 数据时,在疏散期间,已疏散的存储库数据将从要疏散的节点移动到其他三个节点。 如果只有三个节点存储服务的数据,则疏散一个节点可能会失败,并导致数据复制不完整。

疏散运行数据服务的群集节点

如果计划使某个节点脱机,并且该节点运行以下任一角色,请在使节点脱机之前疏散每个适用的服务。

服务数据
git-server存储库
pages-serverGitHub Pages 的站点生成
storage-server
  • 使用 Git Large File Storage 存储在存储库中的数据
  • 虚拟形象图像
  • Web UI 中批注的文件附件
  • 版本存档
  1. SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。

  2. 若要查找要撤出的节点的 UUID,请运行以下命令。 将 HOSTNAME 替换为节点的主机名。 你将在后续命令中使用 UUID。

    ghe-config cluster.HOSTNAME.uuid
    
  3. 对于节点上的每个适用服务,若要确定初始数据计数,请运行以下命令。 对于每个命令,请将 UUID 替换为上一步中的 UUID。

    • git-server

      • 命令:

        ghe-spokesctl server status git-server-UUID
        
      • 相关输出:NETWORKSGISTS

    • pages-server

      • 命令:

        echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
        
    • storage-server

      • 命令:

        ghe-storage evacuation-status storage-server-UUID
        
      • 相关输出:Remaining item(s)

  4. 若要疏散节点上的适用服务,请运行以下命令。 对于每个命令,请将 UUID 替换为前面步骤中的 UUID。

    • git-server

      • 命令(将 REASON FOR EVACUATION 替换为疏散原因):

        ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
        
    • pages-server

      • 命令:

        ghe-dpages evacuate pages-server-UUID
        
    • storage-server

      1. 通过运行以下命令使节点的服务脱机。

        ghe-storage offline storage-server-UUID
        
      2. 通过运行以下命令来疏散节点。

        ghe-storage evacuate storage-server-UUID
        
  5. 若要在 GitHub Enterprise Server 复制数据时监视服务的疏散,请运行以下命令。 对于每个命令,请将 UUID 替换为前面步骤中的 UUID。

    警告:在疏散完成之前,请勿关闭节点。 当数据计数达到零时,疏散即完成,这意味着所有数据都安全地存储在其他节点上。

    • git-server

      ghe-spokesctl server evac-status git-server-UUID
      
    • pages-server

      echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
      
    • storage-server

      ghe-storage evacuation-status storage-server-UUID
      
  6. 疏散完服务后,关闭节点。