クラスタノードの入れ替え
GitHub Enterprise Server ノードを入れ替えるには、クラスタ設定ファイル (cluster.conf
) 中で対象となるノードをオフラインとしてマークし、入れ替えるノードを追加しなければなりません。 ノードに障害があった場合、あるいはパフォーマンスを高めるためにリソースの多いノードを追加する場合、この作業が必要になることがあります。
警告:衝突を避けるため、入れ替えるノードはそれまでクラスタ中で使われていないホスト名を使わなければなりません。
このページの内容:
緊急時のノードの入れ替え
-
入れ替えるノードでユニークなホスト名を使ってGitHub Enterprise Serverのプロビジョニングとインストールをしてください。
-
管理シェルもしくはDHCPを使い、入れ替えるノードのIPアドレスのみを設定してください。他の設定は行わないでください。
-
障害を起こしたノードをオフラインとしてマークするには、任意のノードでクラスター設定ファイル(
cluster.conf
)を編集し、関連するノードのセクションにoffline = true
というテキストを含めてください。
たとえば、以下の修正された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
-
cluster.conf
を修正したノード上の管理シェルからghe-cluster-config-apply
を実行してください。これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、対象のノードがオフラインとしてマークされます。 -
新たにプロビジョニングした入れ替えノードを追加するには、任意のノード上で
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
- MySQLのマスターノードもしくはRedisのマスターノードを入れ替えようとしているなら、
cluster.conf
を修正してmysql-masterもしくは
redis-master`の値を入れ替えるノード名に変更してください。
たとえば以下の修正されたcluster.conf
ファイルは、新たにプロビジョニングされたクラスタノードのghe-replacement-data-node-1
をMySQL及びRedisのマスターノードに指定しています。
mysql-master = ghe-replacement-data-node-1 redis-master = ghe-replacement-data-node-1
-
修正された
cluster.conf
のノードの管理シェルからghe-cluster-config-init
を実行してください。これで、新たにクラスタに追加されたノードが初期化されます。 -
同じノードから
ghe-cluster-config-apply
を実行してください。これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、修正されたcluster.conf
ファイルに従って各ノードが設定されます。