Mac宿主机部署Docker集群,桥接模式。

Docker配置redis集群

拉取redis

docker pull redis

创建redis要用到的网络

桥接模式
docker network create redis --subnet 172.38.0.0/16

宿主机创建redis的配置脚本

# 配置脚本  /Users/lu 是我自己的私人目录
for port in $(seq 7000 7005);
do
mkdir -p /Users/lu/myredis/node-${port}/data
mkdir -p /Users/lu/myredis/node-${port}/conf
touch /Users/lu/myredis/node-${port}/conf/redis.conf
cat << EOF >/Users/dxm/myredis/node-${port}/conf/redis.conf
port 6379
masterauth 1234
requirepass 1234
cluster-enabled yes
bind 0.0.0.0
#cluster-announce-ip 172
#cluster-announce-port 6379
#cluster-announce-bus-port 16379
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
EOF
done

宿主机创建docker运行容器的脚本

for port in $(seq 7000 7005);
do
docker run --name redis-${port} -p ${port}:6379 -p 1$(port):16379 -d  -v /Users/dxm/myredis/node-${port}/conf/redis.conf:/etc/redis/redis.conf -v /Users/dxm/myredis/node-${port}/data:/data  --net redis  redis redis-server /etc/redis/redis.conf
done

进入容器执行以下命令,创建集群

docker exec -it redis-7000 redis-cli -a 1234 --cluster create 172.38.0.2:6379 172.38.0.3:6379 \
172.38.0.4:6379 172.38.0.5:6379 172.38.0.6:6379 172.38.0.7:6379 \
--cluster-replicas 1

测试是否成功

#进入redis-7000容器内部 
docker exec -it redis-7000 redis-cli -c -a 1234

# 我们添加一些数据
set lyp niu
# 切换其他容器,通过get lyp 都可以正常数据。
# 集群搭建成功!!

思考的问题

停止主容器,它的从会不会变成主机  同时我们在重新启动 看一看此时主从关系如何
答:停止主容器,从会变为主。当主重新上线后,它会自动变为从。

解决不了的问题

我添加了一个key,它映射到了redis-7000这个容器上。

我通过宿主机直接连接这个容器可以拿到值。但是从别的容器获取就会超时。解决不了这个问题。你们知道什么原因吗???
以下为详细的操作。
# 宿主机远程连接redis  
redis-cli -c -h 172.38.0.3 -p 6379 -a 1234
#获取数据
get lyp
#超时
-> Redirected to slot [7025] located at 172.38.0.3:6379
Could not connect to Redis at 172.38.0.3:6379: Operation timed out
Could not connect to Redis at 172.38.0.3:6379: Operation timed out
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值