記事のバージョン: Enterprise Server 2.17
クラスタノードの入れ替え
GitHub Enterprise Server ノードを入れ替えるには、クラスタ設定ファイル (cluster.conf
) 中で対象となるノードをオフラインとしてマークし、入れ替えるノードを追加しなければなりません。 ノードに障害があった場合、あるいはパフォーマンスを高めるためにリソースの多いノードを追加する場合、この作業が必要になることがあります。
警告:衝突を避けるため、入れ替えるノードはそれまでクラスタ中で使われていないホスト名を使わなければなりません。
関数ノードの入れ替え
-
入れ替えノードにユニークなホスト名を付けてGitHub Enterprise Serverをプロビジョニングしてインストールしてください。
-
管理シェルもしくは DHCP を使い、置き換えノードの IP アドレスのみを設定してください。 その他の設定は行わないでください。
-
新たにプロビジョニングされた置き換えノードを追加するには、任意のノードで
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
-
cluster.conf
を修正したノードの管理シェルからghe-cluster-config-init
を実行してください。 これで、クラスタに新たに追加されたノードが初期化されます。 -
同じノードから
ghe-cluster-config-apply
を実行してください。 これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、変更されたcluster.conf
に従って各ノードが設定されます。 -
cluster.confに
git-server = true
と設定されているノードをオフラインにするなら、ノードからの退避を行ってください。 詳しい情報については"クラスタノードからの退避"を参照してください。 -
障害が起きたノードをオフラインとしてマークするには、任意のノードでクラスタ設定ファイル(
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
を実行してください。 これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、そのノードがオフラインとしてマークされます。 -
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
緊急時のノードの入れ替え
-
入れ替えノードにユニークなホスト名を付けて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
に従って各ノードが設定されます。 -
cluster.confに
git-server = true
と設定されているノードをオフラインにするなら、ノードからの退避を行ってください。 詳しい情報については"クラスタノードからの退避"を参照してください。