Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2024-03-26. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

High Availabilityレプリカの作成

アクティブ/パッシブ設定では、レプリカアプライアンスはプライマリアプライアンスの冗長コピーです。 プライマリアプライアンスに障害が起こると、High Availabilityモードではレプリカがプライマリアプライアンスとして動作し、サービスの中断を最小限にできます。

注: GitHub Enterprise Server では、最大で 8 つの高可用性レプリカ (パッシブとアクティブ/Go のいずれでも) が利用できます。

High Availabilityレプリカの作成

  1. 新しい GitHub Enterprise Server アプライアンスを希望するプラットフォームにセットアップします。 レプリカアプライアンスのCPU、RAM、ストレージ設定は、プライマリアプライアンスと同じにするべきです。 レプリカアプライアンスは、独立した環境にインストールすることをお勧めします。 下位層のハードウェア、ソフトウェア、ネットワークコンポーネントは、プライマリアプライアンスのそれらとは分離されているべきです。 クラウドプロバイダを利用している場合には、別個のリージョンもしくはゾーンを使ってください。 詳しくは、「GitHub Enterprise Server インスタンスをセットアップする」を参照してください。

  2. 新しいアプライアンスが、ポート 122/TCP と 1194/UDP 経由で、この高可用性環境の他のすべてのアプライアンスと通信できることを確認します。 詳しくは、「ネットワーク ポート」を参照してください。

  3. ブラウザで新しいレプリカアプライアンスのIPアドレスにアクセスして、所有するGitHub Enterpriseのライセンスをアップロードしてください。

  4. プライマリアプライアンス上のパスワードと一致する管理者パスワードを設定して続行します。

  5. [レプリカとして構成] をクリックします。

  6. "Add new SSH key(新しいSSH鍵の追加)"の下でSSH鍵を入力してください。

  7. [キーの追加] をクリックします。

  8. SSHを使ってレプリカアプライアンスのIPアドレスに接続してください。

    ssh -p 122 admin@REPLICA_IP
    
  9. レプリケーション用のキーの組を生成するには、プライマリ アプライアンスの IP アドレスを指定して ghe-repl-setup コマンドを使用し、それが返す公開キーをコピーします。

    ghe-repl-setup PRIMARY_IP
    
  10. プライマリ アプライアンスの承認されたキーのリストに公開キーを追加するには、https://PRIMARY-HOSTNAME/setup/settings を参照して、レプリカからコピーしたキーをリストに追加します。

  11. 新しいレプリカに対して、プライマリへの接続を確認してレプリカ モードを有効にするには、ghe-repl-setup をもう一度実行します。

    ghe-repl-setup PRIMARY_IP
    
  12. データ ストアのレプリケーションを開始するには、ghe-repl-start コマンドを使います。

    ghe-repl-start
    

    警告: ghe-repl-start を実行すると、プライマリ サーバーを短時間使えなくなり、その間、ユーザーには内部サーバー エラーが表示されることがあります。 もっとわかりやすいメッセージを表示するには、ghe-repl-start をレプリカ ノードで実行する前にプライマリ ノード上で ghe-maintenance -s を実行し、アプライアンスをメンテナンス モードにします。 レプリケーションを開始したら、ghe-maintenance -u を使ってメンテナンス モードを無効にします。 プライマリ ノードがメンテナンス モードの間、Git レプリケーションは進行しません。

  13. 各データストアのレプリケーション チャネルの状態を確認するには、ghe-repl-status コマンドを使用します。

    ghe-repl-status
    

Geo-replicationレプリカの作成

レプリカを作成する以下の例の設定では、1 つのプライマリと 2 つのレプリカを使用しており、これらは 3 つの異なる地域にあります。 3 つのノードは別のネットワークに配置できますが、すべてのノードは他のすべてのノードから到達可能である必要があります。 最低限、必要な管理ポートは他のすべてのノードに対して開かれている必要があります。 ポートの要件について詳しくは、「ネットワーク ポート」をご覧ください。

プライマリ ノードとレプリカ ノード間の待機時間は 70 ミリ秒未満である必要があります。 ノードのネットワーク間にファイアウォールを設定することはお勧めしません。待ち時間が 70 ミリ秒を超える場合は、代わりにキャッシュ レプリカ ノードをお勧めします。 詳しくは、「リポジトリ キャッシュの構成」を参照してください。

  1. 最初のレプリカで ghe-repl-setup を実行することで、標準の 2 ノード構成の場合と同じ方法で最初のレプリカを作成します。

    (replica1)$ ghe-repl-setup PRIMARY_IP
    (replica1)$ ghe-repl-start
    
  2. 2 つ目のレプリカを作成し、ghe-repl-setup --add コマンドを使用します。 --add フラグは、既存のレプリケーション構成を上書きするのを防ぎ、新しいレプリカを構成に追加します。

    (replica2)$ ghe-repl-setup --add PRIMARY_IP
    (replica2)$ ghe-repl-start
    
  3. デフォルトでは、レプリカは同じデータセンターに設定され、同じノードにある既存のノードからシードを試行します。 レプリカを別のデータセンターに設定するには、datacenter オプションに異なる値を設定します。 具体的な値は、それらが互いに異なる限り、どのようなものでもかまいません。 各ノードで ghe-repl-node コマンドを実行し、データセンターを指定します。

    プライマリでは以下のコマンドを実行します。

    (primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME]
    

    1 番目のレプリカでは以下のコマンドを実行します。

    (replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME]
    

    2 番目のレプリカでは以下のコマンドを実行します。

    (replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME]
    

    ヒント: --datacenter および --active オプションは同時に設定できます。

  4. アクティブなレプリカノードは、アプライアンスデータのコピーを保存し、エンドユーザーのリクエストに応じます。 アクティブではないノードは、アプライアンスデータのコピーを保存しますが、エンドユーザーのリクエストに応じることはできません。 --active フラグを使用してアクティブ モードを有効にするか、--inactive フラグを使用して非アクティブ モードを有効にします。

    1 番目のレプリカでは以下のコマンドを実行します。

    (replica1)$ ghe-repl-node --active
    

    2 番目のレプリカでは以下のコマンドを実行します。

    (replica2)$ ghe-repl-node --active
    
  5. 構成を適用するには、プライマリで ghe-config-apply コマンドを使用します。

    (primary)$ ghe-config-apply
    

Geo-replicationのためのDNSの設定

プライマリとレプリカノードの IP アドレスを使って、Geo DNS を設定します。 SSH でプライマリ ノードにアクセスしたり、backup-utils でバックアップしたりするために、プライマリ ノード (たとえば、primary.github.example.com) に対して DNS CNAME を作成することもできます。

テストのために、ローカル ワークステーションの hosts ファイル (たとえば、/etc/hosts) にエントリを追加することができます。 以下の例のエントリでは、HOSTNAME に対する要求が replica2 に解決されることになります。 別の行をコメントアウトすることで、特定のホストをターゲットにすることができます。

# <primary IP>      HOSTNAME
# <replica1 IP>     HOSTNAME
<replica2 IP>     HOSTNAME

参考資料