Redis クラスターで一般的に使用されるコマンドと手順

1. クラスターの特徴

1. クラスタアーキテクチャの特徴

(1) すべての Redis ノードは相互接続され (PING-PONG メカニズム)、バイナリ プロトコルが内部で使用されて伝送速度と帯域幅が最適化されます。

(2) ノードの障害は、クラスター内のノードの半分以上が障害を検出した場合にのみ有効になります。

(3) クライアントは、中間のプロキシ層を必要とせずに、redis ノードに直接接続されます。クライアントはクラスター内のすべてのノードに接続する必要はなく、クラスター内の使用可能な任意のノードに接続できます。

(4) redis-cluster はすべての物理ノードを [0-16383] スロット (ハッシュ スロット) にマップし、クラスターはノード <-> スロット <-> 値を維持する責任があります。

2. クラスター選択のフォールト トレランス:

(1) ノード障害選出プロセスには、クラスター内のすべてのマスターが参加します。半分以上のマスター ノードが現在検出されているマスター ノードと通信してタイムアウト (クラスター ノード タイムアウト) を検出した場合、現在のマスター ノードは死亡したものとみなされる。

(2) クラスター全体が使用できなくなるのはいつですか? (クラスター状態:失敗)

A: クラスター内のいずれかのマスターが停止し、現在のマスターにスレーブが存在しない場合。クラスターは障害状態に入ります。これは、クラスターのスロット マッピング [0-16383] が不完全な場合に障害状態に入ると理解することもできます。(redis-3.0.0.rcl は、cluster-require-full-coverage パラメーターを追加します。これはデフォルトでオフになっています。クラスター互換性部分をオンにすると失敗します)

B: 障害状態になっているスレーブ クラスターがあるかどうかに関係なく、クラスター内のマスターの半分以上が停止した場合。(クラスターが利用できない場合、クラスター上のすべての操作が利用できなくなり、(エラー) CLUSTERDOWN クラスターがダウンしていますエラーが受信されます)

3. クラスターの利点と欠点:

アドバンテージ:

マスター ノードがオフラインになると、スレーブ ノードが自動的にマスター ノードに昇格してクラスターを保存し、サービスの提供を継続します。

障害ノードが復元されると、そのノードは自動的にクラスターに追加され、スレーブ ノードになります。

欠点:

Redis レプリケーションは非同期メカニズムを使用するため、クラスターは自動フェイルオーバー プロセス中に書き込みコマンドを失う可能性があります。ただし、redis はこれら 2 つの操作 (クライアントへのコマンドの再開とスレーブ ノードへのコマンドのコピー) をほぼ同時に実行するため、実際にはコマンドが失われる可能性は非常に小さいです。

2. クラスタークライアントコマンド(redis-cli -c -p port)

クラスター
クラスター情報: クラスター情報を出力します。
クラスターノード: 現在クラスターに認識されているすべてのノードと、これらのノードに関する関連情報をリストします。
ノード
クラスタ ミート <ip> <ポート>: ip とポートで指定されたノードをクラスタに追加し、クラスタのメンバーにします。
クラスターforget <node_id>:node_idで指定されたノードをクラスターから削除します。
クラスタ複製 <node_id>: 現在のノードを、node_id で指定されたノードのスレーブノードとして設定します。
クラスタ saveconfig: ノード構成ファイルをハードディスクに保存します。
スロット
クラスタは、スロット <スロット> [スロット ...]: 1 つ以上のスロットを現在のノードに割り当てます。
クラスタ delslots <スロット> [スロット ... ]: 現在のノードに割り当てられている 1 つ以上のスロットを削除します。
クラスター フラッシュスロット: 現在のノードに割り当てられているすべてのスロットを削除し、現在のノードをスロットが割り当てられていないノードにします。
クラスタ セットスロット <スロット> ノード <ノード ID>: スロットをノード ID で指定されたノードに割り当てます。スロットが別のノードに割り当てられている場合は
、他のノードに最初にスロットを削除させてから割り当てます。
クラスタセットスロット <スロット> 移行 <node_id>: このノードのスロットを、node_id で指定されたノードに移行します。
クラスターセットスロット <スロット> importing <node_id>: スロットを、node_id で指定されたノードからこのノードにインポートします。
クラスタセットスロット <スロット> 安定: スロットのインポートまたは移行をキャンセルします。
キー
クラスターのキースロット <key>: キー key を配置するスロットを計算します。
クラスタ countkeysinslot <スロット>: スロットに現在含まれているキーと値のペアの数を返します。
クラスタ getkeysinslot <slot> <count>: count スロットのキーを返します。  

3. クラスタ内のマスターのオフラインとリカバリ

1. マスターがオフラインになると、対応するスレーバー ノードが自動的にマスター ノードになります。

2. 元のマスターは再起動後にスレーバー ノードになり、元のマスター ノードのスレーバー ノードになります。

おすすめ

転載: blog.csdn.net/tladagio/article/details/103594186