Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

クラスタの初期化

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

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

GitHub Enterprise Server のクラスター トポロジは、数万人の開発者を持つ企業に水平スケーリングを提供します。 GitHub では、単一のプライマリ ノードでリソースの枯渇が日常的に発生する場合にクラスタリングが推奨されます。 クラスタリングには、慎重な計画と追加の管理オーバーヘッドが必要です。 詳しくは、「クラスタリングについて」を参照してください。

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

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

GitHub Enterprise Serverのインストール

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

最初のノードの設定

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

クラスタの初期化

クラスターを初期化するためには、クラスター設定ファイル (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 つのノードによって、データのストレージ、取得、レプリケーションを行うサービスが実行されます。

ノードの名前には、ホスト名として有効な任意の名前を選択できます。 この名前は各ノードのホスト名として設定され、各ノードの /etc/hosts に追加され、各ノードがローカルでお互いを解決できるようにします。

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