Skip to main content

レプリカアプライアンスへのフェイルオーバーの開始

メンテナンスやテストのため、またはプライマリアプライアンスが機能しなくなった場合は、コマンドラインを使用して GitHub Enterprise Server レプリカアプライアンスにフェイルオーバーできます。

フェイルオーバーに必要な時間は、レプリカを手動で昇格させてトラフィックをリダイレクトするのにかかる時間によって異なります。 平均時間は、20 から 30 分の範囲です。

レプリカを昇格させても、既存のアプライアンスのためのレプリケーションは自動的にセットアップされません。 レプリカを昇格させたあと、希望する場合には新しいプライマリから既存のアプライアンス及び以前のプライマリへのレプリケーションをセットアップできます。

  1. プライマリ アプライアンスを使用できる場合、アプライアンスを切り替える前にレプリケーションが終了できるようにするには、プライマリ アプライアンスをメンテナンス モードにします。

    • アプライアンスをメンテナンス モードにしてください。

    • アクティブな Git 操作、MySQL クエリ、および Resque ジョブの数がゼロになったら、30 秒間待ちます。

      注: Nomad には、メンテナンス中であっても、常に実行中のジョブが存在するため、それらのジョブを無視しても問題ありません。

    • すべてのレプリケーション チャネル レポートが OK であることを確認するには、ghe-repl-status -vv コマンドを使用します。

      ghe-repl-status -vv
      
  2. すべてのアクティブなレプリカ アプライアンスでメインテナント モードを有効にします。 詳しくは、「メンテナンスモードの有効化とスケジューリング」を参照してください。

  3. フェイルオーバーするレプリカ アプライアンスで、レプリカを停止して、レプリカ アプライアンスをプライマリ ステータスに昇格するには、ghe-repl-promote コマンドを使用します。

    ghe-repl-promote
    

    注: プライマリ ノードが使用できない場合、警告とタイムアウトが発生する可能性がありますが、無視して構いません。

  4. レプリカの IP アドレスを指すように DNS レコードを更新します。 TTL 期間が経過すると、トラフィックはレプリカに転送されます。 ロードバランサを使用している場合は、トラフィックがレプリカに送信されるように設定されていることを確認します。

  5. 通常の操作が再開できることをユーザーに通知します。

  6. 必要に応じて、新しいプライマリから既存のアプライアンスや以前のプライマリへのレプリケーションをセットアップします。 詳しくは、「High Availability設定について」を参照してください。

  7. フェイルオーバー前に High Availability 設定の一部であり、レプリケーションをセットアップする予定のないアプライアンスは、UUID による High Availability 設定から削除する必要があります。

    • 以前のアプライアンスでは、cat /data/user/common/uuid を通じて UUID を取得します。

      cat /data/user/common/uuid
      
    • 新しいプライマリでは、ghe-repl-teardown を使用して、UUID を削除します。 UUID は、前の手順で取得した UUID に置き換えてください。

      ghe-repl-teardown -u  UUID
      

参考資料