Redis 4.0.9 版本集群扩容
admin
2023-02-24 16:00:03
0

一、实验环境

1、系统版本: Centos 7.6   x86_64 
2、Redis版本 4.0.9 
3、集群IP信息
172.16.100.201  172.16.100.202  172.16.100.203
4、准备加入集群的IP信息
172.16.100.204  172.16.100.205  172.16.100.206
5、目的
将Redis集群的3主3从,扩容为6主6从,204、205、206 三个新节点各新增1主1从!

二、安装配置Redis集群

1、在3台服务器上安装redis,每台2个实例,如下:
172.16.100.201  8000 8001
172.16.100.202  8002 8003
172.16.100.203  8004 8005
开始安装
#tar xf redis-4.0.9.tar.gz
#cd redis-4.0.9
#make
#mv redis-4.0.9  /opt/app/redis8000
2、提供配置文件
#cat /opt/app/redis8000/redis.conf
daemonize yes
port 8000
bind 172.16.100.201
appendonly no
save 900 1
save 300 10
save 60 10000000
dir /opt/app/redis8000/db/
pidfile /opt/app/redis8000/redis_8000.pid
logfile /opt/app/redis8000/logs/redis8000.log
cluster-enabled yes
cluster-config-file nodes8000.conf
cluster-node-timeout 20000
cluster-require-full-coverage no

3、修改系统参数
#vim  /etc/security/limits.conf 
*   soft      nofile   65535
*   hard      nofile   65535
*   soft      nproc    65535
*   hard      nproc    65535

#vim /etc/sysctl.conf
#redis
vm.overcommit_memory=1
net.core.somaxconn = 511

关闭大页面
#echo never > /sys/kernel/mm/transparent_hugepage/enabled

使配置生效
#sysctl  -p

启动:
/opt/app/redis8000/src/redis-server /opt/app/redis8000/redis.conf 

以上是201服务器8000节点配置的例子,202和203服务器2个节点配置,参考上面即可,注意监听ip地址和端口、路径名称需要作出相应的修改。

三、创建Redis 4.0.9 集群(在201服务器操作即可)

1、安装软件包
#yum install ruby rubygems -y
#gem install redis -v 3.3.5
2、创建集群
#/opt/app/redis8000/src/redis-trib.rb create --replicas 1 172.16.100.201:8000 172.16.100.201:8001 172.16.100.202:8002 172.16.100.202:8003 172.16.100.203:8004 172.16.100.203:8005
3、查看集群IP信息
172.16.100.203:8005 slave
172.16.100.201:8001 slave 
172.16.100.203:8004 master    10923-16383
172.16.100.202:8003 slave 
172.16.100.201:8000 master    0-5460 
172.16.100.202:8002 master    5461-10922

将线上对应3主3从Redis集群slot的dump.rdb拷贝到对应节点,并启动,目的是让实验环境Redis集群有数据,或者自己造一些数据,此步骤省略!为了演示效果,我
这里手动set几个key,如下:
172.16.100.201:8000> set name1 jodan
…………
172.16.100.201:8000> set name10 kawayi
…………

四、将新节点加入集群并迁移slot(在172.16.100.201服务器操作)

注:在204、205、206各启动2个redis实例,端口如下分配:
204  master 8006  slave  8007
205  master 8008  slave  8009
206  master 8010  slave  8011

1、配置启动新服务器Redis(一共3台服务器6个redis实例),配置方法参考步骤二,这里不再赘述。

2、将3个master节点加入集群
原集群详细信息:  3主3从
# /opt/app/redis8000/src/redis-cli  -h 172.16.100.201 -p 8000  cluster nodes
11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 172.16.100.202:8002@18002 master - 0 1575702279000 3 connected 5461-10922
b87a9f751b1eb4496c2eff495d216c88c22065ac 172.16.100.203:8004@18004 master - 0 1575702277798 5 connected 10923-16383
95ccd1953fa78a1ffa599d65b72d547f8277c3b5 172.16.100.201:8001@18001 slave b87a9f751b1eb4496c2eff495d216c88c22065ac 0 1575702279804 5 connected
2c67f0832908ae6375fec57b2399a0a8f4c9e9cc 172.16.100.203:8005@18005 slave 11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 0 1575702279000 6 connected
9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 172.16.100.201:8000@18000 myself,master - 0 1575702278000 1 connected 0-5460
187eba647c002ff47674c71225c428fb8db59444 172.16.100.202:8003@18003 slave 9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 0 1575702276795 4 connected

将172.16.100.204:8006 加入集群,
/opt/app/redis8000/src/redis-trib.rb add-node 172.16.100.204:8006 172.16.100.201:8000

将172.16.100.205:8008 加入集群
/opt/app/redis8000/src/redis-trib.rb add-node 172.16.100.205:8008 172.16.100.201:8000

将172.16.100.206:8010 加入集群
/opt/app/redis8000/src/redis-trib.rb add-node 172.16.100.206:8010 172.16.100.201:8000

查看加入3个master节点之后的集群信息:
#/opt/app/redis8000/src/redis-cli  -h 172.16.100.201 -p 8000  cluster nodes           
11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 172.16.100.202:8002@18002 master - 0 1575704459051 3 connected 5461-10922
95ccd1953fa78a1ffa599d65b72d547f8277c3b5 172.16.100.201:8001@18001 slave b87a9f751b1eb4496c2eff495d216c88c22065ac 0 1575704457045 5 connected
187eba647c002ff47674c71225c428fb8db59444 172.16.100.202:8003@18003 slave 9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 0 1575704457000 4 connected
9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 172.16.100.201:8000@18000 myself,master - 0 1575704458000 1 connected 0-5460
c4772e933405eda022b0f7b837a67f05690c76da 172.16.100.204:8006@18006 master - 0 1575704458048 0 connected   
564d7877350b0a4789f18162c393a04584f9d311 172.16.100.205:8008@18008 master - 0 1575704455000 7 connected
b87a9f751b1eb4496c2eff495d216c88c22065ac 172.16.100.203:8004@18004 master - 0 1575704455040 5 connected 10923-16383
3dc917e0d7a1387caf646add2d06814cdb3560ab 172.16.100.206:8010@18010 master - 0 1575704458548 0 connected
2c67f0832908ae6375fec57b2399a0a8f4c9e9cc 172.16.100.203:8005@18005 slave 11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 0 1575704457000 6 connected
可以看到新加入集群的节点是没有slot的,所以下面就需要将其他3个master节点的部分slot迁移过去。

3、开始slot自动迁移
#ruby /opt/app/redis8000/src/redis-trib.rb rebalance --auto-weights --use-empty-masters 172.16.100.201:8000
>>> Performing Cluster Check (using node 172.16.100.201:8000)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Rebalancing across 6 nodes. Total weight = 6
Moving 2732 slots from 172.16.100.202:8002 to 172.16.100.204:8006
#################   花费时间长短根据迁移数据量大小
Moving 2731 slots from 172.16.100.203:8004 to 172.16.100.206:8010
#################
Moving 2731 slots from 172.16.100.201:8000 to 172.16.100.205:8008
#################

结束之后,再次查看集群信息:
# /opt/app/redis8000/src/redis-cli  -h 172.16.100.201 -p 8000  cluster nodes                                
11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 172.16.100.202:8002@18002 master - 0 1575706557000 3 connected 8193-10922
95ccd1953fa78a1ffa599d65b72d547f8277c3b5 172.16.100.201:8001@18001 slave b87a9f751b1eb4496c2eff495d216c88c22065ac 0 1575706557000 5 connected
187eba647c002ff47674c71225c428fb8db59444 172.16.100.202:8003@18003 slave 9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 0 1575706554000 4 connected
9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 172.16.100.201:8000@18000 myself,master - 0 1575706555000 1 connected 2731-5460
c4772e933405eda022b0f7b837a67f05690c76da 172.16.100.204:8006@18006 master - 0 1575706558000 9 connected 5461-8192
564d7877350b0a4789f18162c393a04584f9d311 172.16.100.205:8008@18008 master - 0 1575706557237 11 connected 0-2730
b87a9f751b1eb4496c2eff495d216c88c22065ac 172.16.100.203:8004@18004 master - 0 1575706556000 5 connected 13654-16383
3dc917e0d7a1387caf646add2d06814cdb3560ab 172.16.100.206:8010@18010 master - 0 1575706559243 10 connected 10923-13653
2c67f0832908ae6375fec57b2399a0a8f4c9e9cc 172.16.100.203:8005@18005 slave 11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 0 1575706558240 6 connected

可以看出新加入集群的3个master节点已经有slot了。

查看前面手动加的key是否成功迁移到了新master节点,如下:
172.16.100.201:8000> get name1
-> Redirected to slot [12933] located at 172.16.100.206:8010    #新节点
"jodan"
172.16.100.206:8010> get name2
-> Redirected to slot [742] located at 172.16.100.205:8008      #新节点
"kobe"
172.16.100.205:8008> get name3
-> Redirected to slot [4807] located at 172.16.100.201:8000
"onier"
172.16.100.201:8000> get name4
-> Redirected to slot [8736] located at 172.16.100.202:8002
"curry"
172.16.100.202:8002> get name5
-> Redirected to slot [12801] located at 172.16.100.206:8010    #新节点
"james"
172.16.100.206:8010> get name6
-> Redirected to slot [610] located at 172.16.100.205:8008      #新节点
"durant"
172.16.100.205:8008> get name7
-> Redirected to slot [4675] located at 172.16.100.201:8000
"timu"
172.16.100.201:8000> get name8
-> Redirected to slot [9132] located at 172.16.100.202:8002
"park"
172.16.100.202:8002> get name9
-> Redirected to slot [13197] located at 172.16.100.206:8010     #新节点
"qiaozhi"  

可以看到有几个key已经成功迁移到了新节点205和206!

4、为新master节点添加slave节点(在172.16.100.201节点操作)
为了避免单点故障,设计主从如下:
204              205             206
8006 M1         8008 M2          8010 M3

8007 S3         8009 S1          8011 S2

将205@8009这个节点加为 204@8006 的从节点
/opt/app/redis8000/src/redis-trib.rb add-node --slave --master-id c4772e933405eda022b0f7b837a67f05690c76da 172.16.100.205:8009 172.16.100.204:8006

将206@8011这个节点加为 205@8008 的从节点
/opt/app/redis8000/src/redis-trib.rb add-node --slave --master-id 564d7877350b0a4789f18162c393a04584f9d311 172.16.100.206:8011 172.16.100.205:8008

将204@8007这个节点加为 206@8010 的从节点
/opt/app/redis8000/src/redis-trib.rb add-node --slave --master-id 3dc917e0d7a1387caf646add2d06814cdb3560ab 172.16.100.204:8007 172.16.100.206:8010

再次查看集群信息如下:
#/opt/app/redis8000/src/redis-cli  -h 172.16.100.201 -p 8000  cluster nodes
11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 172.16.100.202:8002@18002 master - 0 1575708808057 3 connected 8193-10922
1d7c87447dd419ac7a2260dce726af03e7965c1a 172.16.100.204:8007@18007 slave 3dc917e0d7a1387caf646add2d06814cdb3560ab 0 1575708799027 10 connected
95ccd1953fa78a1ffa599d65b72d547f8277c3b5 172.16.100.201:8001@18001 slave b87a9f751b1eb4496c2eff495d216c88c22065ac 0 1575708807000 5 connected
187eba647c002ff47674c71225c428fb8db59444 172.16.100.202:8003@18003 slave 9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 0 1575708806049 4 connected
9a02a2120d4a0f9bd8b3ae7e11ffe28d0e03d6fc 172.16.100.201:8000@18000 myself,master - 0 1575708806000 1 connected 2731-5460
c4772e933405eda022b0f7b837a67f05690c76da 172.16.100.204:8006@18006 master - 0 1575708803000 9 connected 5461-8192
564d7877350b0a4789f18162c393a04584f9d311 172.16.100.205:8008@18008 master - 0 1575708801000 11 connected 0-2730
735012e7c6f181f7e8a197fc1667ff7bc075361d 172.16.100.206:8011@18011 slave 564d7877350b0a4789f18162c393a04584f9d311 0 1575708807054 11 connected
b87a9f751b1eb4496c2eff495d216c88c22065ac 172.16.100.203:8004@18004 master - 0 1575708805047 5 connected 13654-16383
5ba06662b9b260ca2cadcf2f7692e5e0e1a91474 172.16.100.205:8009@18009 slave c4772e933405eda022b0f7b837a67f05690c76da 0 1575708804045 9 connected
3dc917e0d7a1387caf646add2d06814cdb3560ab 172.16.100.206:8010@18010 master - 0 1575708805000 10 connected 10923-13653
2c67f0832908ae6375fec57b2399a0a8f4c9e9cc 172.16.100.203:8005@18005 slave 11ae0bcc3aeae0cb7e40c28f407e3d2a30504989 0 1575708806000 6 connected

迁移结束!!!

不足之处,请多多交流指出。

相关内容

热门资讯

超过阿里巴巴和美团,携程为何挨... 2026年7月,市场监管总局对携程集团有限公司滥用市场支配地位行为作出行政处罚决定,责令携程停止违法...
夺取全年粮食丰收有较好基础(权... 本报记者 郁静娴“农业农村经济保持稳中向好的良好势头,为国民经济延续总体平稳、向新向优的态势提供有力...
山西洪洞发生黄土崩塌,致5人死... 今天(25日)上午,记者从山西省洪洞县应急管理局获悉,洪洞县好义村黄土崩塌受困人员已全部找到。其中,...
瑞尔塔完成核聚变装置内直接能量... (来源:电力国际汇epintl) 六月早些时候,《聚变能源报道》曾刊发过瑞尔塔聚变公司(Realta...
中海油服获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示中海油服(601808)新获得一项发明专利授权,专利名为“一种...
特朗普:301关税正式接棒,已... 据凤凰卫视报道,特朗普24日在白宫回应多项议题,强调最高法院推翻旧关税法源后,政府已改采新的法律依据...
夫妇雨天出门疑被电身亡,现场有... 7月24日,新京报记者多方核实获悉,陕西宝鸡永清村22日晚突发雷暴雨,一对中年夫妇雨天在村中道路疑被...
游戏掌机存储卡推荐:三星 T7... 当游戏加载条变短、4K视频秒录、掌机库一键随行——存储不该是妥协的理由。 三星T7,1TB大容量m...
宇树科技创始人兼CEO王兴兴登... 王兴兴登上时代封面。 当地时间7月23日,宇树科技创始人兼CEO王兴兴与其载人机甲产品GD01共同登...
今天,我们想的不仅是“上天”的... (一) 一箭5星!再传捷报! 7月24日,我国使用力箭一号遥十五运载火箭,成功将5颗卫星发射升空,卫...