看了https://lw900925.github.io/docker/docker-redis-cluster.html,还是有些问题,查询文档,经自己测试,最后总结出该文章,下面代码均为mac环境测试
创建redis主从集群
获取redis镜像
docker pull redis
配置redis集群
获取官方redis.conf
wget -c http://download.redis.io/redis-stable/redis.conf
复制3份,分别命名redis-master.conf,redis-slave1.conf,redis-slave2.conf
redis-master.conf配置
bind 0.0.0.0
redis-slave1.conf,redis-slave2.conf配置
bind 0.0.0.0
slaveof master 6379
启动redis集群
docker run -d -v /xxx/xxx/redis-master.conf:/usr/local/etc/redis/redis.conf --name redis-master redis redis-server /usr/local/etc/redis/redis.conf
docker run -d -v /xxx/xxx/redis-slave1.conf:/usr/local/etc/redis/redis.conf --name redis-slave1 --link redis-master:master redis redis-server /usr/local/etc/redis/redis.conf
docker run -d -v /xxx/xxx/redis-slave2.conf:/usr/local/etc/redis/redis.conf --name redis-slave2 --link redis-master:master redis redis-server /usr/local/etc/redis/redis.conf
这里--link redis-master:master的参数就是对应redis-slave1.conf,redis-slave2.conf里面的参数slaveof master,通过这种方式来解决redis集群个体间的通信问题
测试
docker exec -it redis-master bash
redis-cli info
可以看到结果输出中有一条是 connected_slaves:2
同样也可以通过在master端放数据,在slave端取数据的方式来验证主从集群是否搭建成功