Skip to main content

Enterprise Server 3.15 は、現在リリース候補として使用できます。

クラスタの初期化

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 の有効なホスト名について詳しくは、「インスタンスのホスト キーの構成」をご覧ください。
  • 各 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