この記事では、主に Redis クラスターを構築する方法と、その過程で注意する必要がある問題について説明します。非常に優れているので、必要な方は参考にしてください。
ここでは、Linux 仮想環境で説明します。 6 ノードの Redis 疑似クラスターを構築するための考え方は非常に簡単で、仮想マシン上で 6 つの Redis インスタンスを開き、各 Redis インスタンスに独自のポートがあります。この場合、これは 6 台のマシンをシミュレートし、これらの 6 つのインスタンスを使用して Redis クラスターを構築することに相当します。
前提条件: redis がインストールされており、ディレクトリは /usr/local/redis-4.0.1 です。そうでない場合は、「Windows での redis のインストール」「Linux での redis のインストール」の記事を参照してください。スクリプトがあるので、このスクリプトを実行するにはRuby環境が必要です。 redis ソース コードの src ディレクトリ内の redis-trib.rb に対応する redis-trib.rb は、redis クラスターを管理するために redis によって正式に開始されたツールであり、redis によって提供されるクラスター コマンドに基づいており、単純なコマンドにカプセル化されています。 、便利で実用的な操作ツール。なので
ruby環境をインストール: 1.yum install Ruby
yum install ruby
2.yum install rubygems
3.gem install redis
Centos默认支持ruby到2.0.0,redis需要最低是2.2.2。解决办法是 先安装rvm 再把ruby版本升级到2.3.3
1.sudo yum install curl
2.安装rvm
curl -L get.rvm.io | bash -s stable
3.
source /usr/local/rvm/scripts/rvm
4.查看rvm库中已知的ruby版本
rvm list known
5.安装一个ruby版本
rvm install 2.3.3
6.使用一个ruby版本
rvm use 2.3.3
7.卸载一个已知版本
rvm remove 2.0.0
8.查看版本
ruby --version
9.再安装redis
gem install redis
yum install Rubygems
3.
gem install redis
Centos はデフォルトで Ruby から 2.0.0 をサポートしており、Redis は最低 2.2.2 を必要とします。解決策は、最初に RVM をインストールしてから、Ruby バージョンを 2.3.3 にアップグレードすることです
1.sudo yum installcurl
2. rvm をインストールします
curl -L get。 rvm.io | bash -s 安定版
3. source /usr/local/rvm/scripts/rvm
4. RVM 内の既知の Ruby バージョンを確認しますlibrary
rvm list known
rvm install 2.3.3
6.rubyバージョンを使用します
rvm use 2.3.3
7. 既知のバージョンをアンインストールします
gem install redis
redisクラスター構築
redis-clusterディレクトリを作成し、 redis-8001、redis-8002、redis-8003 ノード ディレクトリを作成し、redis-conf を個別にコピーします。 ノード ディレクトリに移動します
それぞれのノードは 1 つのマシン (192.16819.129) 上にあるため、各インスタンスには同時に異なるポートが必要です。AOF モードをオンにします。バックグラウンドモードをオンにする
クラスターの作成
redis-trib.rbには以下の機能があることがわかります:
create: クラスターを作成します
check: クラスターを確認します
info: クラスター情報を表示します
fix : クラスターを修復します
reshard: スロットのオンライン移行
rebalance: クラスターノードのスロット数のバランスを調整します
🎜🎜🎜add-node: クラスターに新しいノードを追加します🎜🎜🎜🎜del-node: 削除クラスターからノードを削除します🎜🎜🎜🎜 set-timeout: クラスターノード間のハートビート接続のタイムアウトを設定します🎜🎜🎜🎜call: クラスター内のすべてのノードでコマンドを実行します🎜🎜🎜🎜import: 外部 Redis データをクラスターにインポートします🎜redis-trib.rb には主に 2 つのカテゴリがあります: ClusterNode
和 RedisTrib
。 ClusterNode
保存了每个节点的信息, RedisTrib
は redis-trib.rb の各機能の実装です
注: 少なくとも 3 つのマスター クラスター ノードを作成するように求められますが、6 つ作成されます。実際、操作中に作成したノードは 3 つだけなので、Redis クラスターを作成するときは少なくとも 3 つのマスター ノードが必要であり、それは奇数である必要があると結論付けることができます。そのため、怠けずにさらに 3 つ作成してください。 。
特記事項: ここで重要なのは、オプションのレプリカ パラメータです。 --replicas 2 は、各マスターに 2 つのスレーブを割り当てることを意味し、必要なスレーブの数を意味します。このパラメータを入力しなくても正常に作成できるため、マスターは 3 つあります。レプリカパラメータについては後ほど紹介します
まず、 --replicas 1 1 は実際には比率を表しており、マスターノードの数/スレーブノードの数の比率です。クラスターを作成するとき、どのノードがマスター ノードになるのか考えてみてください。どのノードがスレーブノードですか?答えは、コマンド内の IP:PORT の順序に従い、最初に 3 つのマスター ノード、次に 3 つのスレーブ ノードが続くということです。
次に、写真のスロットの概念に注目してください。 Redis クラスターの場合、slot はデータを保存する場所であり、スロットです。各マスターにはスロット範囲がありますが、スレーブにはありません。 Redis クラスターでは、マスターは読み取りと書き込みが可能ですが、スレーブは読み取りのみが可能です。データの書き込みは実際にはスロットに分散して保存されます。これは、1.X の以前のマスター/スレーブ モード (マスター/スレーブ モードでのマスター/スレーブのデータ ストレージは完全に一貫しています) とは異なります。3 各マスターのデータ ストレージが異なるためです。 。これは後のエッセイで検証されます。
以上がRedis クラスターの構築チュートリアルと問題解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。