序文
で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);
}