安装集群
macOS 通过 docker 来进行安装 redis 机群,解决开发环境临时使用的问题,完成本地 redis 集群环境搭建。
安装步骤如下:
- 查询主机 ip 信息,命令如下:
ifconfig
- 删除容器信息,如果步骤执行错误了,可以删除容器,然后重新执行第 3 步
docker rm -f redis-30001
docker rm -f redis-30002
docker rm -f redis-30003
docker rm -f redis-30004
docker rm -f redis-30005
docker rm -f redis-30006
- 启动 redis 节点信息,集群配置概述:a. redis 端口因素到宿主机端口 30001 - 30006; b. 需要改动的配置直接加到启动命令上,方便快速部署。
docker run --hostname=redis-30001 --name redis-30001 -p 30001:6379 -p 31001:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30001 --cluster-announce-bus-port 31001
docker run --hostname=redis-30002 --name redis-30002 -p 30002:6379 -p 31002:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30002 --cluster-announce-bus-port 31002
docker run --hostname=redis-30003 --name redis-30003 -p 30003:6379 -p 31003:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30003 --cluster-announce-bus-port 31003
docker run --hostname=redis-30004 --name redis-30004 -p 30004:6379 -p 31004:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30004 --cluster-announce-bus-port 31004
docker run --hostname=redis-30005 --name redis-30005 -p 30005:6379 -p 31005:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30005 --cluster-announce-bus-port 31005
docker run --hostname=redis-30006 --name redis-30006 -p 30006:6379 -p 31006:16379 -d --restart=always redis:latest redis-server --appendonly yes --cluster-enabled yes --protected-mode no --bind 0.0.0.0 --cluster-announce-ip 192.168.31.41 --cluster-announce-port 30006 --cluster-announce-bus-port 31006
- 进入其中一个主机,然后执行集群命令,可以通过容器名就可以进入。
docker exec -it redis-30001 /bin/bash
- 集群搭建
redis-cli --cluster create --cluster-replicas 1 192.168.31.41:30001 192.168.31.41:30002 192.168.31.41:30003 192.168.31.41:30004 192.168.31.41:30005 192.168.31.41:30006
- 外部访问
redis-cli -c -h 127.0.0.1 -p 30001
测试命令:
- docker 客户端查询运行的效果
网络相关
docker 网络相关,本地测试不建议使用。
# 查看网络
docker network ls
# 删除网络
docker network rm redis_3000x
# 构建网络
docker network create -d bridge --subnet=192.168.31.0/24 --gateway=192.168.31.1 -o parent=eth0 redis_3000x
常见问题
- (error) MOVED 15495 192.168.31.41:30003
redis-cli -c 集群模式登录
- Waiting for the cluster to join
使用Docker搭建Redis集群的时候,在redis-cli --cluster create环节,一直卡到"Waiting for the cluster to join”,
解决办法:同时暴露两个端口,用于提供client和其他节点,进行通信。
- 解决Docker macvlan网络与宿主机通讯问题