业务场景
- 现场集群出现性能,内存不够的问题,现场运维又不会,然后开发顶上,做redis集群扩容时,出现了一些问题分享下.
出现的问题
- 新加节点后,登录老集群里没有新节点信息,而登录新节点能看到新增节点信息及集群信息
此原因是防火墙有端口没开 例如(6379,16379),一个外部通讯一个是集群间的通讯,很多都只开了6379,便会出现集群见通讯受阻的情况;
- 槽迁移出现的问题
1.我们线上用的3.2.12,执行redis-trib reshard ip:port 之前,需要把集群所有节点密码先去掉,然后在执行,否则会报没有权限,高版本好像没这问题
config set masterauth ''
config set requirepass ''
config rewrite
2.其次,"client.rb"也需要将密码设置为nil,此文件只复制了一部分.
[root@localhost ~]# vim /usr/share/gems/gems/redis-3.2.1/lib/redis/client.rb
require "redis/errors"
require "socket"
require "cgi"
class Redis
class Client
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:connect_timeout => 5.0,
:password => nil,
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:inherit_socket => false
}
3.然后按照网上教程,一步步走,扩容成功:
4.数据迁移正常,网上案例很多,具体的我就不赘述了,文章最后放上集群搭建文档,及相关书籍等.
#相关命令
#添加节点
cluster meet 192.168.62.35 6380
#取消对槽的导入
CLUSTER SETSLOT 0 STABLE
#取消槽移动
CLUSTER DELSLOTS 0
#删除节点
redis-trib del-node 192.166.62.39:6379 '095ec2898ba582f27a0f40ee1d659c49361d6fb6'
#添加主节点
redis-trib add-node 192.168.62.35:6379 192.166.62.39:6379
#添加从节点
redis-trib add-node --slave --master-id 0c2dea89f7c2b46e367baf74abf5093d1603b885 192.166.62.35:6381 192.166.62.39:6379
#均衡槽数
redis-trib rebalance 192.166.62.39:6379
#修复集群
redis-trib fix 192.166.62.39:6379
文件链接(包括rpm,集群搭建,PDF书籍等)
链接: https://pan.baidu.com/s/1PedVDbb2NjODoHWuGbiQmw 提取码: 5ii4