データ サービスを実行しているクラスター ノードの退避について
GitHub Enterprise Server のクラスター構成では、個々のノードをオフラインにする必要がある場合があります。 たとえば、ノードの仮想マシン (VM) を置き換える必要がある場合があります。 置き換えるノードがストレージ層で動作している場合、GitHub では、最初にノードのデータ サービスを退避させることをお勧めします。 退避により、残りのノードに予想されるデータの最小コピーが含まれるようにします。
GitHub Enterprise Server のノードとサービス レベルについて詳しくは、「クラスタノードについて」をご覧ください。
警告:
-
ノードの置き換え中にデータが失われるのを防ぐために、GitHub では、ノードをオフラインにする前に、ノード上の該当するデータ サービスを退避させることを強くお勧めします。
-
クラスター上のデータ サービスの冗長性を確保するには、少なくとも 3 つのノードにデータのコピーが存在する必要があります。 たとえば、4 つ以上のノードで Git データが格納される場合、退避中に、退避させたリポジトリ データは、退避中のノードから他の 3 つのノードに移動します。 1 つのサービスのデータを格納するノードが 3 つだけの場合、1 つのノードの避難が失敗し、レプリケートされるデータが不足する可能性があります。
データ サービスを実行しているクラスター ノードの退避
ノードをオフラインにする予定で、ノードが次のいずれかの役割を実行している場合は、ノードをオフラインにする前に、該当する各サービスを退避させます。
サービス | データ |
---|---|
git-server | リポジトリ |
pages-server | GitHub Pages のサイトのビルド |
storage-server |
|
-
クラスタ内のいずれかのノードにSSHで接続してください。 詳しくは、「管理シェル (SSH) にアクセスする」を参照してください。
-
待避するノードの UUID を見つけるには、次のコマンドを実行します。 HOSTNAME は、ノードのホスト名に置き換えます。 以降のコマンドでは UUID を使用します。
ghe-config cluster.HOSTNAME.uuid
-
ノード上の適用可能なサービスごとに、初期データ数を決定するには、次のコマンドを実行します。 コマンドごとに、UUID を前の手順の UUID に置き換えます。
-
git-server
:-
コマンド:
ghe-spokesctl server status git-server-UUID
-
関連する出力:
NETWORKS
、GISTS
-
-
pages-server
:-
コマンド:
echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
-
-
storage-server
:-
コマンド:
ghe-storage evacuation-status storage-server-UUID
-
関連する出力:
Remaining item(s)
-
-
-
ノード上の該当するサービスを退避させるには、次のコマンドを実行します。 コマンドごとに、UUID を前の手順の UUID に置き換えます。
-
git-server
:-
コマンド (REASON FOR EVACUATION を退避の理由に置き換えます):
ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
-
-
pages-server
:-
コマンド:
ghe-dpages evacuate pages-server-UUID
-
-
storage-server
:-
次のコマンドを実行してノードのサービスをオフラインにします。
ghe-storage offline storage-server-UUID
-
次のコマンドを実行して、ノードを退避させます。
ghe-storage evacuate storage-server-UUID
-
-
-
GitHub Enterprise Server がデータをコピーしている間にサービスの退避を監視するには、次のコマンドを実行します。 コマンドごとに、UUID を前の手順の UUID に置き換えます。
警告: 退避が完了するまで、ノードをシャットダウンしないでください。 退避は、データ数が 0 に達すると完了します。つまり、すべてのデータが他のノードに安全に格納されます。
-
git-server
:ghe-spokesctl server evac-status git-server-UUID
-
pages-server
:echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
-
storage-server
:ghe-storage evacuation-status storage-server-UUID
-
-
サービスの退避が完了したら、ノードをシャットダウンします。