redis集群安装

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

1.ruby安装



./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


[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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值