Redisの研究ノート--- Redisのクラスタクラスタ(B)

序文

Redisのクラスタクラスタ(a)は、このセクションでは、クラスタの概念を理解し、我々はクラスタプラットフォームを構築する方法を学習します。

1.はじめに

クラスタは、少なくともので、クラスタを構築する3つのホストの最小値が必要で、ノードの奇数を有するべきである、とRedisのクラスタクラスタ(プライマリノード、バックアップノードRedisのを完了するために、6機の最小値を作成するには、次のように、各ノードは、少なくとも1つのバックアップノードを有します)を決定するクラスタ-cluster
6 Redisのサービスは、6台のサーバ(六つの異なる番号Redisのサービスホスト、同一であってもよいポート番号)がある:真クラスター
6379:192.168.1.1.110
192.168.1.1.111:6379
192.168.1.1を。 112:6379
偽クラスタ:つのサーバ6 Redisのサービスがある([同一のサーバを使用するため]、ポート番号が同じではない、このサービスは、同じ6つのホスト番号をRedisの)
6379:192.168.1.111
192.168.1.111:6380
192.168.1.111 :6382

2.クラスタ環境を構築

我々は追加のクラスタ構造を使用するので、ここでは、私たち自身の機器によって制限されている
[1] Redisのノードのインストールディレクトリを作成します

mkdir /usr/local/redis_cluster  //指定目录下 创建 redis_cluster

[2]でのredis_clusterディレクトリには、フォルダを作成して7001から7006

 mkdir 7001 7002 7003 7004 7005 7006

[3]は、それぞれ、とのRedis-CONFフォルダ7001から7006にコピー

cp /root/redis-4.0.1/redis.conf  ./7001

[4]構成ファイル次のように改訂された修正されたコンテンツとして、修飾されている
パブリックネットワークへのアクセスを禁止するために、<1>プロテクトモードキャッシュをRedisのは、セキュリティを強化するのRedis。
:これは、2つがあり、条件を有効に
IPがバインドではありません)1
アクセスパスワードを設定していない)2
これは、我々は上記のパスワードを設定していなかったので、ビルドプロセス、それを満たす第二の点なので、セーフモードでLinux上でのRedis redis.conf保護モードモードNO-保護に設定されている:あなたは、外部からのアクセスがあれば簡単に、仮想マシンの外部からの接続を確立手放すことができない
ように(redis.confで)次のされている他の設定ファイルを変更する<2>

bind 127.0.0.1  进行注释
port 7001      改掉原来的端口号6379
dameonize yes  改为后台运行(守护进程)
pidfile  /var/run/redis_7001.pid  把该文件的端口进行更改
cluster-enabled yes  将注释去掉(默认是不开启集群的)
cluster-config-file  nodes-7001.conf  将注释去掉,并把文件名改为以端口号为主

[5]のRedisはアクティブ各ノードの
コピーテーブルはRedisの-4.0.1 / srcのファイルをそれぞれのディレクトリには、7001から7006をRedisの。

cd redis-4.0.1   //进入桌面redis解压目录下
cp -r ./src  /usr/local/redis_cluster/7001  //进行拷贝,依次复制到7001-7006

各ノードのRedisを開始

cd /usr/local/redis_cluster/                // 进去redis集群配置文件
 ./7001/src/redis-server  ./7001/redis.conf   //依次启动7001-7006各节点服务

[6]にチェックを開始状況のRedis

 ps  -ef | grep -i redis

上記の手順が完了した後、我々は、単一のサーバー上で、我々は、我々は正式にクラスタを作成することができます、完全な構築するために偽のクラスタ環境呼んで6つのRedisのサービスを開始しています。

クラスタを作成します3。

あなたが常にでき、正式オファーをRedisの-trib.rb(操作を容易にするため)、srcディレクトリ解凍したディレクトリに、このツールをは/ usr / local / binディレクトリ(Javaディレクトリにある環境変数の同等にそのファイルをコピーするのRedisどこかのプロセス動作)は、直接このコマンドにアクセスすることができます

cd redis-4.0.1/
cd src
cp redis-trib.rb  /usr/local/bin/

IP:ポートモード、コマンドラインから直接実行することができます

  redis-trib.rb create  --replicas 1  127.0.0.1:7001  127.0.0.1:7002 127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005  127.0.0.1:7006

このエラーが発生した場合:

 /usr/bin/env: ruby:没有那个文件或目录

あなたはルビーをインストールする必要がありますので、このツールは、ルビー達成使用されています。

4.インストールルビー

次のコマンドを実行します。

 yum -y install ruby ruby-devel rubygems rpm-build
  gem install redis

もし言葉の実装でエラー

[root@localhost bin]# gem install redis
ERROR:  Error installing redis:
   redis requires Ruby version >= 2.3.0.

上記のエラーの原因:ルビー2.0.0へのCentOSに暗黙のサポートは、インストールしてもよい宝石最低のRedisの必要性が2.3.0で
解決策がRVMをインストールすることで、その後、ルビーバージョンアップ

5. インストールRVMと対応するバージョンルビー

(詳細なプロセスを参照して、物品の上に設置されてもよいです)

6. Redisのクラスタのクラスタのセットアップ

以上の操作の後、我々は再びRedisの-trib.rbのコマンドを使用して、このツールはエラーではありませんので、シナリオの完全な多様性を構築するために管理しました。

 redis-trib.rb create  --replicas 1  127.0.0.1:7001  127.0.0.1:7002 127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005  127.0.0.1:7006

ここに画像を挿入説明
デフォルト設定の[はい]を許可するかどうか(と、それは自動的にクラスタを構築します)
ここに画像を挿入説明

7.Redisクラスタのクラスタ検証

[1] Redisのクラスター試験:
目的をテストするために、クライアントは/ usr / local / binディレクトリにRedisの-CLIコマンドとすることができます

cd  /home/gs/redis-4.0.1/src  # /home/gs/redis-4.0.1是我安装redis的目录
cp redis-cli /usr/local/bin

マシン上の[2](または)クラスタ・ノードの接続ポート7001:

 redis-cli  -h  127.0.0.1  -c  -p  7001

-hパラメータを省略することができないので-C追加パラメータ理由上記redis.confの、クラスタに接続されてもよいが、IPアドレスにバインドします。
ここに画像を挿入説明
分析は:起因等しいクラスタマシンに、7001においてキーデータに対応するノードを追加するには、別のマシンにリダイレクトすることが可能である(例えば、プライマリ・サーバ7002上)と、サーバー7005から関連する可能性がありますコマンドをお読みください。
[3]は、ミドルウェアに、中心に考慮するために、設計にクラスタをRedisの、クラスタ内の各ノードが等しい関係です。ピアがあります。各ノードは、それぞれの状態データとクラスタ全体を保持します。各ノードと他のすべてのノードが接続されており、これらの接続は、このように我々は唯一のクラスタ内の任意のノードを接続する必要があることを保証し、アクティブのまま、あなたは他のノードからデータを取得することができます。
[4]基本的なコマンド
クラスターの効果を見るために情報の複製は、クラスタノードクラスタInfoコマンドとコマンド
ここに画像を挿入説明
クラスタは、クラスタノードの情報を取得するためにノード
ここに画像を挿入説明
テキストエディタに情報を貼り付ける魅力に、あなたが検索されます。
ここに画像を挿入説明
各ノードはID値を持つのRedis、このIDは、恒久的に使用され、この特定の例をRedisの実施例において、クラスタのコンテクストを固有の名前を有するために、各ノードは、互いにこのノードのIDを使用して覚えているのではなく、 IPまたはポートによって。IPアドレスとポートが変更される可能性がありますが、唯一のノード識別子は、ノードのライフサイクルを通じて変化しません。私たちは、単にこのノード識別子IDを呼び出します

[5]我々はまた、Javaによって、関連するテスト・クラスタを実行することができる
。この時点で、我々は対応するポートオーソリティを開きたい<1>
順番に開いたポート(上記のみCentos7ためのコマンド以下)70017002 ... 7006

 查看已经开放的端口 :  firewall-cmd  --list-ports
  开启端口:  firewall-cmd --zone=public  --add-port=7001/tcp  --permanent
  重启防火墙      firewall-cmd  --reload  

<2>のJavaテストコード

public static void main(String[] args){
 //第一步:使用JedisCluster对象,需要一个Set<HostAndPort>参数,Redis节点的列表
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
  nodes.add(new HostAndPort(“127.0.0.1”, 7001));
  nodes.add(new HostAndPort(“127.0.0.1”, 7002));
  nodes.add(new HostAndPort(“127.0.0.1”, 7003));
  nodes.add(new HostAndPort(“127.0.0.1”, 7004));
  nodes.add(new HostAndPort(“127.0.0.1”, 7005));
  nodes.add(new HostAndPort(“127.0.0.1”, 7006));
  JedisCluster jedisCluster  = new JedisCluster (nodes);
  // 第二步:直接使用JedisCluster对象操作redis, 在系统中单例存在
  jedisCluster.set(“qfjy”, “千锋教育”);
  String result = jediscluster.get(“qfjy”);
  //第三步:打印结果
  System.out.println(result); 
}
公開された58元の記事 ウォンの賞賛2 ビュー4452

おすすめ

転載: blog.csdn.net/TheWindOfSon/article/details/104704786