Tair (Redis OSS-compatible) は、可用性要件に応じて 3 段階のディザスタリカバリ機能を提供します — シングルゾーン高可用性 (HA) から、クロスリージョンアクティブ地理的冗長性まで対応しています。
| ソリューション | 保護範囲 | フェイルオーバー動作 | 推奨ユースケース |
|---|---|---|---|
| シングルゾーン高可用性 (HA) | 1 つのゾーン内におけるマシンレベルの障害 | 同一ゾーン内のノード間で自動フェイルオーバーが実行される | 標準的なワークロード(ベースライン可用性要件を満たすもの) |
| ゾーンディザスタリカバリ | ゾーンレベルの障害(停電、ネットワーク障害など) | 別のゾーンに配置されたレプリカへ自動フェイルオーバーが実行される | 単一リージョン内でゾーンレベルの耐障害性を必要とするワークロード |
| クロスリージョンディザスタリカバリ | リージョンレベルの障害およびクロスリージョン遅延 | 同期チャネルを介して管理される、リージョン間リアルタイムレプリケーション | グローバル展開、ジオディザスタリカバリ、アクティブ地理的冗長性 |
シングルゾーン高可用性 (HA)
すべての Tair インスタンスは、デフォルトでシングルゾーン高可用性 (HA) アーキテクチャで実行されます。HA システムはマスターノードおよびレプリカノードを継続的にモニターし、単一障害点 (SPOF) を防止するために自動フェイルオーバーをトリガーします。
シングルゾーン HA をサポートするデプロイメントアーキテクチャは以下の 3 種類です。
標準マスターレプリカアーキテクチャ
標準マスターレプリカインスタンスでは、1 つのマスターノードと 1 つのレプリカノードが実行されます。HA システムがマスターノードの障害を検出すると、ワークロードをレプリカノードへ切り替え、そのノードを新しいマスターノードとして昇格させます。元のマスターノードが復旧した後は、レプリカとして再開します。
マルチレプリカクラスタアーキテクチャ
データはシャード単位で分散されます。各シャードには、異なるマシン上に配置された 1 つのマスターノードと複数のレプリカノードがあります。マスターノードが障害を起こした場合、HA システムは同一シャード内のレプリカをマスターノードへ昇格させます。
読み書き分離アーキテクチャ
HA システムはすべてのノードをモニターします。フェイルオーバー動作は、障害が発生したノードの種類によって異なります。
マスターノード障害: HA システムはレプリカをマスターノードへ昇格させ、ルーティングおよび重み情報も更新します。
読み取り専用レプリカ障害: HA システムは、読み取りリクエストを処理するための代替読み取り専用レプリカを作成します。
また、プロキシノードは各読み取り専用レプリカをリアルタイムでモニターし、以下の状況でトラフィックのルーティングを停止します。
異常状態: プロキシノードは当該レプリカへのトラフィックを削減します。設定された試行回数を超えて再接続に失敗した場合、レプリカが完全に復旧するまで、プロキシノードは当該レプリカへのトラフィックルーティングを停止します。
フルデータ同期中: 同期が完了するまで、プロキシノードは当該レプリカへのトラフィックルーティングを一時停止します。
ゾーンディザスタリカバリ(マルチゾーン)
ゾーンディザスタリカバリでは、マスターノードおよびレプリカノードを同一リージョン内の異なる 2 つのゾーンにデプロイします。マスターノードをホストするゾーンが停電やネットワーク障害により利用不能になった場合、HA システムは他のゾーン内のレプリカを自動的にマスターノードへ昇格させます。
ゾーンディザスタリカバリを有効化するには、インスタンス作成時にマルチ AZ デプロイモードを選択してください。設定手順の詳細については、「ステップ 1:インスタンスの作成」をご参照ください。

レプリケーションの仕組み
レプリカノードはマスターノードと同一の仕様でプロビジョニングされ、専用回線を介してデータを同期します。
Tair は、MySQL のグローバルトランザクション ID (GTID) に類似したグローバル操作識別子 (OpID) を使用して、同期オフセットを追跡します。ロックフリーのバックグラウンドスレッドが OpID を活用し、正しい位置から同期を再開します。AOF バイナリログ (binlog) はマスターノードからレプリカノードへ非同期でレプリケーションされ、インスタンスのパフォーマンスを保護するためにレプリケーションスループットをスロットルできます。
フェイルオーバー時には、システムは設定サーバに対して API オペレーションを呼び出し、プロキシのルーティング情報を更新してトラフィックを新しいマスターノードへ再ルーティングします。
クロスリージョンディザスタリカバリ
Tair 向け Redis グローバル分散キャッシュは、クロスリージョンデータアクセスに伴う遅延を低減し、ジオディザスタリカバリおよびアクティブ地理的冗長性の基盤を提供します。

分散インスタンスは、それぞれ異なるリージョンに配置された複数のサブインスタンスで構成されます。各サブインスタンスは同期チャネルを介してリアルタイムでデータを同期します。チャネルマネージャーはサブインスタンスの健全性をモニターし、サブインスタンス内でのマスターレプリカスイッチオーバーなどの例外を処理します。
主な機能:
アプリケーション層の冗長化不要: サブインスタンスを直接作成するか、同期対象のインスタンスを明示的に指定できます。これにより、アプリケーションのロジックはビジネス機能に集中でき、レプリケーション管理の負担から解放されます。
ジオレプリケーション: ジオディザスタリカバリおよびアクティブ地理的冗長性を、初期設定のまま即座に利用可能です。
代表的なユースケース: マルチメディア、ゲーム、EC 分野におけるグローバル展開 — ジオディザスタリカバリ、アクティブ地理的冗長性、近隣アプリケーションからのアクセス、負荷分散など。
アーキテクチャの詳細および設定手順については、「Redis グローバル分散キャッシュ」をご参照ください。
障害の処理方法
障害はノードレベルまたはゾーンレベルに分類され、インスタンスのデプロイメント方法に応じて対応が異なります。
ノード障害
| デプロイメント | マスターノード障害時の動作 |
|---|---|
| シングルゾーン、マルチレプリカ | システムは、レプリケーション遅延が最も小さいレプリカをマスターノードへ昇格させ、ルーティング関係を更新します。 |
| マルチゾーン | システムは別のゾーン内のレプリカをマスターノードへ昇格させ、ルーティング関係を更新します。インスタンスと依存サービス間のクロスゾーンアクセスが一時的に増加する可能性があります。 |
マルチゾーンクラスターでは、プライマリゾーンおよびセカンダリゾーンの両方にレプリカが存在する場合、クロスゾーンアクセスを回避するため、ワークロードは優先的にプライマリゾーン内のレプリカへ切り替えられます。
ゾーンレベル障害
停電や火災などのゾーンレベル障害により、データセンター全体がオフラインになります。
| デプロイメント | 影響 | 復旧方法 |
|---|---|---|
| シングルゾーン | インスタンスが利用不能になります。 | ゾーンの復旧を待つか、過去のバックアップデータから別のゾーンに新規インスタンスを作成します。 |
| マルチゾーン | 健全なゾーン内のレプリカへ自動フェイルオーバーがトリガーされます。 | 手動による介入は不要です。 |
ダウンタイムを最小限に抑えるためには、複数のゾーンにまたがってデプロイし、各ゾーンに複数のレプリカノードを作成することを推奨します。ただし、障害発生確率、業務データの重要度、コストとのバランスを考慮してください。
Redis グローバル分散キャッシュでは、単一のサブインスタンスの障害が他のサブインスタンスの可用性に影響しません。サブインスタンスを複数のゾーンに分散してデプロイすることで、単一のサブインスタンス障害によるデータ書き込み失敗を防止できます。