降格したプライマリサイトのオンライン復帰
フェイルオーバー後、降格したプライマリ・サイトにフェイルバックして元の設定を復元することができます。このプロセスは2つのステップで構成されます:
- 古いプライマリ・サイトを セカンダリ・サイトにします。
- セカンダリ・サイトを プライマリ・サイトに昇格させます。
以前のプライマリ・サイトを セカンダリ・サイトに設定します。
旧プライマリサイトは現在のプライマリサイトと同期していないため、最初のステップは旧プライマリサイトを最新の状態にすることです。なお、リポジトリやアップロードなどディスクに保存されたデータの削除は、旧プライマリサイトを同期に戻す際に再生されないため、ディスク使用量が増加する可能性があります。あるいは、これを避けるために新しいセカンダリGitLabインスタンスをセットアップすることもできます。
旧プライマリサイトを最新の状態にするには
- 遅れている旧プライマリサイトにSSH接続してください。
-
/etc/gitlab/gitlab-cluster.json
があれば削除します。セカンダリ・サイトとして再追加されるサイトが
gitlab-ctl geo promote
コマンドで昇格させられた場合、/etc/gitlab/gitlab-cluster.json
ファイルが含まれている可能性があります。たとえば、gitlab-ctl reconfigure
の実行中に、次のような出力が表示されることがあります:The 'geo_primary_role' is defined in /etc/gitlab/gitlab-cluster.json as 'true' and overrides the setting in the /etc/gitlab/gitlab.rb
その場合、
/etc/gitlab/gitlab.rb
を単一の真実のソースに戻すために、サイト内のすべてのSidekiq、PostgreSQL、Gitaly、およびRailsノードから/etc/gitlab/gitlab-cluster.json
を削除する必要があります。 -
すべてのサービスが稼働していることを確認してください:
sudo gitlab-ctl start
プライマリサイトを永久に無効にした場合は、今すぐその手順を元に戻す必要があります。Debian/Ubuntu/CentOS7+ などの systemd があるディストリビューションでは、sudo systemctl enable gitlab-runsvdir
を実行する必要があります。CentOS 6 のような systemd がないディストリビューションの場合は、GitLab インスタンスを一からインストールし、Setup の指示に従ってセカンダリサイトとして設定する必要があります。この場合、次のステップは必要ありません。ディザスタリカバリ手順中にこのサイトのDNSレコードを変更した場合は、この手順中にこのサイトへの書き込みをすべてブロックする必要があるかもしれません。 -
データベースのレプリケーションを設定します。この場合、セカンダリサイトは以前のプライマリサイトを指します。
-
現在のセカンダリサイトで PgBouncerが有効になっていた場合(プライマリサイトだった場合)、
/etc/gitlab/gitlab.rb
を編集し、sudo gitlab-ctl reconfigure
を実行して無効にします。 - その後、セカンダリサイトでデータベースのレプリケーションを設定することができます。
-
現在のセカンダリサイトで PgBouncerが有効になっていた場合(プライマリサイトだった場合)、
元のプライマリサイトを失った場合は、セットアップ手順に従って新しいセカンダリサイトをセットアップしてください。
セカンダリ・サイトを プライマリ・サイトに昇格させます。
最初のレプリケーションが完了し、プライマリサイトとセカンダリサイトが密接に同期したら、計画的なフェイルオーバーを実行できます。
セカンダリ・サイトのリストア
再び2つのサイトを持つことを目的とする場合、セカンダリサイトについても最初の手順(以前のプライマリサイトを セカンダリサイトに設定する)を繰り返すことで、セカンダリサイトをオンラインに戻す必要があります。