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
相关推荐
以下是关于使用Docker部署Redis集群节点的一些资源: - [Redis Docker官方镜像文档](https://hub.docker.com/_/redis):官方文档,包含了Redis Docker镜像的使用说明、示例和一些技术细节等。 - [Redis集群草稿设计...
可配置化shel脚本监控redis集群节点,如果节点运行异常,发送邮件到配置一个或多个管理员邮箱,无任何坑
docker-compose 形式部署 redis 1主2从3哨兵 redis 多节点高可用 redis 主从哨兵 redis 集群高可用 redis 哨兵 redis 高可用
本文测试 redis集群节点宕机 fail状态以上篇博文为基础Redis集群策略及集群实例。 在Redis集群策略及集群实例中通过单机集群创建多实例(3主3从)的方式搭建了redis集群,以此为基础做实测 首先查看一下集群状态...
Redis集群配置文件,包含了三个主节点,三个从节点的配置文件,该配置是在docker中运行,有完整的docker-compose.yml文件,只要修改映射的宿主机的路径为你自己的路径。然后直接docker-compose up既可以完成环境启动...
Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 支持单实例模式,集群主从模式、哨兵模式等部署
redis集群4节点安装搭建 直接bat一健搭建不用配置直接可用,支持64位操作系统
redis集群部署文档,一、RedisCluster集群安装(centos6.5 X64系统),二、安装结果测试,三、Redis集群常用管理命令,四、集群节点管理命令
集群已配置好,点击start.bat即可开启,可以按个人需求添加或删除redis服务器个数。...#集群节点文件的位置 cluster-config-file D:\InstallDir\redis6\bin\6380\nodes.conf #节点失联时间 cluster-node-timeout 15000
Redis集群Docker化部署文档,1、基础集群构建,2、制作redis节点镜像3、运行redis集群
这是redis集群整合包及手順,其中包括三个节点的redis.conf、redis-4.0.1.gem、redis-4.0.11.tar、ruby-2.5.5.tar、rubygems-3.0.4、集群待见手順。对于离线环境搭建redis集群很有帮助
涉及知识:虚拟机中CentOS7 系统安装,Xshell及Winscp的使用,Redis单节点安装部署,Redis五种类型命令练习,服务器的配置,Redis集群部署全过程,Redis高可用性的测试,过程详细,本人自己学习的时候整理的。...
redis 集群配置示例 ...redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;
在高并发、大数据的背景下,单机版的Redis已无法满足我们的需求,这时候我们就需要Redis集群。本文将带你详细了解如何使用Java来操作Redis分布式集群,提高数据处理的能力。 Redis集群 集群定义:Redis集群是一种将...
Redis集群windows搭建redis集群并增加节点和删除节点-附件资源
Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低Redis集群的性能, 并导致不可预测的行为。 Redis 集群通过...
Redis集群增加节点与删除节点的方法详解 ...Redis集群以及自动故障转移测试 ...执行命令: ...cluster nodes 查看集群节点信息,看主从节点信息 ps aux | grep redis 查看想要宕机的redis主节点的进程id kil
该文档主要介绍redis的集群部署方式①单台机器6节点集群部署;②3台机器6节点集群部署
redis cluster 集群节点配置 拿来即用
redis 集群搭建 ,单节点,集群搭建,工具包