Redis 动态添加节点
redis可以动态热部署,数据动态迁移
新建两个服务,跟创建集群时创建节点一样
1.创建两个节点文件夹6004 7004
2.拷贝一个节点的redis部署文件到6004 7004 文件下
cp -rf 6001/* 7001
3.拷贝redis.conf 到文件夹下。
sh-3.2# cp 6001/redis.conf 6004
sh-3.2# cp 6001/redis.conf 7004
sh-3.2# vi 6004/redis.conf 【修改配置】
sh-3.2# vi 7004/redis.conf
4.启动服务
/usr/local/bin/redis-server /usr/local/cluster-redis/6004/redis.conf
/usr/local/bin/redis-server /usr/local/cluster-redis/7004/redis.conf
此时查看服务会发现他们时单独的master节点,并没有slave节点
5.将节点动态加入到集群中
直接敲命令可以看到帮助信息
./redis-trib.rb
(1)Create -创建集群环境
./redis-trib.rb create 1 ip1:port1 ip2:port2 ……
(2)Call -可以执行redis命令
(3)add-node -可以添加一个节点到集群,第一个节点为新节点的ip:port , 第二个参数为集群中任意一个极点的ip;port
(4)del-node -删除一个节点
(5)reshard -重新分配
(6)check -检查集群状态
6.增加一个主节点6004
/usr/local/redis-3.2.8/src/redis-trib.rb add-node 192.168.99.171:6004 192.168.99.171:6001
执行结果如下:
sh-3.2# /usr/local/redis-3.2.8/src/redis-trib.rb add-node 192.168.99.171:6004 192.168.99.171:6001
>>> Adding node 192.168.99.171:6004 to cluster 192.168.99.171:6001
>>> Performing Cluster Check (using node 192.168.99.171:6001)
M: 41040ebe0a355446e8aacb1ece9363ae1cd52a2a 192.168.99.171:6001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 7df9adb8cb22702a37adf78cf638b2237dbb295d 192.168.99.171:6002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: ec6b05010a22dc4002ddee7c7a11d8f408c8a471 192.168.99.171:7003
slots: (0 slots) slave
replicates 4ac4444bbdbe31270be1c162233ef663899047a6
M: 4ac4444bbdbe31270be1c162233ef663899047a6 192.168.99.171:6003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 21d0cde48313ca062ac059b94230665c1e27924a 192.168.99.171:7002
slots: (0 slots) slave
replicates 7df9adb8cb22702a37adf78cf638b2237dbb295d
S: bc472066eebfec7751ff0feaad4afc81e84c4d9c 192.168.99.171:7001
slots: (0 slots) slave
replicates 41040ebe0a355446e8aacb1ece9363ae1cd52a2a
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.99.171:6004 to make it join the cluster.
[OK] New node added correctly.
7.查看节点
/usr/local/bin/redis-cli -h 192.168.99.171 -p 6004
192.168.99.171:6004> cluster nodes
ec6b05010a22dc4002ddee7c7a11d8f408c8a471 192.168.99.171:7003 slave 4ac4444bbdbe31270be1c162233ef663899047a6 0 1488727437088 3 connected
41040ebe0a355446e8aacb1ece9363ae1cd52a2a 192.168.99.171:6001 master - 0 1488727434564 8 connected 0-5460
21d0cde48313ca062ac059b94230665c1e27924a 192.168.99.171:7002 slave 7df9adb8cb22702a37adf78cf638b2237dbb295d 0 1488727436582 2 connected
bc472066eebfec7751ff0feaad4afc81e84c4d9c 192.168.99.171:7001 slave 41040ebe0a355446e8aacb1ece9363ae1cd52a2a 0 1488727431541 8 connected
4ac4444bbdbe31270be1c162233ef663899047a6 192.168.99.171:6003 master - 0 1488727437594 3 connected 10923-16383
522813ab806b2a6d0739275306dce1fa685761a0 192.168.99.171:6004 myself,master - 0 0 0 connected
7df9adb8cb22702a37adf78cf638b2237dbb295d 192.168.99.171:6002 master - 0 1488727435572 2 connected 5461-10922
(注意) 新增加的节点没有任何数据,因为它没有分配任何slot,需要手工为新增加的节点分配槽
8.分配slot
(1) 使用redis-trib.rb reshard 命令,找到需要拆分slot的主节点。对其进行重新分配
sh-3.2# redis-trib.rb reshard 192.168.99.171:6001
>>> Performing Cluster Check (using node 192.168.99.171:6001)
M: 41040ebe0a355446e8aacb1ece9363ae1cd52a2a 192.168.99.171:6001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 7df9adb8cb22702a37adf78cf638b2237dbb295d 192.168.99.171:6002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: ec6b05010a22dc4002ddee7c7a11d8f408c8a471 192.168.99.171:7003
slots: (0 slots) slave
replicates 4ac4444bbdbe31270be1c162233ef663899047a6
M: 522813ab806b2a6d0739275306dce1fa685761a0 192.168.99.171:6004
slots: (0 slots) master
0 additional replica(s)
M: 4ac4444bbdbe31270be1c162233ef663899047a6 192.168.99.171:6003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 21d0cde48313ca062ac059b94230665c1e27924a 192.168.99.171:7002
slots: (0 slots) slave
replicates 7df9adb8cb22702a37adf78cf638b2237dbb295d
S: bc472066eebfec7751ff0feaad4afc81e84c4d9c 192.168.99.171:7001
slots: (0 slots) slave
replicates 41040ebe0a355446e8aacb1ece9363ae1cd52a2a
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 200
你想要移动多少个槽
What is the receiving node ID? 522813ab806b2a6d0739275306dce1fa685761a0
你的接受这些槽的节点id时多少?
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
All 表示从所有现有节点上随机移动200个槽
Done 表示从指定节点上移动200个槽
Moving slot 10986 from 4ac4444bbdbe31270be1c162233ef663899047a6
Moving slot 10987 from 4ac4444bbdbe31270be1c162233ef663899047a6
.
.执行计划打印
.
Moving slot 10988 from 4ac4444bbdbe31270be1c162233ef663899047a6
Do you want to proceed with the proposed reshard plan (yes/no)? yes
你想要执行这个目标计划吗?
执行成功后就可以用cluster nodes命令查看到6004节点上有槽
添加另外一个节点(从节点),不需要分配槽
(1)创建节点
sh-3.2# /usr/local/redis-3.2.8/src/redis-trib.rb add-node 192.168.99.171:7004 192.168.99.171:6001
(2)登录7004节点
sh-3.2# /usr/local/bin/redis-cli -h 192.168.99.171 -p 7004
(3)7004 与刚建好的 6004 节点主从关联,看到ok则说明执行成功
192.168.99.171:7004> cluster replicate 522813ab806b2a6d0739275306dce1fa685761a0
OK
(4)查看节点状态 cluster nodes
能看到7004后面关联着的主节点是6004的id
相关推荐
本文将深入探讨如何使用Shell脚本来监控Redis集群节点,并在检测到异常时通过邮件通知管理员。 首先,让我们了解一下Redis。Redis是一个高性能的键值数据库,常用于缓存、消息队列等场景。它支持多种数据结构,如...
以下是关于使用Docker部署Redis集群节点的一些资源: - [Redis Docker官方镜像文档](https://hub.docker.com/_/redis):官方文档,包含了Redis Docker镜像的使用说明、示例和一些技术细节等。 - [Redis集群草稿设计...
在部署Redis集群前,你需要准备至少三个物理或虚拟机,因为Redis集群至少需要三个主节点来保证数据的可用性。每个节点都需要安装并启动Redis服务器。节点间需要通过网络连接,并配置好相应的端口(默认为6379,集群...
在Spring Boot 2.1及以上版本中,我们可以利用`spring.redis.cluster.nodes`属性来实现零配置连接到Redis集群,只需将所有集群节点的IP和端口以逗号分隔的形式列出即可,如: ```properties spring.redis.cluster....
2. 初始化JedisCluster:在Java代码中,我们需要创建一个JedisCluster对象,传入Redis集群的节点信息。这里以公网IP为例: ```java Set<HostAndPort> nodes = new HashSet(); nodes.add(new HostAndPort("公网IP...
Rancher搭建redis集群配置Rancher搭建Rancher搭建redis集群配置Rancher搭建Rancher搭建redis集群配置Rancher搭建Rancher搭建redis集群配置Rancher搭建
接下来是**Redis集群配置**。在集群模式下,Redis数据分散在多个节点上,每个节点只负责一部分数据,提高扩展性和可用性。Spring Data Redis提供了ClusterConnectionFactory来处理集群连接。配置需要指定所有节点的...
在Spring配置文件中,我们需要定义`ConnectionFactory`,通常使用`JedisConnectionFactory`,并设置集群节点信息,包括节点地址、端口、密码等。 3. **连接池配置**: 为了提高性能和资源利用率,我们通常使用连接...
Redis集群可以将数据分布在多个节点上,从而提高系统的性能和可扩展性。同时,Redis集群也可以提供高可用性的服务,避免单点故障的出现。 集成Redis集群的步骤 ### 第一步:架包 在SpringBoot 2.X中,需要添加...
在Spring中配置Redis集群,我们需要在`application.properties`或`yaml`文件中指定集群节点的详细信息,例如: ```properties spring.redis.cluster.nodes=192.168.1.1:7001,192.168.1.1:7002,192.168.1.1:7003 ```...
2. **主从复制**:在Redis集群中,每个节点都有一个或多个副本节点,主节点负责处理写操作,而从节点负责备份数据并处理读请求,确保高可用性。当主节点故障时,从节点可以接管其职责。 3. **槽迁移**:在添加或...
本文将详细讨论如何在Java环境下连接Redis集群并实现批量插入String类型的数据。 首先,我们需要理解Redis集群的基本概念。Redis集群是通过分片(Sharding)技术来分散数据到多个节点,每个节点存储一部分数据。在...
本文测试 redis集群节点宕机 fail状态以上篇博文为基础Redis集群策略及集群实例。 在Redis集群策略及集群实例中通过单机集群创建多实例(3主3从)的方式搭建了redis集群,以此为基础做实测 首先查看一下集群状态...
高可用之Redis集群的扩展测试 高可用之Redis集群的扩展测试是指在既有的Redis集群基础上,通过添加新的Redis节点来提高集群的可用性和扩展性。本文将介绍如何在现有的Redis集群中添加新的Redis节点,以提高集群的...
3. **Redis集群高可用**:Redis集群通过分片(Sharding)和槽区(Slot)分配,将数据分散到多个节点上,这样即使部分节点故障,其他节点仍能提供服务。Docker Compose配置中,我们需要定义多个集群节点,每个节点都...
集成SpringBoot与Redis集群的第一步是添加相应的依赖。在`pom.xml`或`build.gradle`文件中,你需要包含Spring Data Redis库和Spring Boot的Redis starter。对于Maven项目,可以在`pom.xml`中添加以下依赖: ```xml ...
在迁移前,务必先检查源和目标Redis集群的信息,例如使用`cluster nodes`命令获取主节点信息。然后,根据这些信息修改RedisShake的配置文件,确保源和目标的类型、地址、端口和密码正确无误。 对于Redis-Cluster到...
在Redis集群中,数据被分散存储在多个节点上,每个节点负责一部分数据,从而提高了系统的扩展性和容错性。以下将详细介绍Redis集群配置文件的相关知识,以及如何进行集群搭建。 首先,了解Redis集群的基本概念: 1....
#### 知识点七:Redis集群节点配置 在Redis集群中,节点可以分为master和slave。本例中,我们创建了三个master节点,分别是ruwe-service-test1, ruwe-service-test2和ruwe-service-test3,它们的端口号分别是7000, ...