Redis集群部署(redis-trib.rb搭建)


一:创建redis节点


测试我们选择2台服务器,分别为:192.168.56.56,192.168.56.57每个服务器有3个节点。

在192.168.56.56创建3个节点

创建集群的目录
[root@localhost ~]# cd /
[root@localhost /]# mkdir redis_cluster
[root@localhost /]# cd redis_cluster/

 
创建节点的目录
[root@localhost redis_cluster]# mkdir 7000
[root@localhost redis_cluster]# mkdir 7001
[root@localhost redis_cluster]# mkdir 7002

把配置文件复制到每个节点目录中
[root@localhost redis_cluster]# cp /redis/redis-3.2.1/redis.conf  /redis_cluster/7000
[root@localhost redis_cluster]# cp /redis/redis-3.2.1/redis.conf  /redis_cluster/7001
[root@localhost redis_cluster]# cp /redis/redis-3.2.1/redis.conf  /redis_cluster/7002

 
依次修改以上的每个redis.conf文件
vi  redis.conf

daemonize    yes                      //redis后台运行
pidfile  /var/run/redis_7000.pid      //pidfile文件对应7000,7001,7002
port  7000                           //端口7000,7001,7002
cluster-enabled  yes                 //开启集群  把注释#去掉
cluster-config-file nodes-7000.conf  //集群的配置  配置文件首次启动自动生成
cluster-node-timeout 5000           //请求超时  设置5秒够了
bind 192.168.56.56                  //绑定本机的IP
appendonly  yes                     //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

 
依次启动每个节点
[root@localhost src]# ./redis-server   /redis_cluster/7000/redis.conf
[root@localhost src]# ./redis-server   /redis_cluster/7001/redis.conf
[root@localhost src]# ./redis-server   /redis_cluster/7002/redis.conf

在192.168.56.57服务器也创建3个节点7003、7004、7005,和上面操作一致,这里不再做演示。

 查看redis启动情况

在192.168.56.56查看redis启动情况,无问题
[root@shanxi 7002]# ps -ef|grep redis
root    15665     1  015:46 ?     00:00:04 ./redis-server 192.168.56.56:7000 [cluster] 
root    15680     1  015:48 ?     00:00:04 ./redis-server 192.168.56.56:7001 [cluster] 
root    15684     1  015:48 ?     00:00:04 ./redis-server 192.168.56.56:7002 [cluster]


在192.168.56.57查看redis启动情况,无问题
[root@localhost 7003]# ps -ef|grep redis
root    28183    1  0 15:50 ?     00:00:03 ./redis-server 192.168.56.57:7003 [cluster] 
root    28187     1  015:50 ?     00:00:03 ./redis-server 192.168.56.57:7004 [cluster] 
root    28191     1  0 15:50 ?    00:00:03 ./redis-server 192.168.56.57:7005 [cluster]



二:集群部署


注:Redis是用./redis-trib.rb来创建集群的,需要ruby执行,详见附一ruby的安装

1、参数如下:

[root@localhost src]# ./redis-trib.rb

Usage: redis-trib <command><options> <arguments ...>

create          host1:port1 ... hostN:portN
                  --replicas <arg>
 check           host:port
 info            host:port
 fix             host:port
                  --timeout <arg>
 reshard         host:port
                  --from <arg>
                  --to <arg>
                  --slots <arg>
                  --yes
                  --timeout <arg>
                  --pipeline <arg>
 rebalance       host:port
                  --weight <arg>
                  --auto-weights
                 --use-empty-masters
                  --timeout <arg>
                  --simulate
                  --pipeline <arg>
                  --threshold <arg>
 add-node        new_host:new_portexisting_host:existing_port
                  --slave
                  --master-id <arg>
 del-node        host:port node_id
 set-timeout     host:portmilliseconds
 call            host:port commandarg arg .. arg
 import          host:port
                  --from <arg>
                  --copy
                  --replace
 help            (show this help)
 
For check, fix, reshard, del-node,set-timeout you can specify the host and port of any working node in thecluster.


2、创建集群

[root@localhost src]# /redis/redis-3.2.1/src/redis-trib.rb   create --replicas  1  192.168.56.56:7000 192.168.56.56:7001  192.168.56.56:7002  192.168.56.57:7003  192.168.56.57:7004  192.168.56.57:7005

>>> Creating cluster
>>> Performing hash slotsallocation on 6 nodes...
Using 3 masters:
192.168.56.56:7000
192.168.56.57:7003
192.168.56.56:7001
Adding replica 192.168.56.57:7004 to 192.168.56.56:7000
Adding replica 192.168.56.56:7002 to192.168.56.57:7003
Adding replica 192.168.56.57:7005 to192.168.56.56:7001
M: d2bf521e5a9b53c069da7507aafd69538ef693b5192.168.56.56:7000
  slots:0-5460 (5461 slots) master
M: 3eb2c64654dc0559e83498753cd674805ba5fa42192.168.56.56:7001
  slots:10923-16383 (5461 slots) master
S: d2ced0c0f1cf9158cdd40cdd910dacd4283ff6c1192.168.56.56:7002
  replicates 5b75b320e858ec83fc39a40666700964ff598729
M: 5b75b320e858ec83fc39a40666700964ff598729192.168.56.57:7003
  slots:5461-10922 (5462 slots) master
S: 20061dd97978756fa93dfe969a1d3acb3721b7a1192.168.56.57:7004
  replicates d2bf521e5a9b53c069da7507aafd69538ef693b5
S: 70648f5b00ae17f2ca85adc405066aa7ef4d8007192.168.56.57:7005
  replicates 3eb2c64654dc0559e83498753cd674805ba5fa42
Can I set the above configuration? (type'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different configepoch to each node
>>> Sending CLUSTER MEET messagesto join the cluster
Waiting for the cluster to join..
>>> Performing Cluster Check(using node 192.168.56.56:7000)
M: d2bf521e5a9b53c069da7507aafd69538ef693b5192.168.56.56:7000
  slots:0-5460 (5461 slots) master
M: 3eb2c64654dc0559e83498753cd674805ba5fa42192.168.56.56:7001
  slots:10923-16383 (5461 slots) master
M: d2ced0c0f1cf9158cdd40cdd910dacd4283ff6c1192.168.56.56:7002
  slots: (0 slots) master
  replicates 5b75b320e858ec83fc39a40666700964ff598729
M: 5b75b320e858ec83fc39a40666700964ff598729192.168.56.57:7003
  slots:5461-10922 (5462 slots) master
M: 20061dd97978756fa93dfe969a1d3acb3721b7a1192.168.56.57:7004
  slots: (0 slots) master
  replicates d2bf521e5a9b53c069da7507aafd69538ef693b5
M: 70648f5b00ae17f2ca85adc405066aa7ef4d8007192.168.56.57:7005
  slots: (0 slots) master
  replicates 3eb2c64654dc0559e83498753cd674805ba5fa42
[OK] All nodes agree about slotsconfiguration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


3、测试

在192.168.56.56主机登录192.168.56.57的端口为7005的redis服务,设置一个key为cluster,value为hahaha。
[root@shanxi src]# ./redis-cli  -c -h 192.168.56.57 -p 7005
192.168.56.57:7005> set cluster"hahaha"
-> Redirected to slot [14041] located at192.168.56.56:7001
OK

 
在192.168.56.57主机登录192.168.56.56的端口为7000的redis服务,可以取得cluster的值。
[root@localhost src]# ./redis-cli   -c -h 192.168.56.56 -p 7000
192.168.56.56:7000> get cluster
-> Redirected to slot [14041] located at192.168.56.56:7001
"hahaha"



附一:ruby的安装


1、安装ruby , ruby下载地址:http://www.ruby-lang.org/en/downloads/

下载 Ruby 之后,解压到新创建的目录下:
[root@localhost redis]# tar -xvf ruby-2.3.1.tar
[root@localhost redis]# cd ruby-2.3.1

 
现在,配置并编译源代码,如下所示:
[root@localhost ruby-2.3.1]# ./configure
[root@localhost ruby-2.3.1]# make
[root@localhost ruby-2.3.1]# sudo make install

 
安装后,通过在命令行中输入以下命令来确保一切工作正常:
[root@localhost ruby-2.3.1]# ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768)[x86_64-linux]

2、安装RubyGems,  RubyGems下载地址:https://rubygems.org/pages/download

下载 RubyGems 之后,解压到新创建的目录下:
[root@localhost redis]# unzip rubygems-2.6.8.zip

执行命令
[[email protected]]# ruby setup.rb

3、安装RubyGems 后,用gem来安装 redis接口   gem是ruby的一个工具包

[root@localhost rubygems-2.6.8]# gem install redis
ERROR: While executing gem ... (Gem::Exception)
Unable torequire openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPSsources


如上报错,没有redis包,到taobao下载一个,下载地址:https://rubygems.org/gems/redis

 
再次安装无问题。
[root@localhost gems]# gem install redis
Successfully installed redis-3.3.1
Parsing documentation for redis-3.3.1
Done installing documentation for redisafter 0 seconds
1 gem installed

猜你喜欢

转载自blog.csdn.net/fly43108622/article/details/53010097