Configuring Gitaly for Scaled and High Availability

A Gitaly Cluster can be used to increase the fault tolerance of Gitaly in high availability configurations.

This document is relevant for scalable and highly available setups.

Running Gitaly on its own server

See Run Gitaly on its own server in Gitaly documentation.

Continue configuration of other components by going back to the reference architecture page.

Enable Monitoring

Introduced in GitLab 12.0.

  1. Make sure to collect CONSUL_SERVER_NODES, which are the IP addresses or DNS records of the Consul server nodes, for the next step. Note they are presented as Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z

  2. Create/edit /etc/gitlab/gitlab.rb and add the following configuration:

    # Enable service discovery for Prometheus
    consul['enable'] = true
    consul['monitoring_service_discovery'] =  true
    
    # Replace placeholders
    # Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z
    # with the addresses of the Consul server nodes
    consul['configuration'] = {
       retry_join: %w(Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z),
    }
    
    # Set the network addresses that the exporters will listen on
    node_exporter['listen_address'] = '0.0.0.0:9100'
    gitaly['prometheus_listen_addr'] = "0.0.0.0:9236"
  3. Run sudo gitlab-ctl reconfigure to compile the configuration.