一、使用docker 拉取redis镜像
进入 docker hup 官网 https://hub.docker.com/
搜索redis,找到official
复制 docker pull redis:latest 到我们的linux服务器 执行即可
使用docker images 查看
发现已经有一个叫redis的镜像了
二、 创建6个redis容器
-
- 容器名字 对外端口
- redis-node-1 5001
- redis-node-2 5002
- redis-node-3 5003
- redis-node-4 5004
- redis-node-5 5005
- redis-node-6 5006
- docker run -d --name redis-node-1 --net host --privileged=true -v /etc/localtime:/etc/localtime -v /opt/docker/redis/data/node1:/data redis --cluster-enabled yes --appendonly yes --port 5001 --requirepass mypassword --masterauth mypassword
- docker run -d --name redis-node-2 --net host --privileged=true -v /etc/localtime:/etc/localtime -v /opt/docker/redis/data/node2:/data redis --cluster-enabled yes --appendonly yes --port 5002 --requirepass mypassword --masterauth mypassword
- docker run -d --name redis-node-3 --net host --privileged=true -v /etc/localtime:/etc/localtime -v /opt/docker/redis/data/node3:/data redis --cluster-enabled yes --appendonly yes --port 5003 --requirepass mypassword --masterauth mypassword
- docker run -d --name redis-node-4 --net host --privileged=true -v /etc/localtime:/etc/localtime -v /opt/docker/redis/data/node4:/data redis --cluster-enabled yes --appendonly yes --port 5004 --requirepass mypassword --masterauth mypassword
- docker run -d --name redis-node-5 --net host --privileged=true -v /etc/localtime:/etc/localtime -v /opt/docker/redis/data/node5:/data redis --cluster-enabled yes --appendonly yes --port 5005 --requirepass mypassword --masterauth mypassword
- docker run -d --name redis-node-6 --net host --privileged=true -v /etc/localtime:/etc/localtime -v /opt/docker/redis/data/node6:/data redis --cluster-enabled yes --appendonly yes --port 5006 --requirepass mypassword --masterauth mypassword
参数 | 说明 |
---|---|
-d | 以守护进程的方式启动 |
--name redis-node-6 | 容器名字设置为redis-node-6 |
--net host | 使用宿主机的ip和端口 |
--privileged=true | 获取宿主机用户权限 |
-v /etc/localtime:/etc/localtime | 使用宿主机时间 |
-v /opt/docker/redis/data/node6:/data | 容器卷,宿主机地址:容器地址 |
redis | redis的镜像名字 |
--cluster-enabled yes | 开启集群 |
--appendonly yes | 开启持久化 |
--port 5006 | redis端口 |
--requirepass mypassword | redis密码 |
--masterauth mypassword | 主从复制时,从redis访问主redis密码 |
docker ps 查看
# 进入某一个容器
docker exec -it redis-node-1 /bin/bash
# 组建集群,39.97.23.10 是当前物理机器的ip ,如果是阿里云的公网ip访问不同,可以使用私网
有密码:
redis-cli --cluster create -a mypassword 39.97.23.10:5001 39.97.23.10:5002 39.97.23.10:5003 39.97.23.10:5004 39.97.23.10:5005 39.97.23.10:5006 --cluster-replicas 1
无密码:
redis-cli --cluster create 39.97.23.10:5001 39.97.23.10:5002 39.97.23.10:5003 39.97.23.10:5004 39.97.23.10:5005 39.97.23.10:5006 --cluster-replicas 1
docker 单间Redis集群部署出现Waiting for the cluster to join一直在等待
问题原因:
我用的是阿里云的服务区,就是防火墙的问题,开发部署的3主3从服务区,第一个是开放阿里云的安全组上面部署的redis的端口号,第二个则是开放安全组部署的redis端口号+1000,比如你的redis端口是6371,加两个安全组一个是6371,一个是16371,这样在加入集群时,才不会一直处于Waiting for the cluster to join 状态
创建成功后,通过 redis-cli 查看一下集群节点信息:
root@CentOS7:/data# redis-cli -p 5001
127.0.0.1:6379> cluster nodes
查看容器日志:
docker logs -f 容器id