クラスター ノードの置換について
GitHub Enterprise Server のクラスター トポロジは、数万人の開発者を持つ企業に水平スケーリングを提供します。 GitHub では、単一のプライマリ ノードでリソースの枯渇が日常的に発生する場合にクラスタリングが推奨されます。 クラスタリングには、慎重な計画と追加の管理オーバーヘッドが必要です。 詳しくは、「クラスタリングについて」を参照してください。
クラスター内の機能ノードを置き換えたり、予期せず障害が発生したノードを置き換えたりすることもできます。
警告: 競合を避けるため、入れ替えるノードはそれまでにクラスターで使われていない新しいホスト名を使わなければなりません。
関数ノードの入れ替え
-
置き換えノードに一意のホスト名を指定し、GitHub Enterprise Server をプロビジョニングしてインストールします。 1. 管理シェルまたは DHCP を使用して、置換ノードの IP アドレスのみを構成します。 その他の設定は行わないでください。 1. 任意のノードに対して、新たにプロビジョニングされた置換ノードを追加するには、
cluster.conf
ファイルを修正し、障害が起きたノードを取り除き、置換ノードを追加します。 たとえば、このように変更したcluster.conf
ファイルでは、ghe-data-node-3
を新しくプロビジョニングされたghe-replacement-data-node-3
ノードで置換します。[cluster "ghe-replacement-data-node-3"] hostname = ghe-replacement-data-node-3 ipv4 = 192.168.0.7 # ipv6 = fd12:3456:789a:1::7 git-server = true pages-server = true mysql-server = true elasticsearch-server = true redis-server = true memcache-server = true metrics-server = true storage-server = true
1. 変更された `cluster.conf` があるノードの管理シェルから、`ghe-cluster-config-init` を実行します。 これで、クラスタに新たに追加されたノードが初期化されます。 1. 同じノードから、`ghe-cluster-config-apply` を実行します。 これにより、構成ファイルが検証され、クラスター内の各ノードにコピーされ、変更された `cluster.conf` ファイルに従って各ノードが設定されます。 1. `git-server`、`pages-server`、`storage-server` などのデータ サービスを提供するノードをオフラインにしている場合は、ノードを退避します。 詳しくは、「[AUTOTITLE](/admin/enterprise-management/configuring-clustering/evacuating-a-cluster-node-running-data-services)」を参照してください。 1. 障害が発生したノードをオフラインとしてマークするには、`offline = true` というテキストを含むように[クラスター構成ファイル](/admin/enterprise-management/configuring-clustering/initializing-the-cluster#about-the-cluster-configuration-file) (`cluster.conf`) の関連するノードのセクションを変更します。たとえば、このように変更した
cluster.conf
では、ghe-data-node-3
ノードをオフラインとしてマークします。[cluster "ghe-data-node-3"] hostname = ghe-data-node-3 offline = true ipv4 = 192.168.0.6 # ipv6 = fd12:3456:789a:1::6
1. `cluster.conf` を変更したノードの管理シェルから、`ghe-cluster-config-apply` を実行します。 これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、そのノードがオフラインとしてマークされます。 1. プライマリ MySQL または Redis ノードを置き換える場合は、`cluster.conf` で `mysql-master` または `redis-master` の値を置換ノード名に変更します。たとえば、この変更された
cluster.conf
ファイルは、プライマリ MySQL および Redis ノードとして、新しくプロビジョニングされたクラスター ノードghe-replacement-data-node-1
を指定します。mysql-master = ghe-replacement-data-node-1 redis-master = ghe-replacement-data-node-1
緊急時のノードの入れ替え
-
置き換えノードに一意のホスト名を指定し、GitHub Enterprise Server をプロビジョニングしてインストールします。 1. 管理シェルまたは DHCP を使用して、置換ノードの IP アドレスのみを構成します。 その他の設定は行わないでください。 1. 障害が発生したノードをオフラインとしてマークするには、
offline = true
というテキストを含むようにクラスター構成ファイル (cluster.conf
) の関連するノードのセクションを変更します。たとえば、このように変更した
cluster.conf
では、ghe-data-node-3
ノードをオフラインとしてマークします。[cluster "ghe-data-node-3"] hostname = ghe-data-node-3 offline = true ipv4 = 192.168.0.6 # ipv6 = fd12:3456:789a:1::6
1. `cluster.conf` を変更したノードの管理シェルから、`ghe-cluster-config-apply` を実行します。 これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、そのノードがオフラインとしてマークされます。 1. 任意のノードに対して、新たにプロビジョニングされた置換ノードを追加するには、`cluster.conf` ファイルを修正し、障害が起きたノードを取り除き、置換ノードを追加します。 たとえば、このように変更した `cluster.conf` ファイルでは、`ghe-data-node-3` を新しくプロビジョニングされた `ghe-replacement-data-node-3` ノードで置換します。[cluster "ghe-replacement-data-node-3"] hostname = ghe-replacement-data-node-3 ipv4 = 192.168.0.7 # ipv6 = fd12:3456:789a:1::7 git-server = true pages-server = true mysql-server = true elasticsearch-server = true redis-server = true memcache-server = true metrics-server = true storage-server = true
1. プライマリ MySQL または Redis ノードを置き換える場合は、`cluster.conf` で `mysql-master` または `redis-master` の値を置換ノード名に変更します。たとえば、この変更された
cluster.conf
ファイルは、プライマリ MySQL および Redis ノードとして、新しくプロビジョニングされたクラスター ノードghe-replacement-data-node-1
を指定します。mysql-master = ghe-replacement-data-node-1 redis-master = ghe-replacement-data-node-1
1. 変更された `cluster.conf` があるノードの管理シェルから、`ghe-cluster-config-init` を実行します。 これで、クラスタに新たに追加されたノードが初期化されます。 1. 同じノードから、`ghe-cluster-config-apply` を実行します。 これにより、構成ファイルが検証され、クラスター内の各ノードにコピーされ、変更された `cluster.conf` ファイルに従って各ノードが設定されます。 1. `git-server`、`pages-server`、`storage-server` などのデータ サービスを提供するノードをオフラインにしている場合は、ノードを退避します。 詳しくは、「[AUTOTITLE](/admin/enterprise-management/configuring-clustering/evacuating-a-cluster-node-running-data-services)」を参照してください。