docker技术快速实现前后端项目的集群化⑧docker部署redis集群
获取基础镜像redis,并重命名为redis
[root@server01 ~]# docker pull yyyyttttwwww/redis
[root@server01 ~]# docker tag docker.io/yyyyttttwwww/redis redis
创建新的网络net2,并且将redis集群运行在新的网络net2中
[root@server01 ~]# docker network create --subnet=172.19.0.0/16 net2
启动redis01容器
[root@server01 ~]# docker run -it -d --name redis01 -p 5001:6379 --net=net2 --ip 172.19.0.2 redis /bin/bash
[root@server01 ~]# docker exec -it redis01 /bin/bash
root@7a30246ddad2:/# vim /usr/redis/redis.conf
root@7a30246ddad2:/# cd /usr/redis/src/
root@7a30246ddad2:/usr/redis/src# ./redis-server ../redis.conf
编辑redis配置文件
daemonize yes
appendonly yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
依次创建redis02/redis03/redis04/redis05/redis06节点,并进入容器中,启动redis程序
docker run -it -d --name redis02 -p 5002:6379 --net=net2 --ip 172.19.0.3 redis /bin/bash
docker run -it -d --name redis03 -p 5003:6379 --net=net2 --ip 172.19.0.4 redis /bin/bash
docker run -it -d --name redis04 -p 5004:6379 --net=net2 --ip 172.19.0.5 redis /bin/bash
docker run -it -d --name redis05 -p 5005:6379 --net=net2 --ip 172.19.0.6 redis /bin/bash
docker run -it -d --name redis06 -p 50016:6379 --net=net2 --ip 172.19.0.7 redis /bin/bash
# 示例
[root@server01 ~]# docker exec -it redis02 /bin/bash
root@0bcb0f08beeb:/# cd /usr/redis/src/
root@0bcb0f08beeb:/usr/redis/src# ./redis-server ../redis.conf
安装ruby环境通过ruby脚本创建redis集群
root@7a30246ddad2:/etc/apt# cd /usr/redis/cluster/ root@7a30246ddad2:/usr/redis/cluster# ./redis-trib.rb create --replicas 1 172.19.0.2:6379 172.19.0.3:6379 172.19.0.4:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.0.7:6379
测试集群
停掉redis03看集群是否能正常主从切换,可以看到172.19.0.7从slave转换成了master
Docker pause redis03
再次启动redis03
[root@server01 ~]# docker unpause redis03
可以看到此时也不会发生切换