Tair (Redis OSS-compatible) は、クラスターアーキテクチャを使用するマルチレプリカインスタンスを提供します。このアーキテクチャでは、読み取り/書き込み分離を有効にすることもできます。この設計により、オープンソース Redis のシングルスレッドのボトルネックが解消され、現代のアプリケーションにおける大容量かつ高性能の要求に対応できます。クラスターアーキテクチャは、プロキシモードと直接接続モードという 2 つの接続モードをサポートしています。このトピックでは、お客様のビジネスニーズに最も適したモードを選択できるよう、両方のモードについて説明します。
プロキシモード (推奨)
プロキシモードは、クラスターインスタンスへの接続と使用方法を簡素化し、スタンダードアーキテクチャのインスタンスと同じ方法で接続できるようにします。プロキシノードは、クライアントリクエストを正しいデータシャードに自動的にルーティングします。また、プロキシノードはホットキーキャッシュや自動フェイルオーバーなどの高度な機能も提供します。詳細については、「Tair Proxy の機能」をご参照ください。
以下の図と表は、プロキシモードのサービスアーキテクチャとコンポーネントについて説明しています。
マルチレプリカ
プロキシモードのマルチレプリカクラスターのサービスアーキテクチャ
プロキシモードにおけるクラスターアーキテクチャのコンポーネント
コンポーネント | 説明 |
プロキシノード | クライアントリクエストを適切なデータシャードにルーティングします。クラスターには複数のプロキシノードが含まれており、サービスの提供と障害復旧のための冗長性を確保します。 |
データシャード | 各データシャードは、1 つのマスターノードと 1~4 つのレプリカノードで構成される高可用性アーキテクチャを使用し、それぞれ異なる物理サーバーにデプロイされます。レプリカノードはセカンダリ アベイラビリティゾーンにデプロイすることも可能です。複数のレプリカノードを使用することで、障害復旧能力が向上し、データ損失のリスクが低減します。 |
高可用性 (HA) | マスターノードに障害が発生した場合、システムは 30 秒以内に自動的にレプリカノード へフェイルオーバーし、サービス可用性とデータの信頼性を確保します。インスタンスが 2 つのアベイラビリティゾーンにまたがってデプロイされており、プライマリ ゾーンにレプリカノードが存在する場合、システムはそのレプリカノードへのフェイルオーバーを優先します。これにより、ゾーンをまたぐアプリケーション アクセスによるレイテンシーの増加を防ぎます。 |
読み書き分離の有効化
クラウドネイティブ クラスターアーキテクチャのプロキシモードは、読み書き分離もサポートしています。読み取りトラフィックが多く、マスターノードのパフォーマンス上限を超える場合に、この機能を有効にできます。詳細については、「クラスターインスタンスの読み書き分離の有効化」をご参照ください。
直接接続モード
直接接続モードでは、ネイティブの Redis Cluster と同じ方法でクラスターに接続します。初回接続時に、DNS はクライアントの接続アドレスをランダムなデータシャードの 仮想 IP アドレス (VIP) に解決します。その後、クライアントは Redis Cluster プロトコルを使用してすべてのデータシャードにアクセスします。直接接続モードのクラスターアーキテクチャは、マルチレプリカ 構成をサポートしますが、読み書き分離はサポートしていません。以下の図は、このモードのサービスアーキテクチャを示しています。
直接接続モードにおけるクラスターのサービスアーキテクチャ
ダイレクト接続モードは、プロキシモードとは大きく異なります。使用上の注意および接続例については、「ダイレクト接続モードを使用してインスタンスに接続する」をご参照ください。
ユースケース
大容量データ
スタンダードアーキテクチャと比較して、クラスターアーキテクチャはストレージ容量を最大 16 TB (64 GB × 256 シャード) まで拡張できます。これにより、成長するアプリケーションの要求をサポートします。
高リクエスト負荷
スタンダードアーキテクチャでは、高いリクエスト 負荷を処理できません。単一シャードのパフォーマンスボトルネックを克服するには、マルチシャード デプロイメントが必要です。
マスターノードが読み取りリクエストで過負荷になっている場合は、クラスターアーキテクチャで読み書き分離を有効にできます。
説明プロキシモードのクラウドネイティブ クラスターインスタンスのみが読み書き分離をサポートします。この機能を使用するには、新しいクラスターインスタンスを作成し、Data Transmission Service (DTS) を使用してデータを同期することで、他のインスタンス タイプからデータを移行できます。
高スループットが求められるアプリケーション
スタンダードアーキテクチャと比較して、クラスターアーキテクチャではシャードを追加することでスループットをリニアにスケーリングできます。これにより、ホットデータの読み取りや高スループットのワークロードの処理をより強力にサポートします。
複数キー操作が少ないアプリケーション
クラスターは分散アーキテクチャを使用するため、複数キーに対する操作では、すべてのキーが同じスロットに存在する必要があります。これにより、特定の複数キー操作が制限されます。詳細については、「クラスターインスタンスおよび読み書き分離インスタンスのコマンド制限」をご参照ください。
レイテンシーセンシティブなアプリケーション
2 つのアベイラビリティゾーンにまたがってデプロイされたインスタンスの場合、プライマリ アベイラビリティゾーンにレプリカノードを追加できます。たとえば、プライマリ ゾーンに 1 つのマスターノードと 1 つのレプリカノードを配置し、セカンダリ ゾーンにもう 1 つのレプリカノードを配置することができます。これにより、障害復旧の信頼性が向上し、フェイルオーバー後のゾーンをまたぐアクセスによるレイテンシー スパイクを防ぎます。
注意事項
クラウドネイティブ クラスターインスタンスでは、プロキシモードと直接接続モードを同時に使用することはできません。プロキシモードを使用することを推奨します。
[クラシック] クラスターアーキテクチャは、デュアルレプリカ 構成のみをサポートし、読み書き分離はサポートしていません。
クラウドネイティブ クラスターインスタンスでは、接続モードを直接接続モードからプロキシモードに直接切り替えることはサポートされていません。コンソールにはそのような切り替えエントリはありません。切り替えが必要な場合は、プロキシモードで新しいクラスターインスタンスを作成し、DTS を使用して元のインスタンスから新しいインスタンスにデータを移行し、データの一貫性を確認してから、アプリケーションの接続エンドポイントを新しいインスタンスのプロキシモードのエンドポイントに切り替えます。
クラシック クラスターインスタンスは、デフォルトでプロキシモードを提供します。直接接続モードを使用する必要がある場合は、コンソールで手動で有効にする必要があります。
クラスター設定の変更
レプリカノードを追加または削除するには、インスタンスの ノード管理 ページに移動し、変更 をクリックします。
リードレプリカを追加するには、インスタンスの ノード管理 ページに移動し、読み書き分離 スイッチを有効にしてから、変更 をクリックしてリードレプリカを追加します。
シャードを追加するには、インスタンス詳細ページに移動し、右上隅から を選択します。
シャードの仕様を変更するには、インスタンス詳細ページに移動し、右上隅から を選択します。
よくある質問
Tair クラスターアーキテクチャとオープンソース Redis Cluster の違いは何ですか?
オープンソース Redis Cluster と比較して、Tair (Redis OSS-compatible) のクラスターアーキテクチャには、セキュリティ、カーネル パフォーマンス、負荷分散、スケーラビリティの点で以下の利点があります。
カーネル パフォーマンスの強化:Tair のクラスターアーキテクチャには、以下のような多数のカーネル 最適化が含まれています。
ゴシップ ブロードキャスト ストームを発生させることなく、より高速な障害復旧が可能です。
スケールインまたはスケールアウト 中、システムはサービスへの影響を最小限に抑えながら、シャード データを自動的にリバランスします。
多数の短命な接続のネイティブ サポート。
O&M の簡素化:サーバー上のセルフマネージド Redis データベースと比較して、Tair のクラスターインスタンスは、多次元のアクセス制御、柔軟なスケーリング、包括的な監視メトリクス、およびさまざまな高可用性と障害復旧ソリューションを提供します。詳細については、「Tair とセルフマネージド Redis の比較」をご参照ください。
プロキシモードのサポート:Tair のクラスターインスタンスは、オプションのプロキシモードを提供します。このモードは、アーキテクチャを抽象化するプロキシノードを提供し、スタンダード インスタンスのようにクラスターアーキテクチャ インスタンスを使用できるようにします。プロキシノードは、負荷分散、リクエスト ルーティング、リードレプリカ トラフィックの管理、ホットキー メタデータ キャッシュ、およびクラスターアーキテクチャにおける複数データベース (DB) もサポートします。詳細については、「Tair Proxy の機能」をご参照ください。
アップグレード後のコード変更
プロキシモードのクラスターインスタンスにアップグレードする場合、コードを変更する必要はありません。プロキシノードが基盤となるクラスターの複雑さを抽象化するため、標準インスタンスと同様にインスタンスを使用できます。これにより、アプリケーションの変更コストを大幅に削減できます。
直接接続モードのクラスターインスタンスにアップグレードする場合、Redis Cluster 対応のクライアントを使用するように接続プール コードを修正する必要があります。
また、クラスターアーキテクチャにおける複数キー (クロススロット) コマンド、トランザクション、および Lua スクリプトのルールを理解し、それに従う必要があります。詳細については、「クラスターアーキテクチャのコマンド制限」をご参照ください。
自動データリバランス
はい。スタンダードアーキテクチャからクラスターアーキテクチャにアップグレードする場合、またはクラスターインスタンスでシャードを追加または削除する場合、サービスは自動的にデータ分散を分析し、データをリバランスします。手動での介入は不要です。
さらに、プロキシモードはシームレススケーリングをサポートします。直接接続モードでも、クライアントが MOVED リダイレクトを正しく処理すれば、シームレススケーリングを実現できます。