Docker Redis集群部署实战

在这里插入图片描述

  • 创建网卡
 docker network create redis --subnet 172.38.0.0/16

在这里插入图片描述

  • 通过脚本创建6个redis配置
for port in $(seq 1 6);\
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 6379
appendonly yes
EOF
done

配置参数说明:

cluster-enabled <yes/no>:启动集群模式;如果是yes,表示启用集群,否则以单例模式启动
cluster-config-file <filename>::集群节点信息文件;可选,这不是一个用户可编辑的配置文件,这个文件是Redis集群节点自动持久化每次配置的改变,为了在启动的时候重新读取它。
cluster-node-timeout <milliseconds>:超时时间,集群节点不可用的最大时间。如果一个master节点不可到达超过了指定时间,则认为它失败了。注意,每一个在指定时间内不能到达大多数master节点的节点将停止接受查询请求。
cluster-announce-ip:集群节点的汇报ip,防止nat,预先填写为网关ip后续需要手动修改配置文件
cluster-announce-port:集群节点的汇报port,防止nat
cluster-announce-bus-port:集群节点的汇报bus-port,防止nat
appendonly: yes(开启aof),no (关闭aof)

  • 启动节点
#批量启动
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf;

#一个一个启动
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf;

docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf;

启动 redis-1结果如下:
在这里插入图片描述

  • 查看是否启动成功
[root@iZwz9geewjuo2sogidqn50Z /]# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                                              NAMES
64fddecc80c6   redis:5.0.9-alpine3.11   "docker-entrypoint.s…"   36 seconds ago   Up 35 seconds   0.0.0.0:6371->6379/tcp, 0.0.0.0:16371->16379/tcp   redis-1

redis-1节点启动成功!

  • 接下来依次启动其他几个节点
#redis-2节点
[root@iZwz9geewjuo2sogidqn50Z /]# docker run -p 6372:6379 -p 16372:16379 --name redis-2                                                                   \
> -v /mydata/redis/node-2/data:/data \
> -v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
> -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.                                                                  conf;
e60c714cbf80914946e010b048df10046a351903a591c5d98f706c5443dd0672
#redis-3节点
[root@iZwz9geewjuo2sogidqn50Z /]# docker run -p 6373:6379 -p 16373:16379 --name redis-3                                                                   \
> -v /mydata/redis/node-3/data:/data \
> -v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
> -d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.                                                                  conf;
cdf64342a9b58e8254a1560264e0a748bbb04ac3020b54eaca42ebb9b3c28599
#redis-4节点
[root@iZwz9geewjuo2sogidqn50Z /]# docker run -p 6374:6379 -p 16374:16379 --name redis-4                                                                   \
> -v /mydata/redis/node-4/data:/data \
> -v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
> -d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.                                                                  conf;
b495b0918aa3fde6b927d33da69eab563a3f9cab1377934d9023d6a4b04d2488
#redis-5节点
[root@iZwz9geewjuo2sogidqn50Z /]# docker run -p 6375:6379 -p 16375:16379 --name redis-5                                                                   \
> -v /mydata/redis/node-5/data:/data \
> -v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
> -d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.                                                                  conf;
59b42a4d168af41f8c77b2b614f5548720986af5fe7e66e4c21b278124e2b358
#redis-6节点
[root@iZwz9geewjuo2sogidqn50Z /]# docker run -p 6376:6379 -p 16376:16379 --name redis-6                                                                   \
> -v /mydata/redis/node-6/data:/data \
> -v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
> -d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.                                                                  conf;
2222471644ecececb0f4126aa8cd72f697ced4ef5b41f6a68f914cfadcfc4e42

docker ps -a 查看启动的服务
在这里插入图片描述

redis-1,redis-2,redis-3,redis-4,redis-5,redis-6等6个服务都启动成功。

  • 创建集群
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1

下面是创建集群的操作:

①首先查看下每个节点下面的nodes.conf 文件的内容(观察下初始化nodes.conf文件的配置,集群创建成功之后又有什么变化),如下:
redis-1节点:

[root@iZwz9geewjuo2sogidqn50Z /]# docker exec -it redis-1 /bin/sh
/data # ls
appendonly.aof  nodes.conf
/data # cat nodes.conf
7f87f23a6ed7c1d9c41518ef4befee0f901ed214 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

redis-2节点:

[root@iZwz9geewjuo2sogidqn50Z /]# docker exec -it redis-2 /bin/sh
/data # ls
appendonly.aof  nodes.conf
/data # cat nodes.conf
0e0a36ac7312d29aa6aafedf83fcb0a74308d099 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

redis-3节点:

[root@iZwz9geewjuo2sogidqn50Z ~]# docker exec -it redis-3 /bin/sh
/data # ls
appendonly.aof  nodes.conf
/data # cat nodes.conf
8944f63805edccf7e5c2e79b5fcbd263d76c1fa7 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

redis-4节点:

[root@iZwz9geewjuo2sogidqn50Z ~]# docker exec -it redis-4 /bin/sh
/data # ls
appendonly.aof  nodes.conf
/data # cat nodes.conf
3d06c4d8060e75673f55656061b4edb25fb2ecf7 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

redis-5节点:

[root@iZwz9geewjuo2sogidqn50Z ~]# docker exec -it redis-5 /bin/sh
/data # ls
appendonly.aof  nodes.conf
/data # cat nodes.conf
53460035856d206c1682c276208e64b3fe447ed3 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

redis-6节点:

[root@iZwz9geewjuo2sogidqn50Z ~]# docker exec -it redis-6 /bin/sh
/data # ls
appendonly.aof  nodes.conf
/data # cat nodes.conf
8e3674963a4134a926ff098e77673dc6c51908e9 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

几个节点的nodes.conf文件内容是一样的!除了容器id

② 创建集群

#进入到redis-1
[root@iZwz9geewjuo2sogidqn50Z /]# docker exec -it redis-1 /bin/sh
#查看文件
/data # ls
appendonly.aof  nodes.conf
#创建集群
/data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.
38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
.
.
.
Waiting for the cluster to join
.........................................................................................................................................................................................

一直等待节点加入集群!

查看了各种网站,还未找到合适的解决方案

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值