redis5.0.8 集群部署

 集群搭建

1 准备工作

redis5.0版本之后可以直接使用redis-cli命令创建集群

2 集群部署情况

(1)Redis集群最少需要6个节点,3主3从,可以分布在一台或者多台主机上。

真集群:6台主机,每台主机的redis服务使用的IP不同,端口号随意,一样不一样都可以

假集群,一台主机,redis服务使用的IP相同,端口号不同

本例子是在三台主机上创建假集群,不同的端口表示不同的redis节点,如下:

192.168.1.108:7000 192.168.1.108:7001

192.168.1.104:7002 192.168.1.104:7003

192.168.1.103:7004 192.168.1.103:7005

后期新加的主节点:192.168.1.108:7006

后期新家的从节点:192.168.1.103:7007

(2)分别在三台机器上的/etc/redis目录,创建对应配置文件如下

192.168.1.108上  cluster7000.conf 、cluster7001.conf 、cluster7006.conf

 192.168.1.104上 cluster7002.conf  cluster7003.conf

 192.168.1.103上 cluster7004.conf  cluster7005.conf  cluster7007.conf

(3)配置文件改动内容

bind 0.0.0.0
protected-mode no
port 7000

cluster-enabled yes

cluster-config-file nodes-xxxx.conf

cluster-node-timeout 5000

daemonize yes
save 120 10
appendonly no

 

3 启动每个节点redis服务


/usr/local/bin/redis-server  /etc/redis/cluster7000.conf


/usr/local/bin/redis-server  /etc/redis/cluster7001.conf

。。。。。

 

4 执行创建集群命令

redis-cli --cluster create 192.168.1.108:7000 192.168.1.108:7001 192.168.1.104:7002 192.168.1.104:7003 192.168.1.103:7004 192.168.1.103:7005  --cluster-replicas 1

5 查询集群信息

录一台客户端7000端口 查看集群情况主节点 

redis-cli -c -p 7000 cluster nodes |  grep master

参数说明:

  • -c:表示以集群方式连接惹redis
  • -h:指定IP地址
  • -p:指定端口
  • cluster nodes:查询集群节点信息
  • cluster info:查询集群状态信息

 

6 redis cluster集群重新启动

因为集群已经创建过了,若是关机等原因关闭了redis服务,则只需要执行批量启动脚本即可,就会自动开启集群,因为有node.conf文件的存在

 

7 集群常用命令

# 创建集群
redis-cli --cluster create host1:port1 ... hostN:portN --cluster-replicas <arg>
# 例子
redis-cli --cluster create 192.168.1.108:7000 192.168.1.108:7001 192.168.1.104:7002 192.168.1.104:7003 192.168.1.103:7004 192.168.1.103:7005  --cluster-replicas 1
# 例子说明
host1:port1 ... hostN:portN表示的是要添加的集群的节点IP和端口,
--cluster-replicas <arg>表示的是主从节点比例。



# 查询集群节点信息
redis-cli -c -p 7000 cluster nodes  [| grep master]      


c30a1e009b6233cad0885395eec6432658a4ac28 192.168.1.108:7000@17000 master - 0 1590723132224 1 connected 0-5460
1c4488b3ac1a19ba2c40d0ed60e531fb023a888e 192.168.1.108:7001@17001 slave 4df9ed9a6655e330866453defbf77bf6b83529c3 0 1590723133233 5 connected
635b646988ac044a41cf7a4d0c0053c64fa40e14 192.168.1.104:7003@17003 myself,slave c30a1e009b6233cad0885395eec6432658a4ac28 0 1590723131000 4 connected
4df9ed9a6655e330866453defbf77bf6b83529c3 192.168.1.103:7004@17004 master - 0 1590723131213 5 connected 10923-16383
ba9f42b32523fc376c1e13261b36d7a5c64e3f61 192.168.1.104:7002@17002 master - 0 1590723133030 3 connected 5461-10922
75f7e0409f1d50a1f761aa71db63727ad2e71be3 192.168.1.103:7005@17005 slave ba9f42b32523fc376c1e13261b36d7a5c64e3f61 0 1590723131000 6 connected
127.0.0.1:7003>


########################说明:以下的操作均是以上面这个为参数示例

# 给集群添加一个新主节点
redis-cli --cluster add-node new_host:new_port existing_host:existing_port --cluster-master-id node_id

# 例子-首先需要启动新的redis 7006服务,我们假设放到108这台机器上),这里最后一个master是对应在7004

redis-cli --cluster add-node 192.168.1.108:7006  192.168.1.103:7004 --cluster-master-id 4df9ed9a6655e330866453defbf77bf6b83529c3

# 例子说明
new_host:new_port为要新添加的主节点IP和端口,此处是192.168.1.108:7006
existing_host:existing_port表示的是已存在的最后一个主节点的IP和端口,这个可以从上述的节点信息中查看到,根据slots槽数,7004端口对应的节点槽数是10923-16383,16383表示的是最后的槽数
--cluster-master-id表示的是最后一个主节点的节点id,表示的是新添加的主节点要在这个节点后面

# 再次查看集群信息 会发现7006端口对应的节点已经加入到集群中,是主节点,但是没有从节点,也没有分配槽数

# 给新添加的主节点分配slots槽数
redis-cli --cluster reshard host:port --cluster-from node_id --cluster-to node_id --cluster-slots 500 --cluster-yes

# 例子
redis-cli --cluster reshard 192.168.1.108:7006 --cluster-from c30a1e009b6233cad0885395eec6432658a4ac28 --cluster-to fd09b958448307f9b584e81b0b69727db25dafff  --cluster-slots 500 

# 例子说明
host:port表示的是新添加的那个主节点IP和端口,此处表示的是192.168.1.108:7006
--cluster-from node_id表示的是集群第一个主节点的节点id,这个可以现有集群的slots槽数分配看出,此处表示的是7000端口对应的节点
--cluster-to node_id表示的是集群最后一个主节点的节点id,也就是新添加的那个主节点id,此处表示的是7006端口对应的节点
--cluster-slots 500表示的是给新主节点分配多少,此处500表示是分配从0-499个slots槽数,若不加上这个会让手动输入
--cluster-yes表示的是自动应答为yes,若不加上这个会让手动输入yes,表示同意此次分配

# 再次查看集群信息
fd09b958448307f9b584e81b0b69727db25dafff 192.168.1.108:7006@17006 master - 0 1590723788952 7 connected 0-499
c30a1e009b6233cad0885395eec6432658a4ac28 192.168.1.108:7000@17000 master - 0 1590723788551 1 connected 500-5460
1c4488b3ac1a19ba2c40d0ed60e531fb023a888e 192.168.1.108:7001@17001 slave 4df9ed9a6655e330866453defbf77bf6b83529c3 0 1590723789000 5 connected
635b646988ac044a41cf7a4d0c0053c64fa40e14 192.168.1.104:7003@17003 myself,slave c30a1e009b6233cad0885395eec6432658a4ac28 0 1590723788000 4 connected
4df9ed9a6655e330866453defbf77bf6b83529c3 192.168.1.103:7004@17004 master - 0 1590723788000 5 connected 10923-16383
ba9f42b32523fc376c1e13261b36d7a5c64e3f61 192.168.1.104:7002@17002 master - 0 1590723788000 3 connected 5461-10922
75f7e0409f1d50a1f761aa71db63727ad2e71be3 192.168.1.103:7005@17005 slave ba9f42b32523fc376c1e13261b36d7a5c64e3f61 0 1590723789960 6 connected
# 会发现7006端口对应的主节点已经有slots槽数了,并且是从0开始的


# 给集群中某个主节点再添加一个从节点
redis-cli --cluster add-node new_host:new_port existing_host:existing_port --cluster-slave --cluster-master-id node_id

# 例子---这里我们给7006端口master添加slave 7007,且7007我们安排到103服务器上
redis-cli --cluster add-node 192.168.1.103:7007 192.168.1.108:7006   --cluster-slave --cluster-master-id fd09b958448307f9b584e81b0b69727db25dafff
# 例子说明
new_host:new_port表示的是要添加的那个从节点的IP和端口,此处表示的是192.168.1.103:7007
existing_host:existing_port表示的是要给哪个主节点添加从节点,此处表示的是192.168.1.108:7006
--cluster-slave表示的是要添加从节点,否则则是添加主节点了
--cluster-master-id node_id表示要给哪个主节点添加从节点的该主节点节点id

# 再次查看集群信息
fd09b958448307f9b584e81b0b69727db25dafff 192.168.1.108:7006@17006 master - 0 1590724626650 7 connected 0-499
c30a1e009b6233cad0885395eec6432658a4ac28 192.168.1.108:7000@17000 master - 0 1590724628165 1 connected 500-5460
1c4488b3ac1a19ba2c40d0ed60e531fb023a888e 192.168.1.108:7001@17001 slave 4df9ed9a6655e330866453defbf77bf6b83529c3 0 1590724627055 5 connected
635b646988ac044a41cf7a4d0c0053c64fa40e14 192.168.1.104:7003@17003 myself,slave c30a1e009b6233cad0885395eec6432658a4ac28 0 1590724626000 4 connected
5175ecb11b0cb8cbba6b2090ea8889f8d844bb63 192.168.1.103:7007@17007 slave fd09b958448307f9b584e81b0b69727db25dafff 0 1590724627156 7 connected
4df9ed9a6655e330866453defbf77bf6b83529c3 192.168.1.103:7004@17004 master - 0 1590724626144 5 connected 10923-16383
ba9f42b32523fc376c1e13261b36d7a5c64e3f61 192.168.1.104:7002@17002 master - 0 1590724626044 3 connected 5461-10922
75f7e0409f1d50a1f761aa71db63727ad2e71be3 192.168.1.103:7005@17005 slave ba9f42b32523fc376c1e13261b36d7a5c64e3f61 0 1590724627000 6 connected
127.0.0.1:7003>
# 会发现7007端口对应的节点已经是7007端口对应的从节点



# 从集群中删除一个从节点
redis-cli --cluster  del-node host:port node_id
# 例子--删除掉7007端口
redis-cli --cluster del-node 192.168.1.103:7007  5175ecb11b0cb8cbba6b2090ea8889f8d844bb63
# 例子说明
host:port表示的是要删除的那个节点的IP和端口,此处是192.168.1.103:7007 
node_id表示的是删除的那个节点的节点id

# 删除一个主节点(如果有从节点,需要转移、或者删除;如果有slot需要转移给他们master,然后在删除)
redis-cli --cluster reshard 192.168.1.108:7006

>>> Performing Cluster Check (using node 192.168.1.108:7006)
M: fd09b958448307f9b584e81b0b69727db25dafff 192.168.1.108:7006
   slots:[0-499] (500 slots) master
S: 75f7e0409f1d50a1f761aa71db63727ad2e71be3 192.168.1.103:7005
   slots: (0 slots) slave
   replicates ba9f42b32523fc376c1e13261b36d7a5c64e3f61
M: c30a1e009b6233cad0885395eec6432658a4ac28 192.168.1.108:7000
   slots:[500-5460] (4961 slots) master
   1 additional replica(s)
M: 4df9ed9a6655e330866453defbf77bf6b83529c3 192.168.1.103:7004
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 635b646988ac044a41cf7a4d0c0053c64fa40e14 192.168.1.104:7003
   slots: (0 slots) slave
   replicates c30a1e009b6233cad0885395eec6432658a4ac28
M: ba9f42b32523fc376c1e13261b36d7a5c64e3f61 192.168.1.104:7002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 1c4488b3ac1a19ba2c40d0ed60e531fb023a888e 192.168.1.108:7001
   slots: (0 slots) slave
   replicates 4df9ed9a6655e330866453defbf77bf6b83529c3
[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)? 500
What is the receiving node ID? c30a1e009b6233cad0885395eec6432658a4ac28
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.
Source node #1: fd09b958448307f9b584e81b0b69727db25dafff
Source node #2: done

再看下集群,  7006没有slot了  可以直接删掉了
127.0.0.1:7003> cluster nodes
fd09b958448307f9b584e81b0b69727db25dafff 192.168.1.108:7006@17006 master - 0 1590725767092 7 connected
c30a1e009b6233cad0885395eec6432658a4ac28 192.168.1.108:7000@17000 master - 0 1590725769000 8 connected 0-5460
1c4488b3ac1a19ba2c40d0ed60e531fb023a888e 192.168.1.108:7001@17001 slave 4df9ed9a6655e330866453defbf77bf6b83529c3 0 1590725769509 5 connected
635b646988ac044a41cf7a4d0c0053c64fa40e14 192.168.1.104:7003@17003 myself,slave c30a1e009b6233cad0885395eec6432658a4ac28 0 1590725768000 4 connected
4df9ed9a6655e330866453defbf77bf6b83529c3 192.168.1.103:7004@17004 master - 0 1590725769107 5 connected 10923-16383
ba9f42b32523fc376c1e13261b36d7a5c64e3f61 192.168.1.104:7002@17002 master - 0 1590725768503 3 connected 5461-10922
75f7e0409f1d50a1f761aa71db63727ad2e71be3 192.168.1.103:7005@17005 slave ba9f42b32523fc376c1e13261b36d7a5c64e3f61 0 1590725769509 6 connected
127.0.0.1:7003> 

redis-cli --cluster del-node 192.168.1.108:7006  fd09b958448307f9b584e81b0b69727db25dafff

8 注意事项   

   防火墙关闭,node.conf文件、数据清空、slot数量

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值