レプリカの種類と機能
HA デプロイで使用されるレプリカの種類は何ですか?
高可用性 (HA) デプロイには、次の 3 種類のレプリカがあります。
-
パッシブ レプリカ
-
アクティブ レプリカ
-
キャッシュ レプリカ (リポジトリ キャッシュと呼ばれます)。
**パッシブ レプリカ** は単にプライマリ インスタンスからのデータを同期するだけで、GitHub トラフィックを処理しません。 ただし、オペレーターは、必要に応じてパッシブ レプリカをプライマリに昇格させることができます。 **geoレプリカ**は**アクティブなレプリカ**の例です (これらの用語は同じ意味で使用されることがよくあります)。 アクティブ レプリカは、プライマリからのデータを同期します。 アクティブなレプリカは、 GitHub トラフィックを直接処理することも、プライマリにプロキシすることもできます。 **キャッシュ レプリカ** は、プライマリから Git と Git Large File Storage (Git LFS) の両方のデータを同期します。 キャッシュ レプリカは、CI ファームなどの読み取り負荷の高いシナリオ向けに設計されています。 ローカルコピーを持っているリポジトリに対してのみ、読み取り/フェッチ/クローンを受け入れます。 その他のリポジトリの場合、エラーが返されます。 エラー メッセージを含むプッシュは常に拒否されます。
すべてのレプリカの種類をプライマリに昇格できますか?
パッシブ レプリカとアクティブ レプリカのみをプライマリに昇格できます。 キャッシュ レプリカをプライマリに昇格することはできません。
1 つのデプロイにすべてのレプリカを含めることができますか?
1 つのデプロイに、アクティブ レプリカ、パッシブ レプリカ、キャッシュ レプリカを一度に含めることができます。
プライマリ インスタンスはレプリカの書き込みを待機しますか?
プライマリ インスタンスは、レプリカの書き込みを待機しません。 HA では、プッシュがプライマリおよびすべてのパッシブ レプリカとアクティブ レプリカに書き込まれます。 ただし、プライマリ ノードが唯一の投票ノードであるため、プッシュはプライマリで成功した場合に受け入れられると見なされます。
通信とネットワークの要件
アクティブレプリカと通信できるエンティティは何ですか?
プライマリ インスタンスは、アクティブレプリカと通信してデータを同期し、アクティブレプリカがプライマリにプロキシする要求を処理します。 GitHub Web、API、Git トラフィック (人間と自動化の両方から) をアクティブレプリカに直接ルーティングできます。 そのため、アクティブ レプリカを対象としたトラフィックが実際に DNS に到達するように DNS を構成することが重要です。
パッシブ レプリカと通信できるエンティティは何ですか?
プライマリ インスタンスはパッシブ レプリカと通信してデータを同期します。 パッシブ レプリカは、他の GitHub トラフィックを受信または処理しません。
キャッシュ レプリカと通信できるエンティティは何ですか?
読み取り専用の Git トラフィックは、主に CI ファームなどの自動化から、キャッシュ レプリカにルーティングして処理できます。 これを有効にするには、関連するトラフィックをキャッシュ レプリカに転送するように DNS を構成する必要があります。 キャッシュ レプリカは、ユーザー トラフィックやプッシュ トラフィックを処理するようには設計されていません。
レプリカはプライマリと併配置する必要がありますか?
レプリカをプライマリと併配置する必要はありません。 定義上、geo レプリカはプライマリから地理的に離れ、同じデータ センターには存在しません。 キャッシュ レプリカにも併配置要件はありません。
ただし、プライマリ障害時のフェールオーバーを高速化するために、少なくとも 1 つのパッシブ レプリカを同じデータ センター内のプライマリと併配置することをお勧めします。 完全なデータ センターの停止が発生した場合は、地理的に分散されたパッシブ レプリカを昇格させることができます。
プライマリとレプリカの間の待機時間の要件は何ですか?
プライマリ レプリカとアクティブ レプリカには、厳密な待機時間要件があります。 プライマリ レプリカとパッシブ レプリカ、およびプライマリ レプリカとキャッシュ レプリカには、推奨される待機時間の要件があります。 詳細については、「高可用性レプリカの作成」および「高可用性構成の監視」を参照してください。 必要な値と推奨値を超えるネットワーク待機時間により、レプリカが常に遅れる可能性があります。
管理アクセスと監視
[Management Console] は、レプリカで利用可能ですか?
[Management Console] は、パッシブ レプリカまたはキャッシュ レプリカでは使用できません。 アクティブ レプリカでのみ使用できます (アクティブ レプリカは、ほとんどの要求をプライマリに転送します)。
レプリカに SSH 接続できますか?
管理シェル アクセス権を持つオペレーターは、任意のレプリカに SSH 接続できます。 オペレーターは、[Management Console] を使用して新しいレプリカに公開キーを追加してから、レプリカをクラスターに追加できます。 詳しくは、「管理シェル (SSH) にアクセスする」をご覧ください。
レプリカのサポート バンドルのしくみ
クラスター バンドルまたはノード固有のバンドルを生成できます。 クラスター バンドルには HA デプロイ内のすべてのノードのバンドルが含まれますが、ノード固有のバンドルには 1 つのノードからのデータだけが含まれます。
レプリカを監視することはできますか?
すべてのレプリカを監視できます。 プライマリ インスタンスの [Management Console] には、デプロイ内のパッシブ レプリカ ノードとアクティブ レプリカ ノードを含むすべてのノードのダッシュボードが用意されています。
さらに、デプロイ内のすべてのノードからサードパーティの監視プラットフォームにメトリックとログをエクスポートできます。
レプリカ ノード間のデータ レプリケーションの状態を監視する方法については、 高可用性構成の監視 を参照してください。
レプリカとバックアップの違い
レプリカとバックアップは同じですか?
レプリカとバックアップは同じではありません。 彼らは異なる目的に役立ちます。
バックアップは、データのコピーを作成し、別の GitHub Enterprise Server 環境に復元できるようにするために使用します。 お客様は、多くの場合、バックアップを使用して災害から復旧したり、新しいインストールを作成したりします。 要するに、バックアップ データは別の GitHub Enterprise Server インスタンスを復元するために使用されますが、レプリカは高可用性と冗長性をリアルタイムで実現するように設計されています。
レプリカ自体はGitHub Enterprise Server インスタンスです。 Backup-host はGitHub Enterprise Server インストールではありません。
レプリカで実行されているソフトウェアは何ですか?
レプリカは、GitHub Enterprise Server の個別のインストールです。 プライマリ インスタンスとすべてのレプリカで、同じバージョンの GitHub Enterprise Server が実行されている必要があります。
メンテナンス操作
アップグレードに推奨される一連の操作は何ですか?
- プライマリ レプリカとすべてのレプリカでメンテナンス期間を開始します。
- すべてのレプリカでレプリケーションを停止します。
- プライマリをターゲット バージョンにアップグレードします。
- レプリカを同じターゲット バージョンにアップグレードします。 すべてのレプリカを並列でアップグレードできます。
- すべてのアップグレードが完了したら、レプリケーション プロセスを再起動します。
- メンテナンス期間を閉じます。
場合によっては、レプリカのアップグレードを後で延期することが必要になる場合があります。 その場合は、デプロイからレプリカ ノードを削除し、スタンドアロン ノードに変換します。 プライマリと同じバージョンにアップグレードし、デプロイに追加し直します。
ホットパッチの推奨される一連の操作は何ですか?
ホットパッチは、中断を最小限に抑えながら実行できます。 最初にプライマリにホットパッチを適用してから、レプリカにホットパッチを適用できます。
適切なレプリカの種類の選択
パッシブ レプリカを使用する場合
高可用性が必要で、プライマリがダウンした場合に最新のインスタンスに切り替える必要がある場合は、パッシブレプリカを利用してください。 ほとんどのお客様はパッシブ レプリカを使用しています。
Geo レプリカを使用する場合
地理的に分散した開発者の従業員がいる場合は、geo レプリカを設定すると、特定のリージョンのユーザーに役立ちます。 たとえば、北米、ヨーロッパ、アジアにエンジニアリング チームを持つ多国籍企業を想像してみてください。 プライマリ インスタンスが米国にある場合、ヨーロッパに geo レプリカをデプロイすると、ヨーロッパのユーザーの読み取り操作のパフォーマンスが大幅に向上する可能性があります。 ただし、書き込み操作でも同じことはできません。 操作が完了する前に、すべての書き込みが geo レプリカとプライマリの両方に到達する必要があります。 プライマリとレプリカ間の地理的な距離により待機時間が長くなり、書き込み操作が遅くなる可能性があります。
キャッシュ レプリカを使用するタイミング
CI ファームのような読み取り負荷の高いユース ケースの場合は、キャッシュ レプリカの方が適しています。 キャッシュ レプリカが理にかなっているシナリオをいくつか次に示します。
- メイン データ センターへの帯域幅が制限されているリージョンに小規模なサテライト オフィスがある会社。開発者はリポジトリにすばやくアクセスする必要がありますが、書き込みアクセスは必要ありません。
- リポジトリを頻繁に複製する必要があり、プライマリ インスタンスへのネットワーク トラフィックを最小限に抑える必要がある、リモート データ センターで CI/CD ジョブを実行している組織。
設計上、キャッシュ レプリカにはトレードオフが伴います。 キャッシュ レプリカは最終的に一貫性があり、常に最新のリポジトリ コンテンツを提供するとは限りません。 ただし、最新の変更がレプリカに反映されたときにトリガーされる Webhook があるため、関連する CI/CD ジョブを開始できます。 キャッシュ レプリカを使用する GitHub のお客様はほとんどありません。