15.3. スタンドアロン Red Hat Quay を使用した Geo レプリケーション

次の図では、Red Hat Quay が 2 つの別々のリージョンでスタンドアロンで実行されており、共通のデータベースと共通の Redis インスタンスが使用されています。ローカライズされたイメージストレージは各リージョンで提供され、最も近くにある利用可能なストレージエンジンからイメージプルが提供されます。コンテナーイメージのプッシュは、Red Hat Quay インスタンスの優先ストレージエンジンに書き込まれ、バックグラウンドで他のストレージエンジンに複製されます。

注記

1 つのクラスター (たとえば、US クラスター) で Clair に障害が発生した場合、米国のユーザーには Red Hat Quay で 2 番目のクラスター (EU) の脆弱性レポートが表示されません。これは、すべての Clair インスタンスの状態が同じであるためです。Clair に障害が発生した場合、通常はクラスター内の問題が原因です。

Geo レプリケーションのアーキテクチャー

Geo-replication

15.3.1. ストレージレプリケーションを有効にする - スタンドアロン Quay

以下の手順を使用して、Red Hat Quay でストレージのレプリケーションを有効にします。

手順

  1. Red Hat Quay 設定エディターで、Registry Storage セクションを見つけます。
  2. Enable Storage Replication をクリックします。
  3. データを複製するストレージエンジンをそれぞれ追加します。使用するすべてのストレージエンジンをリストに載せる必要があります。
  4. すべてのイメージをすべてのストレージエンジンに完全に複製する必要がある場合は、各ストレージエンジン設定の下にある Replicate to storage engine by default をクリックします。これにより、すべてのイメージがそのストレージエンジンにレプリケートされます。

    注記

    名前空間ごとのレプリケーションを有効にするには、Red Hat Quay サポートにお問い合わせください。

  5. 完了したら、Save Configuration Changes をクリックします。設定の変更は、Red Hat Quay の再起動後に有効になります。
  6. ストレージを追加して Geo レプリケーションの Replicate to storage engine by default を有効にした後、すべてのストレージで既存のイメージデータを同期する必要があります。これを行うには、コンテナーに対して oc exec (または docker exec または kubectl exec) を実行し、次のコマンドを入力する必要があります。

    # scl enable python27 bash
    # python -m util.backfillreplication
    注記

    この操作は、新しいストレージを追加した後にコンテンツを同期するための 1 回限りの操作です。

15.3.2. ストレージの環境設定による Red Hat Quay の実行

  1. config.yaml を Red Hat Quay を実行しているすべてのマシンにコピーします。
  2. 各リージョンの各マシンは、マシンが稼働しているリージョンの優先ストレージエンジンを持つ QUAY_DISTRIBUTED_STORAGE_PREFERENCE 環境変数を追加します。

    たとえば、ヨーロッパで稼働しているマシンで、ホスト上の config ディレクトリーが $QUAY/config から利用できる場合です。

    $ sudo podman run -d --rm -p 80:8080 -p 443:8443  \
       --name=quay \
       -v $QUAY/config:/conf/stack:Z \
       -e QUAY_DISTRIBUTED_STORAGE_PREFERENCE=europestorage \
       registry.redhat.io/quay/quay-rhel8:v3.8.15
    注記

    指定された環境変数の値は、コンフィグパネルで定義されたロケーション ID の名前と一致する必要があります。

  3. すべての Red Hat Quay コンテナーを再起動します。