次のコラム Redis チュートリアル では、Redis の 3 つのクラスター モード (クラスター クラスター モード) を紹介します。
1. Redis クラスターのデプロイメントを以前に見たことがありますか? 3つのソリューションがありますが、最もパフォーマンスが高いのは、redis が公式に推奨している redis-cluster モードです。
1. redis-cluster
A. 分散化の考え方を使用し、中央ノードはなく、ハッシュ スロット方式を使用して結合します。 16348 ハッシュ。スロットはすべてのノードをカバーします。保存されているキー値ごとに、CRC16 (KEY) &16348=slot を使用して、対応するハッシュ スロット を取得し、キーにアクセスするときにそのハッシュ スロットを見つけます。どのノードで、現在のアクセス ノードは、実際にこのハッシュ スロットが割り当てられているノードからデータを取得します。ノードは軽量プロトコル通信を使用して、帯域幅の使用量を削減し、高いパフォーマンスを実現します。ロード バランシングと高可用性、自動フェイルオーバーとサポートを自動的に実装します。ダイナミックな拡張を実現します。 B. マスター/スレーブ構成も内部で設定する必要があり、センチネル モードも内部で使用されます。ノードの半数が異常なノードを見つけた場合、異常なノードのステータスを変更することを共同で決定します。変更されたノードがマスター ノードの場合、対応するスレーブ ノードが自動的にマスター ノードに置き換わります。元のマスター ノードがオンラインになると、スレーブ ノードになります。 クラスター内のマスターにスレーブ ノードがない場合、クラスターのスロット マッピングが不完全であるため、マスターがハングアップした後、クラスター全体が障害状態になります。クラスター内のマスターの半分以上が停止すると、スレーブが存在するかどうかに関係なく、クラスターは障害状態になります。 C. 公式推奨によれば、クラスターの展開には少なくとも 3 つのマスター ノードが必要です。次に、デプロイメントを開始します2. 各パスに、構成ファイル
を追加します: redis.conftwo 、クラスター構成/usr/software/redis/redis-cluster/1002
/usr/software/redis/redis-cluster/1003
/usr/software/redis/redis-cluster/1004
/usr/software/redis/redis-cluster/1005
/usr/software/redis/redis-cluster /1006
2. redis.conf
vim redis.conf
#を変更します。
次のキーと値のペアを変更します ################################## NETWORK #####################################
#bind 127.0.0.1protected-mode no
port 1001################################# GENERAL #####################################
daemonize yes
pidfile "/var/run/redis_1001.pid"logfile "/usr/software/redis/redis-cluster/1001/log/redis.log"################################ SNAPSHOTTING ################################dir "/usr/software/redis/redis-cluster/1001/data"################################ REDIS CLUSTER ###############################
cluster-enabled yes
cluster-config-file nodes-1001.conf
cluster-node-timeout 15000################################## SECURITY ###################################
requirepass "ww"
port 100x"/var/run/redis_100x.pid"
logfile "/usr/software/redis/redis-cluster/100x/log/redis.log""/usr/software/redis/redis-cluster/100x/data"-config-file nodes-100x.conf
1. redis-server /usr/software/redis/redis-cluster/1001/redis.conf ... を使用してすべてのノードを起動します
注:
Redis-cli は、redis5.0 以降のクラスターの作成に使用されます。以前のバージョンでは redis-trib.rb を使用していますが、ruby ソフトウェアのインストールが比較的複雑でしたが、以前のバージョン 5.0 に比べて追加のソフトウェアをインストールする必要がなく便利です。詳細については、redis 公式 Web サイトを参照してください。 https://redis.io/topics/cluster-tutorialクラスターの作成コマンド: ここで、cluster-replicas 1 はスレーブの数を表します。 1 つのマスターの後、1 は 1 つのスレーブ ノードを表します
redis-cli --cluster create 127.0.0.1:1001 127.0.0.1:1002 127.0.0.1:1003 127.0.0.1:1004 127.0.0.1:1005 127.0.0.1:1006 --cluster-replicas 1 -a ww
パスワードを追加する -a ww がないため、初回はクラスターの作成が失敗します。
次の内容は次のとおりです。プロセス中にプロンプトが表示されたら、「yes」と入力して続行します。 ;
上記の構成を設定できますか? (受け入れるには「yes」と入力します): yes
クラスター自動割り当ての結果は次のとおりです:
3. クラスターが正常に作成されたかどうかを確認します最初にマスターとスレーブのペアを確認します。
# #実行: redis-cli -c -p 1001 -a ww
データは 1002 ノードに自動的に割り当てられ、接続も 1002 ノードに転送されます。 1002 ノード4. フェイルオーバーの確認
結論としては、マスター ノードに障害が発生すると、下位のスレーブ ノードがマスター ノードにアップグレードされ、マスター ノードのスロットが引き継がれます。古いマスター ノードがオンラインになった後は、そのスレーブ ノードとしてのみ機能します。
1001 を強制終了すると、ノード 1004 からマスターに変換されたことがわかります。
1001 を再起動すると、スレーブ ノードになります
以上がRedis の 3 つのクラスター モードの紹介 (Cluster クラスター モード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。