最近、多くの友人が私を友人として追加し、Redis クラスターの設定に関する問題について質問してきました。以前書いた「Docker ベースの Redis クラスターの設定」という記事に何か問題があるに違いないと思ったので、以前の記事を数分かけて閲覧し、次の質問をまとめました。 Redis の数が少なすぎるため、インスタンスが 3 つしか作成されません。インスタンスが 3 つしかないため、それらはすべてマスター ノードにしかなれず、クラスターのマスター スレーブ関係を反映できません。マスター スレーブ クラスターを構築するにはどうすればよいでしょうか。スレーブノードを割り当てるにはどうすればいいですか? 前回の記事に基づいて、これらの質問を簡単に説明したいと思います。この記事はDocker + Redis 5.0.5バージョンに基づいており、クラスターモードを介して6つのredisインスタンスのマスタースレーブクラスターを作成します。もちろん、記事では対応するパラメータの説明を示します。そのため、9つのインスタンスのクラスターを作成する場合でも、方法は同じです。 1. Redisイメージを取得するRedis: バージョン 5.0.5 に基づいて、次の手順を実行します。 docker pull redis:5.0.5 2. 6つのRedisコンテナを作成する6 つの Redis コンテナを作成します。
実行コマンドは次のとおりです。 docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379 docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380 docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381 docker create --name redis-node4 --net host -v /data/redis-data/node4:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-4.conf --port 6382 docker create --name redis-node5 --net host -v /data/redis-data/node5:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-5.conf --port 6383 docker create --name redis-node6 --net host -v /data/redis-data/node6:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-6.conf --port 6384 いくつかのパラメータの説明:
コマンド実行のスクリーンショット: 3. Redisコンテナを起動する実行コマンドは次のとおりです。 docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6 起動時のスクリーンショットは次のとおりです。 4. Redisクラスターを構築する任意の Redis インスタンスを入力します。 # ここでは redis-node1 インスタンスを例にとります docker exec -it redis-node1 /bin/bash コンポーネント クラスターのコマンドを実行します。 # クラスターを構築します。10.211.55.4 は現在の物理マシンの IP アドレスです。redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 10.211.55.4:6383 10.211.55.4:6384 --cluster-replicas 1 実行コマンドのスクリーンショットは次のとおりです。 作成が成功したら、redis-cli を使用してクラスター ノードの情報を確認します。 ルート@CentOS7:/data# redis-cli 127.0.0.1:6379> クラスターノード 実行コマンドのスクリーンショットは次のとおりです。 5. Redisクラスタ構築についてクラスターを作成するコマンドに戻りましょう。 redis-cli --cluster 作成 10.211.55.4:6379~6384 --cluster-replicas 1 このパラメータ--cluster-replicas 1 に特に注意してください。パラメータの後の数字は、マスターとスレーブの比率を示します。たとえば、ここでの 1 は、マスターとスレーブの比率が 1:1 であることを意味します。これは何を意味するのでしょうか? つまり、1 つのマスター ノードは複数のスレーブ ノードに対応します。現在インスタンスは 6 つあるため、マスター スレーブの割り当てはマスター ノード 3 つとスレーブ ノード 3 つになります。 クラスターの堅牢性を確保するには、少なくとも 3 つのマスター ノードが必要です。 --cluster-replicas 2 の場合はどうなりますか? すると、マスターとスレーブの比率は 1:2 となり、つまり 1 つのマスター ノードが 2 つのスレーブ ノードに対応します。 つまり、3 (マスター) + 6 (スレーブ) = 9 個の Redis インスタンスです。 Redis インスタンスが 9 個未満であるが、パラメータが 2 に指定されている場合はどうなりますか? エラーメッセージは次のとおりです。 プロンプトは非常に明確で、Redis クラスターには少なくとも 3 つのマスター ノードが必要です。次に、スレーブ ノードが 6 つ必要になるため、最終的には少なくとも 9 つのノードが必要になります。 わかりました。少なくとも 3 つのマスター ノードという要件は続けませんが、4 つのマスター ノードと 2 つのスレーブ ノードがあれば十分だと思います。 4 つのマスターノードがあなたのニーズを満たします: # 起動した Redis インスタンスを入力します。ここでは redis-node1 インスタンスを例に挙げます。docker exec -it redis-node1 /bin/bash クラスターを構築するには、次のコマンドを実行します。 redis-cli --cluster を作成します 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 --cluster-replicas 0 スレーブなしで 4 つのマスターを指定します。つまり、マスターは 4 つになります。 残りの 2 つのスレーブ ノードはどうなりますか?手動で追加します。 追加方法は?手動で追加してください! これらのマスター ノードの ID が表示されていますか? スレーブをそれらに割り当てるだけです。 以下のコマンドを続けて実行します。 redis-cli --cluster add-node 10.211.55.4:6383 10.211.55.4:6379 --cluster-slave --cluster-master-id b0c32b1dae9e7b7f7f4b74354c59bdfcaa46f30a redis-cli --cluster add-node 10.211.55.4:6384 10.211.55.4:6379 --cluster-slave --cluster-master-id 111de8bed5772585cef5280c4b5225ecb15a582e 2 つの Redis インスタンスは他のマスター ノードに接続されます。 最後に、redis-cli に入り、クラスター ノードを通じてノード情報を表示します。 Docker ベースの Redis マスタースレーブ クラスターの実装に関するこの記事はこれで終わりです。Docker Redis マスタースレーブ クラスターの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSSの省略記号とパディングを組み合わせた場合の問題の詳細な説明
ここでは比較的簡単なインストール方法のみを紹介します。 1. yumを使用してインストールするyum...
需要シナリオ:上司は、クローラーを使用してMySQLデータベースにデータを書き込んだり更新したり...
1. Dockerがイメージをプルするdocker pull mysql (デフォルトで最新バージョ...
MySQL SQL ステートメントにコメントを追加できます。MySQL SQL ステートメントのコメ...
目次font-faceでフォントを正しく宣言するフォントをプリロードするフォントをホストするにはli...
目次1. まず最初のリンクを取得する2. ブラウザでこのリンクを開いてください3. アドレスを開くと...
Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...
導入: Lambda Probe (旧称 Tomcat Probe) は、Apache Tomcat...
1. MySQL jdbc ドライバー (mysql-connector-java-5.1.28.j...
この記事のシナリオと組み合わせて、Nginx と Java 環境 (SpringBoot プロジェク...
MySQL でデータを削除する方法は 2 つあります。1 つは DELETE ステートメント、もう ...
MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現...
序文この記事はかなり詳細で、少し面倒です。他のチュートリアル ドキュメントでは多くの手順が省略されて...
1. はじめに外部キー制約を使用するかどうかという話題は、すでに決まり文句になっています。学校では、...
Js での 2 次元配列の作成:まず、JavaScript は 1 次元配列のみをサポートしています...