前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis 3.0 cluster 集群

redis 3.0 cluster 集群

作者头像
py3study
发布2020-01-09 10:20:50
3560
发布2020-01-09 10:20:50
举报
文章被收录于专栏:python3python3

周氏一族,整理技术文档,给下一代留点教程......

redis 3.0 cluster 安装篇,请看 http://zhoushouby.blog.51cto.com/9150272/1560400

本篇,是在 "redis 3.0 cluster 集群 学习之路篇 [2]" 的基础上面实现 “实际生产中Redis服务器部署” 安装调试以及测试。

六台服务器

server21      10.1.3.21         

server22      10.1.3.22

server23      10.1.3.23

server24      10.1.3.24

server25      10.1.3.25

server26      10.1.3.26

---------------------------------每一台/etc/hosts里面都有添加一一对应记录

redis.conf 配置如下

代码语言:javascript
复制
port  6379

daemonize yes

cluster-enabled yes

cluster-config-file /usr/local/redis/nodes.conf  

cluster-node-timeout 5000

dir /usr/local/redis

细心看,你会发现,上面多了一个路径,对的,个人习惯,我给redis创建了一个单独的目录,方便以后查找。

六台机器,所有配置一模一样,统一配置。

一路下来,完全没问题,每一台都能独立的运行redis服务

代码语言:javascript
复制
redis-server /usr/local/redis/redis.conf > /usr/local/redis/redis.log 2>&1 &

但是,当我要来给他们开始集群的时候,就发生下面这么一幕情况

代码语言:javascript
复制
[root@server21 src]# ./redis-trib.rb create --replicas 1 10.1.3.21:6379 10.1.3.22:6379 10.1.3.26:6379 10.1.3.25:6379 10.1.3.24:6379 10.1.3.23:6379

>>> Creating cluster

Connecting to node 10.1.3.21:6379: OK

Connecting to node 10.1.3.22:6379: OK

Connecting to node 10.1.3.26:6379: OK

Connecting to node 10.1.3.25:6379: OK

Connecting to node 10.1.3.24:6379: OK

Connecting to node 10.1.3.23:6379: OK

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

Using 3 masters:

10.1.3.23:6379

10.1.3.24:6379

10.1.3.25:6379

Adding replica 10.1.3.26:6379 to 10.1.3.23:6379

Adding replica 10.1.3.22:7379 to 10.1.3.24:6379

Adding replica 10.1.3.21:7379 to 10.1.3.25:6379

S: fe32667413d75aa9dcebf28aa53fe4ed0df91bba 10.1.3.21:6379

   replicates 7f4c3a0ea64c9f85e7d239c8968c94818decb9a8

S: 3b10b61ebf7ff4e618a945aa353e9e113541557a 10.1.3.22:6379

   replicates f6c6fac2ada651819fac2ddc0daa91f54062a261

S: 0f9a72b4cb6b1ec2d20cc5f0d82be29925c8a050 10.1.3.26:6379

   replicates 96dda21bf7dc9ba81c160375b39a59aedf78733d

M: 7f4c3a0ea64c9f85e7d239c8968c94818decb9a8 10.1.3.25:6379

   slots:10923-16383 (5461 slots) master

M: f6c6fac2ada651819fac2ddc0daa91f54062a261 10.1.3.24:6379

   slots:0-10922 (10923 slots) master

M: 96dda21bf7dc9ba81c160375b39a59aedf78733d 10.1.3.23:6379

   slots:0-10922 (10923 slots) master

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

/usr/lib64/ruby/gems/1.8/gems/redis-3.0.7/lib/redis/client.rb:97:in `call': ERR Slot 16011 is already busy (Redis::CommandError)

        from /usr/lib64/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:2432:in `method_missing'

        from /usr/lib64/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:37:in `synchronize'

        from /usr/lib/ruby/1.8/monitor.rb:242:in `mon_synchronize'

        from /usr/lib64/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:37:in `synchronize'

        from /usr/lib64/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:2431:in `method_missing'

        from ./redis-trib.rb:203:in `flush_node_config'

        from ./redis-trib.rb:629:in `flush_nodes_config'

        from ./redis-trib.rb:628:in `each'

        from ./redis-trib.rb:628:in `flush_nodes_config'

        from ./redis-trib.rb:964:in `create_cluster_cmd'

        from ./redis-trib.rb:1340:in `send'

        from ./redis-trib.rb:1340

[root@server21 src]# 

人生,从此不再寂寞了,开启蛋疼模式

开始找问题,蛋疼的就是他一个错误日志都没有,没法下手。

没办法之下,只好问度娘了,但是,网上看得我眼花缭乱,在大陆,只能找到这么一出玩意

http://blog.csdn.net/moxiaomomo/article/details/19333547

感觉有点道理,因为我的生产环境,之前是redis 2.x的版本,今天更新到3.0,可能会是我redis没卸载干净导致的。

好,二话不说,把服务器再清理一遍,然后重启一下。因为安装步骤都是按照我之前的来,没出现过问题,而且之前在VM里面装的时候,VM的系统是全新的,所以觉得他这个有点道理。开始捣腾起来了。

半个小时候过后,问题依旧,又来到这个问题了。

最终没办法,翻一下墙,泡一下老外redis开源问答区,碰见这个问题的,还不少,比中国大陆好多了,至少搜索下来,有那么10几篇文章,都是在咨询这个问题,但是没有最终的答案

别人不行,那就只能靠自己了。

/usr/lib64/ruby/gems/1.8/gems/redis-3.0.7/lib/redis/client.rb:97:

他提示我说97行这里不行,那就编辑他,gg到87行这里定位一下

终于,总算,找到问题所在了。这个是因为port和nodes文件的问题,不能设置成相同nodes名字的,而且端口也设置成不一样。

晒一下,我最终的配置

代码语言:javascript
复制
[root@server21 ~]# ll /usr/local/redis/

total 60

-rw-r--r-- 1 root root    89 Oct  3 20:02 appendonly.aof

-rw-r--r-- 1 root root    18 Oct  3 20:17 dump.rdb

-rw-r--r-- 1 root root   733 Oct  3 19:30 nodes-8021.conf

-rw-r--r-- 1 root root   115 Oct  3 17:27 nodes.conf

-rw-r--r-- 1 root root 37019 Oct  3 18:48 redis.conf

-rw-r--r-- 1 root root    22 Oct  3 18:56 redis.log

[root@server21 ~]# 

server21      port  8021       nodes-8021.conf

server22      port  8022       nodes-8022.conf

server23      port  8023       nodes-8023.conf

server24      port  8024       nodes-8024.conf

server25      port  8025       nodes-8025.conf

server26      port  8026       nodes-8026.conf

折腾了快两个小时,最后一次通过,这种感觉超爽!!!

代码语言:javascript
复制
[root@server21 src]# ./redis-trib.rb create --replicas 1 10.1.3.21:8021 10.1.3.22:8022 10.1.3.23:8023 10.1.3.24:8024 10.1.3.25:8025 10.1.3.26:8026

>>> Creating cluster

Connecting to node 10.1.3.21:8021: OK

Connecting to node 10.1.3.22:8022: OK

Connecting to node 10.1.3.23:8023: OK

Connecting to node 10.1.3.24:8024: OK

Connecting to node 10.1.3.25:8025: OK

Connecting to node 10.1.3.26:8026: OK

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

Using 3 masters:

10.1.3.26:8026

10.1.3.25:8025

10.1.3.24:8024

Adding replica 10.1.3.23:8023 to 10.1.3.26:8026

Adding replica 10.1.3.22:8022 to 10.1.3.25:8025

Adding replica 10.1.3.21:8021 to 10.1.3.24:8024

S: 690bb1a31fff14557483e1e6dea60e5e748fff41 10.1.3.21:8021

   replicates 89efca75e220cdeb159e1e4954b953337563683f

S: ae258d0a8e31d2cac64aaad62327ec85c3ce12d7 10.1.3.22:8022

   replicates da00c6e9cf5f572396d7cfb006cbcb98e69928ee

S: 8d45084d0ec34c4547c7e57228a5db0ba7eeeba2 10.1.3.23:8023

   replicates e25ffd0663bf13d5b6aa6a397ffb0c21e4b11e05

M: 89efca75e220cdeb159e1e4954b953337563683f 10.1.3.24:8024

   slots:10923-16383 (5461 slots) master

M: da00c6e9cf5f572396d7cfb006cbcb98e69928ee 10.1.3.25:8025

   slots:5461-10922 (5462 slots) master

M: e25ffd0663bf13d5b6aa6a397ffb0c21e4b11e05 10.1.3.26:8026

   slots:0-5460 (5461 slots) master

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

>>> 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 10.1.3.21:8021)

M: 690bb1a31fff14557483e1e6dea60e5e748fff41 10.1.3.21:8021

   slots: (0 slots) master

   replicates 89efca75e220cdeb159e1e4954b953337563683f

M: ae258d0a8e31d2cac64aaad62327ec85c3ce12d7 10.1.3.22:8022

   slots: (0 slots) master

   replicates da00c6e9cf5f572396d7cfb006cbcb98e69928ee

M: 8d45084d0ec34c4547c7e57228a5db0ba7eeeba2 10.1.3.23:8023

   slots: (0 slots) master

   replicates e25ffd0663bf13d5b6aa6a397ffb0c21e4b11e05

M: 89efca75e220cdeb159e1e4954b953337563683f 10.1.3.24:8024

   slots:10923-16383 (5461 slots) master

M: da00c6e9cf5f572396d7cfb006cbcb98e69928ee 10.1.3.25:8025

   slots:5461-10922 (5462 slots) master

M: e25ffd0663bf13d5b6aa6a397ffb0c21e4b11e05 10.1.3.26:8026

   slots:0-5460 (5461 slots) master

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@server21 src]# ./redis-trib.rb check 10.1.3.21:8021

Connecting to node 10.1.3.21:8021: OK

Connecting to node 10.1.3.23:8023: OK

Connecting to node 10.1.3.26:8026: OK

Connecting to node 10.1.3.25:8025: OK

Connecting to node 10.1.3.24:8024: OK

Connecting to node 10.1.3.22:8022: OK

>>> Performing Cluster Check (using node 10.1.3.21:8021)

S: 690bb1a31fff14557483e1e6dea60e5e748fff41 10.1.3.21:8021

   slots: (0 slots) slave

   replicates 89efca75e220cdeb159e1e4954b953337563683f

S: 8d45084d0ec34c4547c7e57228a5db0ba7eeeba2 10.1.3.23:8023

   slots: (0 slots) slave

   replicates e25ffd0663bf13d5b6aa6a397ffb0c21e4b11e05

M: e25ffd0663bf13d5b6aa6a397ffb0c21e4b11e05 10.1.3.26:8026

   slots:0-5460 (5461 slots) master

   1 additional replica(s)

M: da00c6e9cf5f572396d7cfb006cbcb98e69928ee 10.1.3.25:8025

   slots:5461-10922 (5462 slots) master

   1 additional replica(s)

M: 89efca75e220cdeb159e1e4954b953337563683f 10.1.3.24:8024

   slots:10923-16383 (5461 slots) master

   1 additional replica(s)

S: ae258d0a8e31d2cac64aaad62327ec85c3ce12d7 10.1.3.22:8022

   slots: (0 slots) slave

   replicates da00c6e9cf5f572396d7cfb006cbcb98e69928ee

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@server21 src]# 

写下来,给后来者留点脚印......

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档