关于疏散运行数据服务的群集节点
在 GitHub Enterprise Server 的群集配置中,可能需要使单个节点脱机。 例如,可能需要替换节点的虚拟机 (VM)。 如果要替换的节点在存储层中运行,GitHub 建议先疏散节点的数据服务。 疏散可确保剩余节点包含数据的最小预期副本。
有关 GitHub Enterprise Server 的节点和服务层的更多信息,请参阅 关于集群节点。
Warning
- 为了避免在更换节点期间丢失数据,GitHub 强烈建议在使节点脱机之前,先疏散节点上适用的数据服务。
- 为了确保群集上任何数据服务的冗余,数据副本应至少存在于三个节点上。 例如,当四个或更多个节点存储 Git 数据时,在疏散期间,已疏散的存储库数据将从要疏散的节点移动到其他三个节点。 如果只有三个节点存储服务的数据,则疏散一个节点可能会失败,并导致数据复制不完整。
疏散运行数据服务的群集节点
如果计划使某个节点脱机,并且该节点运行以下任一角色,请在使节点脱机之前疏散每个适用的服务。
服务 | 数据 |
---|---|
git-server | 存储库 |
pages-server | GitHub Pages 的站点生成 |
storage-server |
|
-
SSH 到集群中的任何节点。 有关详细信息,请参阅“访问管理 shell (SSH)”。
-
若要查找要撤出的节点的 UUID,请运行以下命令。 将 HOSTNAME 替换为节点的主机名。 你将在后续命令中使用 UUID。
ghe-config cluster.HOSTNAME.uuid
-
对于节点上的每个适用服务,若要确定初始数据计数,请运行以下命令。 对于每个命令,请将 UUID 替换为上一步中的 UUID。
-
git-server
:-
命令:
ghe-spokesctl server status git-server-UUID
-
相关输出:
NETWORKS
、GISTS
-
-
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)
-
-
-
若要疏散节点上的适用服务,请运行以下命令。 对于每个命令,请将 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
:-
通过运行以下命令使节点的服务脱机。
ghe-storage offline storage-server-UUID
-
通过运行以下命令来疏散节点。
ghe-storage evacuate storage-server-UUID
-
-
-
若要在 GitHub Enterprise Server 复制数据时监视服务的疏散,请运行以下命令。 对于每个命令,请将 UUID 替换为前面步骤中的 UUID。
Warning
在疏散完成之前,请勿关闭节点。 当数据计数达到零时,疏散即完成,这意味着所有数据都安全地存储在其他节点上。
-
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
-
-
疏散完服务后,关闭节点。