拉取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