7.2. 3scale 用バックエンドコンポーネントの設定
3scale 管理者は、backend-cron
、backend-listener
、および backend-worker
のデプロイメント設定で、back-end
コンポーネントの環境変数に Redis HA (フェイルオーバー) を設定します。3scale の Redis HA には、これらの設定が必要です。
Redis と Sentinel を使用するには、3scale をデプロイする前に、ポイントする Redis を設定するためにすべてのフィールドを指定して system-redis
シークレットを作成する必要があります。3scale では、フィールドはバックエンドのパラメーターとしては提供されません。
7.2.1. backend-redis
と system-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
通信に関連するエントリーの場合。
手順
以下のフィールドを指定して、
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-password
、redis-group
、およびdb
変数は適切な値に置き換えてください。例
redis://:redispwd@mymaster/5
SENTINEL_HOSTS
フィールドは、以下のフォーマットの Sentinel 接続文字列のコンマ区切りリストです。redis://:sentinel-password@sentinel-hostname-or-ip:port
リスト内の各要素に関して、[x] はオプションの要素 x を意味し、
sentinel-password
、sentinel-hostname-or-ip
、およびport
変数は適切な値に置き換えてください。例
:sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722
-
SENTINEL_ROLE
フィールドの値は、master
またはslave
のどちらかです。
最新バージョンのテンプレートを使用して、テンプレートを使用した OpenShift への 3scale のデプロイ に記載の手順に従って 3scale をデプロイします。
-
backend-redis
およびsystem-redis
がすでに存在するために表示されるエラーは無視します。
-
7.2.3. 3scale の非 HA デプロイメントの HA への移行
-
HA 用 3scale の新規インストールのデプロイ に記載のとおり、すべてのフィールドを指定して
backend-redis
およびsystem-redis
シークレットを編集します。 以下の
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
以下の
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
- 指示に従って、テンプレートを使用した 3scale のアップグレード を続行します。
7.2.3.1. Redis Enterprise の使用
3 つの異なる
redis-enterprise
インスタンスで、OpenShift にデプロイされた Redis Enterprise を使用します。system-redis
シークレットを編集します。-
個別の値を
MESSAGE_BUS_NAMESPACE
およびNAMESPACE
に設定します。 -
URL
とMESSAGE_BUS_URL
を同じデータベースに設定します。
-
個別の値を
-
backend-redis
のバックエンドデータベースをREDIS_QUEUES_URL
に設定します。 -
backend-redis
の 3 番目のデータベースをREDIS_STORAGE_URL
に設定します。
7.2.3.2. Redis Sentinel の使用
3 つまたは 4 つの異なる Redis データベースで、Redis Sentinel を使用します。
system-redis
シークレットを編集します。-
個別の値を
MESSAGE_BUS_NAMESPACE
およびNAMESPACE
に設定します。 -
URL
およびMESSAGE_BUS_URL
を適切な Redis グループに設定します (たとえば、redis://:redispwd@mymaster/5
)。 -
SENTINEL_HOSTS
およびMESSAGE_BUS_SENTINEL_HOSTS
を、Sentinel ホストとポートのコンマ区切りリストに設定します (たとえば、:sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722
)。 -
SENTINEL_ROLE
およびMESSAGE_BUS_SENTINEL_ROLE
を master に設定します。
-
個別の値を
バックエンドの
backend-redis
シークレットを、以下の値に設定します。-
REDIS_QUEUES_URL
-
REDIS_QUEUES_SENTINEL_ROLE
-
REDIS_QUEUES_SENTINEL_HOSTS
-
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 (ストレージ) に接続することができます。
-
3scale 2.7 の時点で、これらのシステムコンポーネントは Sentinel を使用する際にも
system-app および system-sidekiq コンポーネントは、
backend-redis
ストレージ しか使用しません (backend-redis
キューは使用しません)。-
システムコンポーネントに加えた変更は、
backend-redis
ストレージと Sentinel の組み合わせをサポートします。
-
システムコンポーネントに加えた変更は、