怎么搭建Redis集群环境
怎么搭建Redis集群环境,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Redis集群简介
Redis集群(Redis Cluster) 是Redis提供的分布式数据库方案,通过 分片(sharding) 来进行数据共享,并提供复制和故障转移功能。相比于主从复制、哨兵模式,Redis集群实现了较为完善的高可用方案,解决了存储能力受到单机限制,写操作无法负载均衡的问题。
本文是Redis集群学习的实践总结,详细介绍逐步搭建Redis集群环境的过程,并完成集群伸缩的实践。
1 Redis集群环境搭建
方便起见,这里集群环境的所有节点全部位于同一个服务器上,共6个节点以端口号区分,3个主节点+3个从节点。集群的简单架构如图:
本文基于最新的Redis 6.0+,直接从github下载最新的源码编译获得常用工具 redis-server , redis-cli 。值得注意的是,从Redis 5.0以后的版本,集群管理软件 redis-trib.rb 被集成到 redis-cli 客户端工具中(详细可参考cluster-tutorial)。
本节介绍集群环境搭建时,并未借助 redis-trib.rb 快速管理,而是按照标准步骤一步步搭建,这也是为了熟悉集群管理的基本步骤。在集群伸缩实践一节将借助 redis-trib.rb 完成集群重新分片工作。
集群的搭建可以分为四步:
鸿蒙官方战略合作共建——HarmonyOS技术社区
启动节点:将节点以集群方式启动,此时节点是独立的。
节点握手:将独立的节点连成网络。
槽指派:将16384个槽位分配给主节点,以达到分片保存数据库键值对的效果。
主从复制:为从节点指定主节点。
1.1 启动节点
每个节点初始状态仍为 Master服务器,唯一不同的是:使用 Cluster 模式启动。需要对配置文件进行修改,以端口号为6379的节点为例,主要修改如下几项:
#redis_6379_cluster.confport6379cluster-enabledyescluster-config-file"node-6379.conf"logfile"redis-server-6379.log"dbfilename"dump-6379.rdb"daemonizeyes
其中 cluster-config-file 参数指定了集群配置文件的位置,每个节点在运行过程中,会维护一份集群配置文件;每当集群信息发生变化时(如增减节点),集群内所有节点会将最新信息更新到该配置文件;当节点重启后,会重新读取该配置文件,获取集群信息,可以方便的重新加入到集群中。也就是说,当Redis节点以集群模式启动时,会首先寻找是否有集群配置文件,如果有则使用文件中的配置启动,如果没有,则初始化配置并将配置保存到文件中。集群配置文件由Redis节点维护,不需要人工修改。
为6个节点修改好相应的配置文件后,即可利用 redis-server redis_xxxx_cluster.conf 工具启动6个服务器(xxxx表示端口号,对应相应的配置文件)。利用ps命令查看进程:
$ps-aux|grepredis...8000.10.0495842444?Ssl20:420:00redis-server127.0.0.1:6379[cluster]...8050.10.0495842440?Ssl20:420:00redis-server127.0.0.1:6380[cluster]...8120.30.0495842436?Ssl20:420:00redis-server127.0.0.1:6381[cluster]...8170.10.0495842432?Ssl20:430:00redis-server127.0.0.1:6479[cluster]...8220.00.0495842380?Ssl20:430:00redis-server127.0.0.1:6480[cluster]...8270.50.0495842380?Ssl20:430:00redis-server127.0.0.1:6481[cluster]
1.2 节点握手
1.1中将每个节点启动后,节点间是相互独立的,他们都处于一个只包含自己的集群当中,以端口号6379的服务器为例,利用 CLUSTER NODES 查看当前集群包含的节点。
127.0.0.1:6379>CLUSTERNODES37784b3605ad216fa93e976979c43def42bf763d:6379@16379myself,master-000connected449457657987568845512706
我们需要将各个独立的节点连接起来,构成一个包含多个节点的集群,使用 CLUSTER MEET 命令。
$redis-cli-p6379-c#-c选项指定以Cluster模式运行redis-cli127.0.0.1:6379>CLUSTERMEET127.0.0.16380OK127.0.0.1:6379>CLUSTERMEET127.0.0.16381OK127.0.0.1:6379>CLUSTERMEET127.0.0.16480OK127.0.0.1:6379>CLUSTERMEET127.0.0.16381OK127.0.0.1:6379>CLUSTERMEET127.0.0.16382OK
再次查看此时集群中包含的节点情况:
127.0.0.1:6379>CLUSTERNODESc47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016036323092834connected87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379myself,master-016036323080001connected51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016036323102922connected9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481master-016036323090005connected4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479master-016036323080003connected32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480master-016036323113020connected
可以发现此时6个节点均作为主节点加入到集群中, CLUSTER NODES 返回的结果各项含义如下:
<id><ip:port@cport><flags><master><ping-sent><pong-recv><config-epoch><link-state><slot><slot>...<slot>
节点id: 由40个16进制字符串组成,节点id只在集群初始化时创建一次,然后保存到集群配置文件(即前文提到的cluster-config-file)中,以后节点重新启动时会直接在集群配置文件中读取。
port@cport: 前者为普通端口,用于为客户端提供服务;后者为集群端口,分配方法为:普通端口+10000,只用于节点间的通讯。
其余各项的详细解释可以参考官方文档cluster nodes。
1.3 槽指派
Redis集群通过分片(sharding)的方式保存数据库的键值对,整个数据库被分为16384个槽(slot),数据库每个键都属于这16384个槽的一个,集群中的每个节点都可以处理0个或者最多16384个slot。
槽是数据管理和迁移的基本单位。当数据库中的16384个槽都分配了节点时,集群处于上线状态(ok);如果有任意一个槽没有分配节点,则集群处于下线状态(fail)。
注意,只有主节点有处理槽的能力,如果将槽指派步骤放在主从复制之后,并且将槽位分配给从节点,那么集群将无法正常工作(处于下线状态)。
利用 CLUSTER ADDSLOTS
redis-cli-p6379clusteraddslots{0..5000}redis-cli-p6380clusteraddslots{5001..10000}redis-cli-p6381clusteraddslots{10001..16383}
槽指派后集群中节点情况如下:
127.0.0.1:6379>CLUSTERNODESc47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016036328803104connected5001-1000087b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379myself,master-016036328790001connected0-500051081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016036328790002connected10001-163839d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481master-016036328780005connected4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479master-016036328800003connected32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480master-016036328813170connected127.0.0.1:6379>CLUSTERINFOcluster_state:ok#集群处于上线状态cluster_slots_assigned:16384cluster_slots_ok:16384cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:6cluster_size:3cluster_current_epoch:5cluster_my_epoch:1cluster_stats_messages_ping_sent:4763cluster_stats_messages_pong_sent:4939cluster_stats_messages_meet_sent:5cluster_stats_messages_sent:9707cluster_stats_messages_ping_received:4939cluster_stats_messages_pong_received:4768cluster_stats_messages_received:9707
1.4 主从复制
上述步骤后,集群节点均作为主节点存在,仍不能实现Redis的高可用,配置主从复制之后,才算真正实现了集群的高可用功能。
CLUSTER REPLICATE <node_id> 用来让集群中接收命令的节点成为 node_id 所指定节点的从节点,并开始对主节点进行复制。
redis-cli-p6479clusterreplicate87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52redis-cli-p6480clusterreplicatec47598b25205cc88abe2e5094d5bfd9ea202335fredis-cli-p6481clusterreplicate51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6379>CLUSTERNODESc47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016036331052114connected5001-1000087b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379myself,master-016036331050001connected0-500051081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016036331050002connected10001-163839d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481slave51081a64ddb3ccf5432c435a8cf20d45ab795dd8016036331072295connected4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479slave87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52016036331062213connected32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480slavec47598b25205cc88abe2e5094d5bfd9ea202335f016036331040004connected
顺带补充,上述步骤1.2,1.3,1.4可以利用 redis-trib.rb 工具整体实现,在Redis 5.0之后直接利用 redis-cli 完成,参考命令如下:
redis-cli--clustercreate127.0.0.1:6379127.0.0.1:6479127.0.0.1:6380127.0.0.1:6480127.0.0.1:6381127.0.0.1:6481--cluster-replicas1
--cluster-replicas 1 指示给定的创建节点列表是以主节点+从节点对组成的。
1.5 在集群中执行命令
集群此时处于上线状态,可以通过客户端向集群中的节点发送命令。接收命令的节点会计算出命令要处理的键属于哪个槽,并检查这个槽是否指派给自己。
如果键所在的slot刚好指派给了当前节点,会直接执行这个命令。
否则,节点向客户端返回 MOVED 错误,指引客户端转向 redirect 至正确的节点,并再次发送此前的命令。
此处,我们利用 CLUSTER KEYSLOT 查看到键 name 所在槽号为5798(被分配在6380节点),当对此键操作时,会被重定向到相应的节点。对键 fruits 的操作与此类似。
127.0.0.1:6379>CLUSTERKEYSLOTname(integer)5798127.0.0.1:6379>setnamehuey->Redirectedtoslot[5798]locatedat127.0.0.1:6380OK127.0.0.1:6380>127.0.0.1:6379>getfruits->Redirectedtoslot[14943]locatedat127.0.0.1:6381"apple"127.0.0.1:6381>
值得注意的是,当我们将命令通过客户端发送给一个从节点时,命令会被重定向至对应的主节点。
127.0.0.1:6480>KEYS*1)"name"127.0.0.1:6480>getname->Redirectedtoslot[5798]locatedat127.0.0.1:6380"huey"
1.6 集群故障转移
集群中主节点下线时,复制此主节点的所有的从节点将会选出一个节点作为新的主节点,并完成故障转移。和主从复制的配置相似,当原先的从节点再次上线,它会被作为新主节点的的从节点存在于集群中。
下面模拟6379节点宕机的情况(将其SHUTDOWN),可以观察到其从节点6479将作为新的主节点继续工作。
462:S26Oct14:08:12.750*FAILmessagereceivedfromc47598b25205cc88abe2e5094d5bfd9ea202335fabout87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52462:S26Oct14:08:12.751#Clusterstatechanged:fail462:S26Oct14:08:12.829#Startofelectiondelayedfor595milliseconds(rank#0,offset9160).462:S26Oct14:08:13.434#Startingafailoverelectionforepoch6.462:S26Oct14:08:13.446#Failoverelectionwon:I'mthenewmaster.462:S26Oct14:08:13.447#configEpochsetto6aftersuccessfulfailover462:M26Oct14:08:13.447#SettingsecondaryreplicationIDtod357886e00341b57bf17e46b6d9f8cf53b7fad21,validuptooffset:9161.NewreplicationIDisadbf41b16075ea22b17f145186c53c4499864d5b462:M26Oct14:08:13.447*Discardingpreviouslycachedmasterstate.462:M26Oct14:08:13.448#Clusterstatechanged:ok
6379节点从宕机状态恢复后,将作为6380节点的从节点存在。
127.0.0.1:6379>CLUSTERNODES51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016036929680002connected10001-16383c47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016036929685040connected5001-100004c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479master-016036929674956connected0-500087b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379myself,slave4c23b25bd4bcef7f4b77d8287e330ae72e738883016036929640001connected9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481slave51081a64ddb3ccf5432c435a8cf20d45ab795dd8016036929670004connected32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480slavec47598b25205cc88abe2e5094d5bfd9ea202335f016036929670005connected
前文提到 cluster-config-file 会记录下集群节点的状态,打开节点6379的配置文件 nodes-6379.conf ,可以看到 CLUSTER NODES 所示信息均被保存在配置文件中:
51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016036949202062connected10001-16383c47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016036949160000connected5001-100004c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479master-016036949200006connected0-500087b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379myself,slave4c23b25bd4bcef7f4b77d8287e330ae72e738883016036949180001connected9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481slave51081a64ddb3ccf5432c435a8cf20d45ab795dd8016036949190004connected32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480slavec47598b25205cc88abe2e5094d5bfd9ea202335f016036949192005connectedvarscurrentEpoch6lastVoteEpoch0
2 集群伸缩实践
集群伸缩的关键在于对集群的进行重新分片,实现槽位在节点间的迁移。本节将以在集群中添加节点和删除节点为例,对槽迁移进行实践。
借助于 redis-cli 中集成的 redis-trib.rb 工具进行槽位的管理,工具的帮助菜单如下:
$redis-cli--clusterhelpClusterManagerCommands:createhost1:port1...hostN:portN--cluster-replicas<arg>checkhost:port--cluster-search-multiple-ownersinfohost:portfixhost:port--cluster-search-multiple-owners--cluster-fix-with-unreachable-mastersreshardhost:port--cluster-from<arg>--cluster-to<arg>--cluster-slots<arg>--cluster-yes--cluster-timeout<arg>--cluster-pipeline<arg>--cluster-replacerebalancehost:port--cluster-weight<node1node1=w1...nodeN=wN>--cluster-use-empty-masters--cluster-timeout<arg>--cluster-simulate--cluster-pipeline<arg>--cluster-threshold<arg>--cluster-replaceadd-nodenew_host:new_portexisting_host:existing_port--cluster-slave--cluster-master-id<arg>del-nodehost:portnode_idcallhost:portcommandargarg..argset-timeouthost:portmillisecondsimporthost:port--cluster-from<arg>--cluster-copy--cluster-replacebackuphost:portbackup_directoryhelpForcheck,fix,reshard,del-node,set-timeoutyoucanspecifythehostandportofanyworkingnodeinthecluster.
2.1 集群伸缩-添加节点
考虑在集群中添加两个节点,端口号为6382和6482,其中节点6482对6382进行复制。
(1) 启动节点:按照1.1中介绍的步骤,启动6382和6482节点。
(2) 节点握手:借助 redis-cli --cluster add-node 命令分别添加节点6382和6482。
redis-cli--clusteradd-node127.0.0.1:6382127.0.0.1:6379redis-cli--clusteradd-node127.0.0.1:6482127.0.0.1:6379$redis-cli--clusteradd-node127.0.0.1:6382127.0.0.1:6379>>>Addingnode127.0.0.1:6382tocluster127.0.0.1:6379>>>PerformingClusterCheck(usingnode127.0.0.1:6379)S:87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379slots:(0slots)slavereplicates4c23b25bd4bcef7f4b77d8287e330ae72e738883M:51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381slots:[10001-16383](6383slots)master1additionalreplica(s)M:c47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380slots:[5001-10000](5000slots)master1additionalreplica(s)M:4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479slots:[0-5000](5001slots)master1additionalreplica(s)S:9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481slots:(0slots)slavereplicates51081a64ddb3ccf5432c435a8cf20d45ab795dd8S:32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480slots:(0slots)slavereplicatesc47598b25205cc88abe2e5094d5bfd9ea202335f[OK]Allnodesagreeaboutslotsconfiguration.>>>Checkforopenslots...>>>Checkslotscoverage...[OK]All16384slotscovered.>>>SendCLUSTERMEETtonode127.0.0.1:6382tomakeitjointhecluster.[OK]Newnodeaddedcorrectly.```shell3)重新分片:借助redis-cli--clusterreshard命令对集群重新分片,使得各节点槽位均衡(分别从节点6379/6380/6381中迁移一些slot到节点6382中)。需要指定:*移动的槽位数:最终平均每个主节点有4096个slot,因此总共移动4096slots*接收槽位的目标节点ID:节点6382的ID*移出槽位的源节点ID:节点6379/6380/6381的ID```shell$redis-cli--clusterreshard127.0.0.16479>>>PerformingClusterCheck(usingnode127.0.0.1:6479)M:4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479slots:[0-5000](5001slots)master1additionalreplica(s)S:32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480slots:(0slots)slavereplicatesc47598b25205cc88abe2e5094d5bfd9ea202335fM:706f399b248ed3a080cf1d4e43047a79331b714f127.0.0.1:6482slots:(0slots)masterM:af81109fc29f69f9184ce9512c46df476fe693a3127.0.0.1:6382slots:(0slots)masterM:51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381slots:[10001-16383](6383slots)master1additionalreplica(s)S:9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481slots:(0slots)slavereplicates51081a64ddb3ccf5432c435a8cf20d45ab795dd8S:87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379slots:(0slots)slavereplicates4c23b25bd4bcef7f4b77d8287e330ae72e738883M:c47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380slots:[5001-10000](5000slots)master1additionalreplica(s)[OK]Allnodesagreeaboutslotsconfiguration.>>>Checkforopenslots...>>>Checkslotscoverage...[OK]All16384slotscovered.Howmanyslotsdoyouwanttomove(from1to16384)?4096WhatisthereceivingnodeID?
(4) 设置主从关系:
redis-cli-p6482clusterreplicateaf81109fc29f69f9184ce9512c46df476fe693a3127.0.0.1:6482>CLUSTERNODES32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480slavec47598b25205cc88abe2e5094d5bfd9ea202335f016036949300000connected51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016036949310002connected11597-163839d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481slave51081a64ddb3ccf5432c435a8cf20d45ab795dd8016036949320002connected706f399b248ed3a080cf1d4e43047a79331b714f127.0.0.1:6482@16482myself,slaveaf81109fc29f69f9184ce9512c46df476fe693a3016036949320008connected87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379slave4c23b25bd4bcef7f4b77d8287e330ae72e738883016036949320006connectedc47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016036949336780connected6251-100004c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479master-016036949326696connected1250-5000af81109fc29f69f9184ce9512c46df476fe693a3127.0.0.1:6382@16382master-016036949330009connected0-12495001-625010001-11596
2.2 集群伸缩-删除节点
这里考虑将新添加的两个节点6382和6482删除,需要将节点6382上分配的槽位迁移到其他节点。
(1) 重新分片: 同样借助 redis-cli --cluster reshard 命令,将6382节点上的槽位全部转移到节点6479上。
$redis-cli--clusterreshard127.0.0.16382>>>PerformingClusterCheck(usingnode127.0.0.1:6382)M:af81109fc29f69f9184ce9512c46df476fe693a3127.0.0.1:6382slots:[0-1249],[5001-6250],[10001-11596](4096slots)master1additionalreplica(s)M:51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381slots:[11597-16383](4787slots)master1additionalreplica(s)S:87b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379slots:(0slots)slavereplicates4c23b25bd4bcef7f4b77d8287e330ae72e738883S:32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480slots:(0slots)slavereplicatesc47598b25205cc88abe2e5094d5bfd9ea202335fM:4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479slots:[1250-5000](3751slots)master1additionalreplica(s)M:c47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380slots:[6251-10000](3750slots)master1additionalreplica(s)S:706f399b248ed3a080cf1d4e43047a79331b714f127.0.0.1:6482slots:(0slots)slavereplicatesaf81109fc29f69f9184ce9512c46df476fe693a3S:9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481slots:(0slots)slavereplicates51081a64ddb3ccf5432c435a8cf20d45ab795dd8[OK]Allnodesagreeaboutslotsconfiguration.>>>Checkforopenslots...>>>Checkslotscoverage...[OK]All16384slotscovered.Howmanyslotsdoyouwanttomove(from1to16384)?4096WhatisthereceivingnodeID?4c23b25bd4bcef7f4b77d8287e330ae72e738883PleaseenterallthesourcenodeIDs.Type'all'touseallthenodesassourcenodesforthehashslots.Type'done'onceyouenteredallthesourcenodesIDs.Sourcenode#1:af81109fc29f69f9184ce9512c46df476fe693a3Sourcenode#2:done127.0.0.1:6379>CLUSTERNODESc47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016037735409220connected6251-1000087b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379myself,slave4c23b25bd4bcef7f4b77d8287e330ae72e738883016037735390001connected4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479master-0160377354100010connected0-625010001-11596706f399b248ed3a080cf1d4e43047a79331b714f127.0.0.1:6482@16482slave4c23b25bd4bcef7f4b77d8287e330ae72e7388830160377354100010connected32ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480slavec47598b25205cc88abe2e5094d5bfd9ea202335f016037735390005connected9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481slave51081a64ddb3ccf5432c435a8cf20d45ab795dd8016037735419314connectedaf81109fc29f69f9184ce9512c46df476fe693a3127.0.0.1:6382@16382master-016037735390009connected51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016037735400002connected11597-16383
(2) 删除节点: 利用 redis-cli --cluster del-node 命令依次删除从节点6482和主节点6382。
$redis-cli--clusterdel-node127.0.0.1:6482706f399b248ed3a080cf1d4e43047a79331b714f>>>Removingnode706f399b248ed3a080cf1d4e43047a79331b714ffromcluster127.0.0.1:6482>>>SendingCLUSTERFORGETmessagestothecluster...>>>SendingCLUSTERRESETSOFTtothedeletednode.$redis-cli--clusterdel-node127.0.0.1:6382af81109fc29f69f9184ce9512c46df476fe693a3>>>Removingnodeaf81109fc29f69f9184ce9512c46df476fe693a3fromcluster127.0.0.1:6382>>>SendingCLUSTERFORGETmessagestothecluster...>>>SendingCLUSTERRESETSOFTtothedeletednode.127.0.0.1:6379>CLUSTERNODESc47598b25205cc88abe2e5094d5bfd9ea202335f127.0.0.1:6380@16380master-016037736791210connected6251-1000087b7dfacde34b3cf57d5f46ab44fd6fffb2e4f52127.0.0.1:6379@16379myself,slave4c23b25bd4bcef7f4b77d8287e330ae72e738883016037736770001connected4c23b25bd4bcef7f4b77d8287e330ae72e738883127.0.0.1:6479@16479master-0160377367800010connected0-625010001-1159632ed645a9c9d13ca68dba5a147937fb1d05922ee127.0.0.1:6480@16480slavec47598b25205cc88abe2e5094d5bfd9ea202335f016037736801305connected9d587b75bdaed26ca582036ed706df8b2282b0aa127.0.0.1:6481@16481slave51081a64ddb3ccf5432c435a8cf20d45ab795dd8016037736770994connected51081a64ddb3ccf5432c435a8cf20d45ab795dd8127.0.0.1:6381@16381master-016037736781122connected11597-16383
关于怎么搭建Redis集群环境问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。