拉取redis镜像
docker pull redis
创建网络
docker network create --subnet=172.18.0.0/16 net-redis
分别创建6个redis容器,3个主(单数)3个副的,
docker run -it -d --name r1 -p 5001:6379 --net=net-redis --ip 172.18.0.2 redis bash docker run -it -d --name r2 -p 5002:6379 --net=net-redis --ip 172.18.0.3 redis bash docker run -it -d --name r3 -p 5003:6379 --net=net-redis --ip 172.18.0.4 redis bash docker run -it -d --name r4 -p 5004:6379 --net=net-redis --ip 172.18.0.5 redis bash docker run -it -d --name r5 -p 5005:6379 --net=net-redis --ip 172.18.0.6 redis bash docker run -it -d --name r6 -p 5006:6379 --net=net-redis --ip 172.18.0.7 redis bash
进入其中的容器r1…r6;分别修改bind和集群等配置(4,5,6步骤6个redis容器都执行一遍)
docker exec -it r1 bash 修改bind和集群等配置 vim /usr/redis/redis.conf 修改内容如下: daemonize yes cluster-enabled yes cluster-config-file nodes-6379.conf cluster-node-timeout 15000 appendonly yes bind 0.0.0.0
启动redis服务器
./usr/redis/src/redis-server ../usr/redis/redis.conf
进入任意一个容器启动redis集群(redis-trib.rb)
docker exec -it r1 bash mkdir /usr/redis/cluster cp /usr/redis/src/redis-trib.rb /usr/redis/cluster/ ./redis-trib.rb create --replicas 1 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 172.18.0.6:6379 172.18.0.7:6379 PS:--replicase 1 表示一个副本
测试代码
/usr/redis/src/redis-cli -c e.g. set a 9;get a; 暂停一个容器 docker pause r3 /usr/redis/src/redis-cli -c e.g. get a; 查看节点情况 cluster nodes 恢复容器 docker unpause r3