About evacuation of cluster nodes
In a cluster configuration for GitHub Enterprise Server, you can evacuate a node before taking the node offline. Evacuation ensures that the remaining nodes in a service tier contain all of the service's data. For example, when you replace the virtual machine for a node in your cluster, you should first evacuate the node.
For more information about nodes and service tiers for GitHub Enterprise Server, see "About cluster nodes."
Warnings:
-
To avoid data loss, GitHub strongly recommends that you evacuate a node before taking the node offline.
-
If you only have three nodes in your data services cluster, you can't evacuate the nodes because
ghe-spokes
doesn't have another place to make a copy. If you have four or more,ghe-spokes
will move all the repositories off of the evacuated node.
Evacuating a cluster node
If you plan to take a node offline and the node runs a data service role like git-server
, pages-server
, or storage-server
, evacuate each node before taking the node offline.
-
SSH into any node in your cluster. For more information, see "Accessing the administrative shell (SSH)."
-
To find the UUID of the node to evacuate, run the following command. Replace
HOSTNAME
with the node's hostname.$ ghe-config cluster.HOSTNAME.uuid
-
Monitor the node's status while GitHub Enterprise Server copies the data. Don't take the node offline until the copy is complete. To monitor the status of your node, run any of the following commands, replacing
UUID
with the UUID from step 2.-
Git:
$ ghe-spokes evac-status git-server-UUID
-
GitHub Pages:
$ echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
-
Storage:
$ ghe-storage evacuation-status storage-server-UUID
-
-
After the copy is complete, you can evacuate the node by running any of the following commands, replacing
UUID
with the UUID from step 2.-
Git:
$ ghe-spokes server evacuate git-server-UUID \'REASON FOR EVACUATION\'
-
GitHub Pages:
$ ghe-dpages evacuate pages-server-UUID
-
For storage, first take the node offline by running the following command.
$ ghe-storage offline storage-server-UUID
After the storage node is offline, you can evacuate the node by running the following command.
$ ghe-storage evacuate storage-server-UUID
-