使用Dcoker部署redis集群

实战:部署redis集群(分片+高可用+负载均衡)

1.docker network create redis-net --subnet 172.22.0.0/16 # 创建redis网络
2.#通过脚本创建redis配置文件(我本地系统是window,所以在docker启动了centos中执行脚本,不是linux的也可以这样操作,然后把脚本生成的mydata挂载到宿主机的目录上即可)
---start
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.22.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
---end

# 分别后台启动6个redis
3. docker run -p 6371:6379 -p 16371:16379 --name redis-1 -v D:\docker-file\redis-c\mydata\redis\node-1\data:/data -v D:\docker-file\redis-c\mydata\redis\node-1\conf\redis.conf:/etc/redis/redis.conf -d --net redis-net --ip 172.22.0.11 redis:5.0.14-alpine redis-server /etc/redis/redis.conf

4. docker run -p 6372:6379 -p 16372:16379 --name redis-2 -v D:\docker-file\redis-c\mydata\redis\node-2\data:/data -v D:\docker-file\redis-c\mydata\redis\node-2\conf\redis.conf:/etc/redis/redis.conf -d --net redis-net --ip 172.22.0.12 redis:5.0.14-alpine redis-server /etc/redis/redis.conf

5. docker run -p 6373:6379 -p 16373:16379 --name redis-3 -v D:\docker-file\redis-c\mydata\redis\node-3\data:/data -v D:\docker-file\redis-c\mydata\redis\node-3\conf\redis.conf:/etc/redis/redis.conf -d --net redis-net --ip 172.22.0.13 redis:5.0.14-alpine redis-server /etc/redis/redis.conf

6. docker run -p 6374:6379 -p 16374:16379 --name redis-4 -v D:\docker-file\redis-c\mydata\redis\node-4\data:/data -v D:\docker-file\redis-c\mydata\redis\node-4\conf\redis.conf:/etc/redis/redis.conf -d --net redis-net --ip 172.22.0.14 redis:5.0.14-alpine redis-server /etc/redis/redis.conf

7. docker run -p 6375:6379 -p 16375:16379 --name redis-5 -v D:\docker-file\redis-c\mydata\redis\node-5\data:/data -v D:\docker-file\redis-c\mydata\redis\node-5\conf\redis.conf:/etc/redis/redis.conf -d --net redis-net --ip 172.22.0.15 redis:5.0.14-alpine redis-server /etc/redis/redis.conf

8. docker run -p 6376:6379 -p 16376:16379 --name redis-6 -v D:\docker-file\redis-c\mydata\redis\node-6\data:/data -v D:\docker-file\redis-c\mydata\redis\node-6\conf\redis.conf:/etc/redis/redis.conf -d --net redis-net --ip 172.22.0.16 redis:5.0.14-alpine redis-server /etc/redis/redis.conf

9. docker exec -it redis-1 /bin/bash    # 我们会发现,无法进入bash控制台,因为redis镜像没有bash命令
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

10. docker exec -it redis-1 /bin/sh # redis镜像中使用的sh命令
/data # # --> 进入到控制台

11. redis-cli --cluster create 172.22.0.11:6379 172.22.0.12:6379 172.22.0.13:6379 172.22.0.14:6379     172.22.0.15:6379 172.22.0.16:6379 --cluster-replicas 1 # 创建集群

12. redis-cli -c        # 默认是单机,-c 是以集群的方式连接

13. 127.0.0.1:6379> set name xiaoming           # set一个值
   -> Redirected to slot [5798] located at 172.22.0.12:6379   # -> 分配给172.22.0.12去处理(也就意味着172.22.0.12主机和从机都存储了这个值)
  OK

 

posted @ 2022-01-17 17:53  迷路小孩  阅读(56)  评论(0)    收藏  举报