ホームページ  >  記事  >  バックエンド開発  >  Redis クラスターの構築チュートリアルと問題解決

Redis クラスターの構築チュートリアルと問題解決

巴扎黑
巴扎黑オリジナル
2017-09-07 10:11:511764ブラウズ

この記事では、主に 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

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 installcurl

2. rvm をインストールします

curl -L get。 rvm.io | bash -s 安定版

3.

source /usr/local/rvm/scripts/rvm

4. RVM 内の既知の Ruby バージョンを確認しますlibrary

rvm list known

5.rubyバージョンをインストールします

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 モードをオンにします。バックグラウンドモードをオンにする

  1. Redis サービスをオンにして、開始できるかどうかを確認します。わかりました、問題ありません。 Startall.SH スクリプトを作成します (権限が不十分な場合は権限拒否の指示を思い出させ、コマンド chmod 777 startall.sh 変更権限を実行します)
  2. クラスターの作成

  3. 次に、Ruby を使用してクラスターを作成する必要があります脚本。

  4. redis-trib.rbには以下の機能があることがわかります:

  5. create: クラスターを作成します

  6. check: クラスターを確認します

  7. info: クラスター情報を表示します

  8. fix : クラスターを修復します

  9. reshard: スロットのオンライン移行

  10. 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。