Nodes are GitHub Enterprise instances that operate in a cluster. Each node runs a set of services that are provided to the cluster, and ultimately to the users.

Minimum hardware recommendations

We recommend each node have a minimum root volume size of 80 GB, as well as a separate data volume. These are minimum recommendations. More resources may be required depending on your usage, such as user activity and selected integrations.

Services Minimum Memory Required Minimum Data Volume Free Space Required
job-server,memcache-server,web-server 14 GB 1 GB
mysql-server,redis-server 14 GB 10 GB
git-server,metrics-server,pages-server,storage-server 7 GB 10 GB
elasticsearch-server 14 GB 10 GB

Services required for clustering

For adequate redundancy, use these minimum nodes operating each service.

Note: Your organization's needs for scalability will depend on many factors including the size and number of repositories, number of users, and overall utilization.

Services Minimum Nodes Required
job-server, memcache-server, metrics-server, web-server 2
mysql-server, redis-server 2
git-server,pages-server, storage-server 3
elasticsearch-server 3

Cluster design recommendations

Clustering allows services that make up GitHub Enterprise to be scaled out independently of each other. This flexibility can be used to design and implement a cluster that fits organizations with different scalability requirements. For example, some organizations may need more storage throughput for large or frequent fetches, but web server usage may be relatively low. Another organization may have good performance with fewer storage resources, but need many nodes running pages-server or elasticsearch-server. Many different combinations are possible. Work with your account representative to determine the best cluster configuration for your specific needs.

  • Spread redundant nodes across independent hardware. If you share CPU, memory, or storage devices, you'll reduce performance and introduce single points of failure. Shared networking components can also reduce throughput and increase risk of loss of connectivity in the event of an outage.
  • Establish tiers of nodes that make sense for your organization. An example configuration:
    • Front-end tier (web-server, jobs-server and memcache-server)
    • Database tier (mysql-server and redis-server)
    • Search tier (elasticsearch-server)
    • Storage tier (git-server,pages-server, storage-server, metrics-server)
  • Use fast storage. Storage area networks (SAN) are often optimized for maximum space utilization, availability and fault tolerance, not absolute throughput. GitHub Enterprise clustering provides redundancy and availability, and will perform best on the fastest storage available. Local SSD storage is recommended.

Example cluster diagram

Note: This is only an example. Your organization's optimal cluster design will depend on your unique needs. Talk to your dedicated representative or our account management team at sales@github.com so we can help you determine the best cluster configuration.

Example Cluster