Skip to main content

Cluster initialisieren

Ein GitHub Enterprise Server-Cluster muss mit einer Lizenz eingerichtet und mithilfe der Verwaltungsshell (SSH) initialisiert werden.

Wer kann dieses Feature verwenden?

GitHub bestimmt die Berechtigung zum Clustering und muss die Konfiguration für die Lizenz deiner Instanz aktivieren. Das Clustering erfordert eine sorgfältige Planung und zusätzlichen Verwaltungsaufwand. Weitere Informationen findest du unter Informationen zu Clustering.

Informationen zur Initialisierung eines GitHub Enterprise Server-Clusters

Um einen GitHub Enterprise Server-Cluster in deiner Umgebung bereitzustellen, musst du GitHub Enterprise Server installieren, eine clusterfähige Lizenz hochladen, den ersten Knoten konfigurieren und diesen mit einer Konfigurationsdatei initialisieren.

Hinweis: GitHub Enterprise Server-Clustering muss mit HTTPS konfiguriert werden.

GitHub Enterprise Server installieren

Um mit dem Einrichten des Clusters zu beginnen, installiere die GitHub Enterprise Server-Appliance auf dem virtuellen Computer (VM) jedes Knotens, und konfiguriere dann eine IP-Adresse.

  1. Stelle auf jedem Clusterknoten GitHub Enterprise Server bereit, und installiere es. Weitere Informationen findest du unter GitHub Enterprise Server-Instanz einrichten.
  2. Konfiguriere mithilfe der Verwaltungsshell oder DHCP nur die IP-Adresse jedes Knotens. Konfiguriere keine anderen Einstellungen.

Ersten Knoten konfigurieren

Installiere deine GitHub Enterprise Server-Lizenz auf dem Knoten, der als primärer MySQL-Knoten fungiert.

  1. Stelle eine Verbindung mit dem Knoten her, der in cluster.conf als primäre MySQL-Instanz gekennzeichnet wird. Weitere Informationen findest du unter Cluster initialisieren.
  2. Wechsle in deinem Webbrowser zu https://<ip address>:8443/setup/.
  3. Lade an der Eingabeaufforderung Deine Lizenzdatei hoch, und lege das Passwort für die Managementkonsole fest. Weitere Informationen findest du unter Verwalten deiner Lizenz für GitHub Enterprise.
  4. Konfiguriere und speichere deine gewünschten Einstellungen in der Verwaltungskonsole.
  5. Die Instanz wird automatisch neu gestartet.

Cluster initialisieren

Um den Cluster zu initialisieren, benötigst du eine Clusterkonfigurationsdatei (cluster.conf). Weitere Informationen findest du unter Cluster initialisieren.

  1. Führe auf dem ersten Knoten, der konfiguriert wurde, ghe-cluster-config-init aus. Dadurch wird der Cluster initialisiert, wenn in der Clusterkonfigurationsdatei nicht konfigurierte Knoten vorhanden sind.
  2. Führe aus ghe-cluster-config-apply. Dieser Befehl validiert die Datei cluster.conf, wendet die Konfiguration auf jede Knotendatei an und lädt die konfigurierten Dienste auf jeden Knoten.

Um den Status eines ausgeführten Clusters zu überprüfen, verwende den Befehl ghe-cluster-status.

Informationen zur Clusterkonfigurationsdatei

Die Clusterkonfigurationsdatei (cluster.conf) definiert die Knoten im Cluster und die von ihnen ausgeführten Dienste. Weitere Informationen findest du unter Informationen zu Clusterknoten.

Diese cluster.conf-Beispieldatei definiert einen Cluster mit 11 Knoten.

  • Zwei Knoten mit dem Namen ghes-front-end-node-\* führen die für die Reaktion auf Clientanforderungen zuständigen Dienste aus
  • Drei Knoten mit dem Namen ghes-database-node-\* führen Dienste aus, die für die Speicherung, den Abruf und die Replikation von Datenbankdaten verantwortlich sind
  • Drei Knoten mit dem Namen ghes-search-node-\* führen Dienste aus, die für die Suchfunktionalität verantwortlich sind
  • Drei Knoten mit dem Namen ghes-storage-node-\* führen Dienste aus, die für die Speicherung, den Abruf und die Replikation von Daten verantwortlich sind

Die Namen der Knoten können beliebige gültige Hostnamen sein. Die Namen sind als Hostnamen jedes Knotens festgelegt und werden auf jedem Knoten zu /etc/hosts hinzugefügt, damit die Knoten untereinander lokal auflösbar sind.

Gib den ersten Clusterknoten an, den du über mysql-server und mysql-master als primär MySQL-Instanz konfiguriert hast.

[cluster]
  mysql-master = ghes-database-node-1
  redis-master = ghes-database-node-1
  primary-datacenter = primary
[cluster "ghes-front-end-node-1"]
  hostname = ghes-front-end-node-1
  ipv4 = 192.168.0.2
  # ipv6 = fd12:3456:789a:1::2
  consul-datacenter = primary
  datacenter = primary
  web-server = true
  job-server = true
  memcache-server = true
[cluster "ghes-front-end-node-2"]
  hostname = ghes-front-end-node-2
  ipv4 = 192.168.0.3
  # ipv6 = fd12:3456:789a:1::3
  consul-datacenter = primary
  datacenter = primary
  web-server = true
  job-server = true
  memcache-server = true
[cluster "ghes-database-node-1"]
  hostname = ghes-database-node-1
  ipv4 = 192.168.0.4
  # ipv6 = fd12:3456:789a:1::4
  consul-datacenter = primary
  datacenter = primary
  consul-server = true
  mysql-server = true
  redis-server = true
[cluster "ghes-database-node-2"]
  hostname = ghes-database-node-2
  ipv4 = 192.168.0.5
  # ipv6 = fd12:3456:789a:1::5
  consul-datacenter = primary
  datacenter = primary
  consul-server = true
  mysql-server = true
  redis-server = true
[cluster "ghes-database-node-3"]
  hostname = ghes-database-node-3
  ipv4 = 192.168.0.6
  # ipv6 = fd12:3456:789a:1::6
  consul-datacenter = primary
  datacenter = primary
  consul-server = true
  mysql-server = true
  redis-server = true
[cluster "ghes-search-node-1"]
  hostname = ghes-search-node-1
  ipv4 = 192.168.0.7
  # ipv6 = fd12:3456:789a:1::7
  consul-datacenter = primary
  datacenter = primary
  elasticsearch-server = true
[cluster "ghes-search-node-2"]
  hostname = ghes-search-node-2
  ipv4 = 192.168.0.8
  # ipv6 = fd12:3456:789a:1::8
  consul-datacenter = primary
  datacenter = primary
  elasticsearch-server = true
[cluster "ghes-search-node-3"]
  hostname = ghes-search-node-3
  ipv4 = 192.168.0.9
  # ipv6 = fd12:3456:789a:1::9
  consul-datacenter = primary
  datacenter = primary
  elasticsearch-server = true
[cluster "ghes-storage-node-1"]
  hostname = ghes-storage-node-1
  ipv4 = 192.168.0.10
  # ipv6 = fd12:3456:789a:1::10
  consul-datacenter = primary
  datacenter = primary
  git-server = true
  pages-server = true
  storage-server = true
  metrics-server = true
[cluster "ghes-storage-node-2"]
  hostname = ghes-storage-node-2
  ipv4 = 192.168.0.11
  # ipv6 = fd12:3456:789a:1::11
  consul-datacenter = primary
  datacenter = primary
  git-server = true
  pages-server = true
  storage-server = true
  metrics-server = true
[cluster "ghes-storage-node-3"]
  hostname = ghes-storage-node-3
  ipv4 = 192.168.0.12
  # ipv6 = fd12:3456:789a:1::12
  consul-datacenter = primary
  datacenter = primary
  git-server = true
  pages-server = true
  storage-server = true
  metrics-server = true

Erstelle die Datei /data/user/common/cluster.conf auf dem konfigurierten ersten Knoten. Beispielsweise gilt bei Verwendung von vim:

ghe-data-node-1:~$ sudo vim /data/user/common/cluster.conf