0
点赞
收藏
分享

微信扫一扫

redis集群安装


redis-trib.rb是采用ruby实现的redis集群管理工具。内部通过cluster相关命令帮我们简化集群创建,检查,槽迁移和均衡等常见的运维操作


1.ruby安装


下载地址: wget ​​https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz​​


./configure -prefix=/usr/local/ruby


make 


make install




cd /usr/local/ruby


cp /usr/local/ruby/bin/ruby  /usr/local/bin


cp /usr/local/ruby/bin/gem  /usr/local/bin


下载: ​​https://rubygems.org/downloads/redis-4.0.1.gem​​


[root@localhost tools]# gem install -l redis-4.0.1.gem


ERROR: Loading command: install (LoadError)


 cannot load such file -- zlib


ERROR: While executing gem ... (NoMethodError)


    undefined method `invoke_with_build_args' for nil:NilClass


解决办法是:

yum -y install zlib-devel






进入ruby源码文件夹


安装ruby自身提供的zlib包


cd  ruby-2.5.1/ext/zlib


ruby  ./extconf.rb 


[root@localhost zlib]# make


make: *** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop.




这个时候打开ext/zlib/Makefile文件,找到下面一行把路径进行修改一下。


#zlib.o: $(top_srcdir)/include/ruby.h


zlib.o: ../../include/ruby.h

make

make install


2.安装

[root@localhost tools]# gem install -l redis-4.0.1.gem


gem list --check redis gem




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


3. 安装ruby环境后,执行redis-trib.rb命令确认是否正确

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


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




  create host1:port1 ... hostN:portN


                  --replicas <arg>


......

可以使用redi-trib.rb create命令可以快速搭建集群


4.准备节点

配置配置文件,并启动

port 6000


daemonize yes


logfile "6000.log"


dir "/data/redis/data/"


dbfilename dump-6000.rdb  


cluster-enabled yes                      #开启集群模式


cluster-node-timeout 15000               #节点超时时间,单位毫秒


cluster-config-file "nodes-6000.conf"    #集群内部配置文件


5.启动所有节点


redis-server /data/redis/conf/redis-6001.conf


redis-server /data/redis/conf/redis-6002.conf


redis-server /data/redis/conf/redis-6003.conf


redis-server /data/redis/conf/redis-6004.conf


redis-server /data/redis/conf/redis-6005.conf


redis-server /data/redis/conf/redis-6006.conf



6.创建集群

启动好6个节点后,使用redis-trib.rb create命令完成握手和分配槽的过程

 redis-trib.rb create --replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006

>>> Creating cluster

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

127.0.0.1:6001

127.0.0.1:6002

127.0.0.1:6003

Adding replica 127.0.0.1:6004 to 127.0.0.1:6001

Adding replica 127.0.0.1:6005 to 127.0.0.1:6002

Adding replica 127.0.0.1:6006 to 127.0.0.1:6003

M: be3270c92ba98c1b67ce4c76569680e1ce873a10 127.0.0.1:6001

slots:0-5460 (5461 slots) master

M: 59fe00990b0675fbf9b5693aa875ab94b1a642ce 127.0.0.1:6002

slots:5461-10922 (5462 slots) master

M: f67a5c17357eefef0d90ffe6e3340dd0b98f370b 127.0.0.1:6003

slots:10923-16383 (5461 slots) master

S: 54397dfd82f8374c508d6a62f481501280c48022 127.0.0.1:6004

replicates be3270c92ba98c1b67ce4c76569680e1ce873a10

S: ce338ff19c08c5eec9808fc51066f587bb3e5a40 127.0.0.1:6005

replicates 59fe00990b0675fbf9b5693aa875ab94b1a642ce

S: 81ee352894cd6b72656c605cb9164881dd515fe7 127.0.0.1:6006

replicates f67a5c17357eefef0d90ffe6e3340dd0b98f370b

Can I set the above configuration? (type 'yes' to accept): yes

当我们同意这份计划之后输入yes,redis-trib.rb开始执行节点握手和槽分配操作

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join....

>>> Performing Cluster Check (using node 127.0.0.1:6001)

M: be3270c92ba98c1b67ce4c76569680e1ce873a10 127.0.0.1:6001

slots:0-5460 (5461 slots) master

1 additional replica(s)

M: f67a5c17357eefef0d90ffe6e3340dd0b98f370b 127.0.0.1:6003

slots:10923-16383 (5461 slots) master

1 additional replica(s)

M: 59fe00990b0675fbf9b5693aa875ab94b1a642ce 127.0.0.1:6002

slots:5461-10922 (5462 slots) master

1 additional replica(s)

S: 54397dfd82f8374c508d6a62f481501280c48022 127.0.0.1:6004

slots: (0 slots) slave

replicates be3270c92ba98c1b67ce4c76569680e1ce873a10

S: ce338ff19c08c5eec9808fc51066f587bb3e5a40 127.0.0.1:6005

slots: (0 slots) slave

replicates 59fe00990b0675fbf9b5693aa875ab94b1a642ce

S: 81ee352894cd6b72656c605cb9164881dd515fe7 127.0.0.1:6006

slots: (0 slots) slave

replicates f67a5c17357eefef0d90ffe6e3340dd0b98f370b

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered. #16384个槽全部被分配,集群创建成功。

这里需要注意给redis-trib.rb的节点地址必须是不包含任何槽数据的节点,否则会拒绝创建集群。

--replicas参数指定集群中每个节点配置几个从节点,这里设置为1。

7.集群完整性检查

集群完整性是指所有的槽都分配到存货的主节点上,只要16384个槽中有一个没有分配给节点则表示集群不完整,可以使用redis-trib.rb check

命令检测集群是否成功,check命令只需要给出集群中任意一个节点地址就可以完成整个集群检查工作,命令如下:

[root@localhost conf]# redis-trib.rb check 127.0.0.1:6001


[root@localhost conf]# redis-trib.rb check 127.0.0.1:6002


当最后输出如下信息,提示集群所有的槽都已分配到节点:

[OK] All nodes agree about slots configuration.


>>> Check for open slots...


>>> Check slots coverage...


[OK] All 16384 slots covered.


8、redis集群的测试


客户端连接集群redis-cli需要带上 -c ,redis-cli -c -p 端口号

master1

[root@localhost conf]# redis-cli -c -p 6001

127.0.0.1:6001> set name redis

-> Redirected to slot [5798] located at 127.0.0.1:6002

OK

127.0.0.1:6002> get name

"redis"

master2

[root@localhost data]# redis-cli -p 6002 -c

127.0.0.1:6002> get name

"redis"

master3

[root@localhost ~]# redis-cli -p 6003 -c

127.0.0.1:6003> get name

-> Redirected to slot [5798] located at 127.0.0.1:6002

"redis"



salve1

[root@localhost ~]# redis-cli -p 6004 -c

127.0.0.1:6004> get name

-> Redirected to slot [5798] located at 127.0.0.1:6002

"redis"


举报

相关推荐

0 条评论