本文使用镜像由慕课网的神思者老师提供
本文使用镜像是已经配置好了的Redis镜像,
如果需要自定义可修改配置文件或用官方Redis镜像进行部署
1. 拉取配置好的Redis镜像
docker pull yyyyttttwwww/redis
2. 创建集群使用的网段redis_net
docker network create --subnet=172.19.0.0/16 redis_net
3. 修改镜像的名称
将镜像yyyyttttwwww/redis
的名称修改为redis
,方便进行使用
docker tag yyyyttttwwww/redis redis
4. 生成6个Redis容器
docker run -it -d --name r1 -p 5001:6379 --net=redis_net--ip 172.19.0.2 redis bash
docker run -it -d --name r2 -p 5002:6379 --net=redis_net--ip 172.19.0.3 redis bash
docker run -it -d --name r3 -p 5003:6379 --net=redis_net--ip 172.19.0.4 redis bash
docker run -it -d --name r4 -p 5004:6379 --net=redis_net--ip 172.19.0.5 redis bash
docker run -it -d --name r5 -p 5005:6379 --net=redis_net--ip 172.19.0.6 redis bash
docker run -it -d --name r6 -p 5006:6379 --net=redis_net--ip 172.19.0.7 redis bash
- 容器的命名分别为r1-r6
- 容器映射的宿主机端口对应:5001-5006
- 容器均使用网关redis_net
- 容器分别映射ip对应:172.19.0.2-172.19.0.7
5. 检验容器创建是否成功
使用docker ps -a | grep redis
,查看各个节点是否正常运行中
6. 进入每个容器启动Redis
以r1为例
- 以交互方式进入容器:
docker exec -it r1 bash
- 覆盖配置文件:
cp /home/redis/redis.conf /usr/redis/redis.conf
- 进入到启动目录:
cd /usr/redis/src
- 启动Redis:
./redis-server ../redis.conf
重复上述操作将6台容器都启动
7. 集群搭建
镜像中已经安装好了ruby的环境并编写好了集群启动的脚本,可以直接进行使用
- 进入任意一个节点,如交互式进入r1,执行
docker exec -it r1 bash
- 在
/usr/redis/
目录下创建一个空目录cluster
cd /usr/redis/
mkdir cluster
- 将/usr/redis/src/下的 redis‐trib.rb复制到/usr/redis/cluster/目录下
cd /usr/redis/src/
cp redis‐trib.rb ../cluster
- 进入/usr/redis/cluster/执行集群启动脚本
cd ../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
执行过程中需要输入一次yes
,执行完成集群启动成功
8. 测试使用Redis Cluster 集群
- 进入任意一个节点,如交互式进入r1,执行
docker exec -it r1 bash
- 进入到客户端启动目录:
cd /usr/redis/src/
- 以集群方式启动客户端程序:
./redis-cli -c
- 进入客户端后,进行基础的set/get操作,如:
set a 10086
,a计算出hash槽为15495,应该存放在第三个主节点,即172.19.0.4上,跳转到172.19.0.4上set b 12345
,b计算出hash槽为3300,应该存放在第一个主节点,即172.19.0.2上,跳转回172.19.0.2