Menu Close

9.5.5.3. backend-redis と system-redis での 3scale オプションの復元

3scale を復元することで、backend-redissystem-redis が復元されます。これらのコンポーネントには以下があります。

*backend-redis: 3scale のアプリケーション認証とレート制限をサポートするデータベース。統計ストレージおよび一時ジョブストレージにも使用されます。*system-redis: 3scale のバックグラウンドジョブの一時ストレージを提供し、system-app Pod の Ruby プロセスのメッセージバスとしても使用されます。

backend-redis コンポーネント

backend-redis コンポーネントには、dataqueue の 2 つのデータベースがあります。デフォルトの 3scale デプロイメントでは、data および queues は、異なる論理データベースインデックス /0 および /1 で、Redis データベースにデプロイされます。data データベースの復元は問題なく実行されますが、queues データベースを復元すると、ジョブが重複してしまう可能性があります。

3scale では、ジョブの重複に関して、バックエンドワーカーがバックグラウンドジョブを数ミリ秒で処理します。最後のデータベーススナップショットの 30 秒後に backend-redis が失敗し、そのスナップショットを復元しようとすると、バックエンドには重複を防ぐためのシステムがないため、30 秒の間に発生したバックグラウンドジョブは 2 回実行されます。

このシナリオでは、/0 データベースインデックスにその他の場所に保存されないデータが含まれているため、バックアップを復元する必要があります。/0 データベースインデックスを復元すると、/1 データベースインデックスを復元する必要もあります。どちらか 1 つだけを復元することはできません。異なるインデックスの 1 つのデータベースではなく異なるサーバー上のデータベースを分離する場合、キューのサイズはほぼ 0 になるので、バックアップを復元せず、バックグラウンドジョブの一部を失わないようにすることが推奨されます。これは、ホスト型 3scale の設定に該当するため、両方に異なるバックアップおよび復元ストラテジーを適用する必要があります。

`system-redis` コンポーネント

3scale システムのバックグラウンドジョブの大半は冪等です。つまり、同一のリクエストは何回実行しても同じ結果を返します。

以下は、システムのバックグラウンドジョブによって処理されるイベントの例です。

  • 終了間近であるプランの試用期間、期限切れ間近のクレジットカード、アクティベーションのリマインダー、プランの変更、請求書の状態の変更、PDF 報告書などの通知ジョブ。
  • 請求や課金などの請求書作成。
  • 複雑なオブジェクトの削除。
  • バックエンドの同期ジョブ。
  • インデックス作成ジョブ (sphinx など)。
  • サニタイズジョブ (請求書 ID など)。
  • 監査、ユーザーセッション、期限切れのトークン、ログエントリーの消去や、非アクティブなアカウントの一時停止などの管理タスク。
  • トラフィックの更新。
  • プロキシー設定変更の監視とプロキシーデプロイメント。
  • バックグラウンドサインアップジョブ。
  • シングルサインオン (SSO) の同期、ルートの作成などの Zync ジョブ。

上記のバックグラウンドジョブのリストを復元する場合、3scale のシステムは復元された各ジョブの状態を維持します。復元が完了した後にシステムの整合性を確認することが重要です。