使用docker模拟搭建redis集群

1、先用docker下载镜像
2、宿主机上创建redis配置文件和数据挂载目录,如:/data/redis/conf0/redis.conf , /data/redis/data0;配置文件不要设置密码
配置文件内容:
daemonize no
appendonly yes
#requirepass xxx
port 7007
timeout 0
loglevel debug
databases 16
dir /data
logfile stdout
#bind 127.0.0.1
save 900 1
rdbcompression yes
dbfilename dump.rdb
maxclients 128
appendfilename appendonly.aof
appendfsync everysec
#开启集群
cluster-enabled yes
#集群节点不可用的最长时间,而不将其视为失败
cluster-node-timeout 5000
#如果将其设置为no(默认情况下为默认值),则当Redis集群被标记为失败时,或者当某个节点无法到达时,Redis集群中的节点将停止为所有流量提供服务法定人数的主持人或未达到全部覆盖范围的人。这样可以防止从不知道群集更改的节点读取可能不一致的数据。可以将此选项设置为yes,以允许在失败状态期间从节点进行读取,这对于希望优先考虑读取可用性但仍希望防止写入不一致的应用程序很有用。当仅使用一个或两个分片的Redis Cluster时,也可以使用它,因为它允许节点在主服务器发生故障但无法进行自动故障转移时继续为写入提供服务。
#cluster-allow-reads-when-down yes
#该节点的配置存储位置的文件路径,默认情况下为nodes.conf。该文件不被人触及。它是由Redis Cluster实例在启动时简单生成的,并在需要时进行更新
cluster-config-file nodes.conf
3、启动容器
docker run -d --name redis0 -p 7007 --net host -v /data/redis/conf0/redis.conf:/etc/redis/redis.conf -v /data/redis/data0:/data redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -d --name redis1 -p 7008 --net host -v /data/redis/conf1/redis.conf:/etc/redis/redis.conf -v /data/redis/data1:/data redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -d --name redis2 -p 7009 --net host -v /data/redis/conf2/redis.conf:/etc/redis/redis.conf -v /data/redis/data2:/data redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -d --name redis3 -p 7010 --net host -v /data/redis/conf3/redis.conf:/etc/redis/redis.conf -v /data/redis/data3:/data redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -d --name redis4 -p 7011 --net host -v /data/redis/conf4/redis.conf:/etc/redis/redis.conf -v /data/redis/data4:/data redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -d --name redis5 -p 7012 --net host -v /data/redis/conf5/redis.conf:/etc/redis/redis.conf -v /data/redis/data5:/data redis redis-server /etc/redis/redis.conf --appendonly yes

4、连接其中一个redis容器
redis-cli --cluster create ip:7007 ip:7008 ip:7009 ip:7010 ip:7011 ip:7012 --cluster-replicas 1
5、设置密码
redis-cli -h localhost -p 7007 -c
127.0.0.1:6379> config set requirepass 'password'   // 设置密码
127.0.0.1:6379> config set masterauth 'password'    // 设置连接密码
127.0.0.1:6379> config rewrite                        // 把config set 操作写入配置文件中
设置密码后连接集群
redis-cli -h 127.0.0.1 -p 6379 -c -a password

5、关闭集群
方式一:进入redis后,使用SHUTDOWN指令或SHUTDOWN SAVE指令或SHUTDOWN NOSAVE指令。
方式二:通过redis的客户端程序redis-cli的shutdown命令
redis-cli -p 7007 shutdown

(保留原有集群的)重启:
不需要再执行上面步骤4的集群生成指令。
第一步:先关闭各个Redis节点。
第二步:再启动各个Redis节点即可。(注意:启动redis服务时请在上次成功启动服务的目录启动,即已经生成rdb/aof,conf的目录,否则该节点加入不了集群)
(删除原有集群的)重启:
需要再执行上面步骤4的集群生成指令。
第一步:先关闭各个Redis节点。
第二步:删除各个Redis安装目录下的节点配置文件nodes.conf、数据文件*.aof/dump.rdb。


#查看集群信息
cluster info
#查看节点
cluster nodes
CLUSTER ADDSLOTS
添加新节点不指定主节点(自己为空的主节点):
redis-cli --cluster add-node 127.0.0.1:7006(新节点) 127.0.0.1:7000(随机节点)
连接新节点后执行
cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e(主节点id)
指定主节点
redis-cli --cluster add-node 127.0.0.1:7006(新节点) 127.0.0.1:7000(随机节点) --cluster-slave --cluster-master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e(主节点id)
重新分片脚本
redis-cli --cluster reshard <host>:<port>(随机节点) --cluster-from <node-id>(源节点) --cluster-to <node-id>(目标节点) --cluster-slots <number of slots>(源节点从最小开始number个) --cluster-yes(自动输入yes)
删除节点,如果是个主节点并且不为空,则需要先将数据从其重新分片到所有其他主节点
redis-cli --cluster del-node 127.0.0.1:7000(随机节点) `<node-id>`(要删除的节点)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值