Initializing the cluster
A GitHub Enterprise Server cluster must be set up with a license and initialized using the administrative shell (SSH).
In this article
- Installing GitHub Enterprise Server
- Configuring the first node
- Initializing the cluster
- About the cluster configuration file
Note: GitHub Enterprise Server clustering must be configured with HTTPS.
Installing GitHub Enterprise Server
- On each cluster node, provision and install GitHub Enterprise Server. For more information, see "Setting up a GitHub Enterprise Server instance."
- Using the administrative shell or DHCP, only configure the IP address of each node. Don't configure any other settings.
Configuring the first node
-
Connect to the node that will be designated as the
mysql-master
incluster.conf
. For more information, see “About the cluster configuration file." -
In your web browser, visit
https://<ip address>:8443/setup/
. -
At the prompt, upload your license file and set a management console password. For more information, see "Managing your GitHub Enterprise Server license."
-
In the Management Console, configure and save your desired settings.
-
The instance will restart automatically.
Initializing the cluster
To initialize the cluster, you need a cluster configuration file (cluster.conf
). For more information, see “About the cluster configuration file".
- From the first node that was configured, run
ghe-cluster-config-init
. This will initialize the cluster if there are nodes in the cluster configuration file that are not configured. - Run
ghe-cluster-config-apply
. This will validate thecluster.conf
file, apply the configuration to each node file and bring up the configured services on each node.
To check the status of a running cluster use the ghe-cluster-status
command.
About the cluster configuration file
The cluster configuration file (cluster.conf
) defines the nodes in the cluster, and what services they run.
For more information, see "About cluster nodes."
This example cluster.conf
defines a cluster with five nodes.
- Two nodes (called
ghe-app-node-\*
) run theweb-server
andjob-server
services responsible for responding to client requests. - Three nodes (called
ghe-data-node-\*
) run the services responsible for storage and retrieval of GitHub Enterprise Server data.
The names of the nodes can be any valid hostname you choose. The names are set as the hostname of each node, and will also be added to /etc/hosts
on each node, so that the nodes are locally resolvable to each other.
Specify the first cluster node you configured as the MySQL master via mysql-server
and mysql-master
.
Warning: If you're upgrading a GitHub Enterprise Server cluster to version 2.16 or deploying a new GitHub Enterprise Server cluster running version 2.16, ensure that you include the following key-value pairs in cluster.conf
.
-
This key-value pair in the
[cluster]
section specifies a primary datacenter nameddefault
.primary-datacenter = default
-
These key-value pairs in the section for an individual node add the
consul-server
service and specify thedefault
datacenter. At least three nodes in your cluster must run theconsul-server
service in the primary datacenter. For more information, see "About cluster nodes."consul-server = true consul-datacenter = default
[cluster]
mysql-master = ghe-data-node-1
redis-master = ghe-data-node-1
primary-datacenter = default
[cluster "ghe-app-node-1"]
hostname = ghe-app-node-1
ipv4 = 192.168.0.2
# ipv6 = fd12:3456:789a:1::2
web-server = true
job-server = true
[cluster "ghe-app-node-2"]
hostname = ghe-app-node-2
ipv4 = 192.168.0.3
# ipv6 = fd12:3456:789a:1::3
web-server = true
job-server = true
[cluster "ghe-data-node-1"]
hostname = ghe-data-node-1
ipv4 = 192.168.0.4
# ipv6 = fd12:3456:789a:1::4
consul-server = true
consul-datacenter = default
git-server = true
pages-server = true
mysql-server = true
elasticsearch-server = true
redis-server = true
memcache-server = true
metrics-server = true
storage-server = true
[cluster "ghe-data-node-2"]
hostname = ghe-data-node-2
ipv4 = 192.168.0.5
# ipv6 = fd12:3456:789a:1::5
consul-server = true
consul-datacenter = default
git-server = true
pages-server = true
mysql-server = true
elasticsearch-server = true
redis-server = true
memcache-server = true
metrics-server = true
storage-server = true
[cluster "ghe-data-node-3"]
hostname = ghe-data-node-3
ipv4 = 192.168.0.6
# ipv6 = fd12:3456:789a:1::6
consul-server = true
consul-datacenter = default
git-server = true
pages-server = true
mysql-server = true
elasticsearch-server = true
redis-server = true
memcache-server = true
metrics-server = true
storage-server = true
Create the file /data/user/common/cluster.conf
on the configured first node. For example, using vim
:
ghe-data-node-1:~$ sudo vim /data/user/common/cluster.conf