Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となります: 2026-08-25. 廃止されたリリースはサポートされていません。 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 GitHub Enterprise Server のパフォーマンスの向上、セキュリティの向上、新機能については、「アップグレード プロセスの概要を参照してください。 アップグレードに関するサポートについては、GitHub Enterprise Support にお問い合わせください。

クラスタの初期化

GitHub Enterprise Server クラスターはライセンスで設定し、管理シェル (SSH) を使用して初期化する必要があります。

この機能を使用できるユーザーについて

GitHub はクラスタリングの適格性を決定し、インスタンスのライセンスの構成を有効にする必要があります。 クラスタリングには、慎重な計画と追加の管理オーバーヘッドが必要です。 詳しくは、「クラスタリングについて」をご覧ください。

GitHub Enterprise Server クラスターの初期化について

GitHub Enterprise Server クラスターを環境内にデプロイするには、GitHub Enterprise Serverをインストールし、クラスター対応ライセンスをアップロードし、最初のノードを構成し、構成ファイルを使用してノードを初期化する必要があります。

メモ

GitHub Enterprise Server のクラスタリングは HTTPS を使用して構成する必要があります。

インストール GitHub Enterprise Server

クラスターの設定を開始するには、各ノードの仮想マシン (VM) に GitHub Enterprise Server アプライアンスをインストールし、IP アドレスを構成します。

  1. 各クラスター ノードで、 GitHub Enterprise Serverをプロビジョニングしてインストールします。 詳しくは、「GitHub Enterprise Server インスタンスの設定」をご覧ください。
  2. 管理シェルまたは DHCP を使用し、各ノードの IP アドレスのみを構成します。 その他の設定は行わないでください。

最初のノードの設定

プライマリ MySQL ノードとして機能するノードに、 GitHub Enterprise Server ライセンスをインストールします。

  1. cluster.conf で MySQL プライマリとして指定されるノードに接続します。 詳しくは、「クラスタの初期化」をご覧ください。
  2. Web ブラウザーで https://<ip address>:8443/setup/ に移動します。
  3. プロンプトでライセンスファイルをアップロードし、管理コンソールのパスワードを設定してください。 詳しくは、「GitHub Enterprise のライセンスのダウンロード」をご覧ください。
  4. [Management Console] で、目的の設定を構成して保存します。
  5. インスタンスは自動的に再起動します。

クラスタの初期化

クラスターを初期化するためには、クラスター設定ファイル (cluster.conf) が必要です。 詳しくは、「クラスタの初期化」をご覧ください。

  1. 構成された最初のノードから ghe-cluster-config-init を実行します。 実行すると、クラスタ設定ファイルに設定されていないノードがある場合にクラスタを初期化します。
  2. ghe-cluster-config-apply を実行します。 これにより、cluster.conf ファイルを検証して各ノードファイルに設定を適用し、各ノードで設定されたサービスを起動します。

実行中のクラスターの状態を確認するには、ghe-cluster-status コマンドを使います。

クラスタ設定ファイルについて

クラスタ設定ファイル (cluster.conf) は、クラスター中のノードと、その上で動作するサービスを定義します。 詳しくは、「クラスタノードについて」をご覧ください。

この例 cluster.conf では、11 のノードでクラスターを定義します。

  • ghes-front-end-node-\* と呼ばれる 2 つのノードによって、クライアント要求に応答するサービスが実行されます。
  • ghes-database-node-\* と呼ばれる 3 つのノードによって、データベース データのストレージ、取得、レプリケーションを行うサービスが実行されます。
  • ghes-search-node-\* と呼ばれる 3 つのノードによって、検索機能を行うサービスが実行されます。
  • ghes-storage-node-\* と呼ばれる 3 つのノードによって、データのストレージ、取得、レプリケーションを行うサービスが実行されます。

ノードごとに有効で一意のホスト名と IPv4 アドレスを選択する必要があります。 ノード同士が互いにローカルで名前解決できるようにするため、GitHub Enterprise Server は各ノード上の /etc/hosts に各ノードのホスト名のレコードを追加します。

  • GitHub Enterprise Serverの有効なホスト名の詳細については、AUTOTITLE を参照してください。
  • 各 IPv4 アドレスは、プライベート ネットワーク上のアドレスである必要があります。 IETF Web サイトの RFC 1918 を参照してください。

mysql-servermysql-master 経由で MySQL プライマリとして構成した最初のクラスター ノードを指定します。

[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

構成された最初のノードでファイル /data/user/common/cluster.conf を作成します。 たとえば、vim を使用する場合は次のようになります。

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