7.2. 3scale 用バックエンドコンポーネントの設定

3scale 管理者は、backend-cronbackend-listener、および backend-worker のデプロイメント設定で、back-end コンポーネントの環境変数に Redis HA (フェイルオーバー) を設定します。3scale の Redis HA には、これらの設定が必要です。

注記

Redis と Sentinel を使用するには、3scale をデプロイする前に、ポイントする Redis を設定するためにすべてのフィールドを指定して system-redis シークレットを作成する必要があります。3scale では、フィールドはバックエンドのパラメーターとしては提供されません。

7.2.1. backend-redissystem-redis シークレットの作成

以下の手順に従い、適宜 backend-redis および system-redis シークレットを作成します。

7.2.2. HA 用 3scale の新規インストールのデプロイ

single-database Redis インスタンスでデプロイする際にキーの競合を防ぐには、sidekiq キーおよび message_bus Redis キーに異なる namespace を設定します。これは Redis Enterprise および Redis クラスターの両方に適用されます。

sidekiq および message_bus の異なる Redis データベースへの読み取りおよび書き込みがある他のデプロイメントでは、namespace は必要ありません。

以下のパラメーターを使用して Redis キー namespace を設定します。

  • NAMESPACE: Redis データベースの system-app および system-sidekiq によって保存されるジョブキューに関連するエントリー。
  • MESSAGE_BUS_NAMESPACE: Redis データベースに system-app により保存されるプロセス間 message_bus 通信に関連するエントリーの場合。

手順

  1. 以下のフィールドを指定して、backend-redis および system-redis シークレットを作成します。

    backend-redis

    REDIS_QUEUES_SENTINEL_HOSTS
    REDIS_QUEUES_SENTINEL_ROLE
    REDIS_QUEUES_URL
    REDIS_STORAGE_SENTINEL_HOSTS
    REDIS_STORAGE_SENTINEL_ROLE
    REDIS_STORAGE_URL

    system-redis

    MESSAGE_BUS_NAMESPACE
    MESSAGE_BUS_SENTINEL_HOSTS
    MESSAGE_BUS_SENTINEL_ROLE
    MESSAGE_BUS_URL
    NAMESPACE
    SENTINEL_HOSTS
    SENTINEL_ROLE
    URL

    • Redis と Sentinel を設定する場合、backend-redis および system-redis の該当する URL フィールドには、redis://[:redis-password@]redis-group[/db] のフォーマットで Redis グループを指定します。ここで、[x] はオプションの要素 x を意味し、redis-passwordredis-group、および db 変数は適切な値に置き換えてください。

      redis://:redispwd@mymaster/5

    • SENTINEL_HOSTS フィールドは、以下のフォーマットの Sentinel 接続文字列のコンマ区切りリストです。

      redis://:sentinel-password@sentinel-hostname-or-ip:port
      • リスト内の各要素に関して、[x] はオプションの要素 x を意味し、sentinel-passwordsentinel-hostname-or-ip、および port 変数は適切な値に置き換えてください。

        :sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722

    • SENTINEL_ROLE フィールドの値は、master または slave のどちらかです。
  2. 最新バージョンのテンプレートを使用して、テンプレートを使用した OpenShift への 3scale のデプロイ に記載の手順に従って 3scale をデプロイします。

    1. backend-redis および system-redis がすでに存在するために表示されるエラーは無視します。

7.2.3. 3scale の非 HA デプロイメントの HA への移行

  1. HA 用 3scale の新規インストールのデプロイ に記載のとおり、すべてのフィールドを指定して backend-redis および system-redis シークレットを編集します。
  2. 以下の backend-redis 環境変数がバックエンド Pod に対して定義されていることを確認してください。

    name: BACKEND_REDIS_SENTINEL_HOSTS
      valueFrom:
        secretKeyRef:
          key: REDIS_STORAGE_SENTINEL_HOSTS
          name: backend-redis
    name: BACKEND_REDIS_SENTINEL_ROLE
      valueFrom:
        secretKeyRef:
          key: REDIS_STORAGE_SENTINEL_ROLE
          name: backend-redis
  3. 以下の system-redis の環境変数が system-(app|sidekiq|sphinx) Pod に対して定義されていることを確認してください。

    name: REDIS_SENTINEL_HOSTS
      valueFrom:
        secretKeyRef:
          key: SENTINEL_HOSTS
          name: system-redis
    name: REDIS_SENTINEL_ROLE
      valueFrom:
        secretKeyRef:
          key: SENTINEL_ROLE
          name: system-redis
    name: MESSAGE_BUS_REDIS_SENTINEL_HOSTS
      valueFrom:
        secretKeyRef:
          key: MESSAGE_BUS_SENTINEL_HOSTS
          name: system-redis
    name: MESSAGE_BUS_REDIS_SENTINEL_ROLE
      valueFrom:
        secretKeyRef:
          key: MESSAGE_BUS_SENTINEL_ROLE
          name: system-redis
  4. 指示に従って、テンプレートを使用した 3scale のアップグレード を続行します。

7.2.3.1. Redis Enterprise の使用

  1. 3 つの異なる redis-enterprise インスタンスで、OpenShift にデプロイされた Redis Enterprise を使用します。

    1. system-redis シークレットを編集します。

      1. 個別の値を MESSAGE_BUS_NAMESPACE および NAMESPACE に設定します。
      2. URLMESSAGE_BUS_URL を同じデータベースに設定します。
    2. backend-redis のバックエンドデータベースを REDIS_QUEUES_URL に設定します。
    3. backend-redis の 3 番目のデータベースを REDIS_STORAGE_URL に設定します。

7.2.3.2. Redis Sentinel の使用

  1. 3 つまたは 4 つの異なる Redis データベースで、Redis Sentinel を使用します。

    1. system-redis シークレットを編集します。

      1. 個別の値を MESSAGE_BUS_NAMESPACE および NAMESPACE に設定します。
      2. URL および MESSAGE_BUS_URL を適切な Redis グループに設定します (たとえば、redis://:redispwd@mymaster/5)。
      3. SENTINEL_HOSTS および MESSAGE_BUS_SENTINEL_HOSTS を、Sentinel ホストとポートのコンマ区切りリストに設定します (たとえば、:sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722)。
      4. SENTINEL_ROLE および MESSAGE_BUS_SENTINEL_ROLEmaster に設定します。
  2. バックエンドの backend-redis シークレットを、以下の値に設定します。

    • REDIS_QUEUES_URL
    • REDIS_QUEUES_SENTINEL_ROLE
    • REDIS_QUEUES_SENTINEL_HOSTS
  3. 3 番目のデータベースの変数を以下のように設定します。

    • REDIS_STORAGE_URL
    • REDIS_STORAGE_SENTINEL_ROLE
    • REDIS_STORAGE_SENTINEL_HOSTS

注記

  • system-app および system-sidekiq コンポーネントは、統計を取得するために back-end Redis に直接接続します。

    • 3scale 2.7 の時点で、これらのシステムコンポーネントは Sentinel を使用する際にも back-end Redis (ストレージ) に接続することができます。
  • system-app および system-sidekiq コンポーネントは、backend-redis ストレージ しか使用しません (backend-redis キューは使用しません)。

    • システムコンポーネントに加えた変更は、backend-redis ストレージと Sentinel の組み合わせをサポートします。