安装docker
yum install docker
systemctl start docker
下载redis5.0.5镜像
docker pull redis:5.0.5
进入home目录
cd /home
创建 redis 节点目录
mkdir redis-cluster
编写实现文件
vim redis-cluster.tmpl
port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 39.10X.XX.XX //自己服务器IP
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
查看
cat /home/redis-cluster/redis-cluster.tmpl
构建redis网络
docker network create redis-net
查看
docker network ls
执行上面的tmpl 文件 传入参数 7000 - 7005 作为redis不同单节点的端口
for port in `seq 7000 7005`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
授权 文件夹 权限
chmod 777 7000 7001 7002 7003 7004 7005
启动docker redis镜像 将会启动 7000 7001 7002 7003 7004 7005 五个节点的redis
for port in `seq 7000 7005`; do \
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
--privileged=true \
-v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn=1024 redis:5.0.5 redis-server /usr/local/etc/redis/redis.conf; \
done
查看 IP 及 端口 (docker内网)
for port in `seq 7000 7005`; do \
echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port}" " ; \
done
执行后展示(可能不一样,这里的IP地址,用于下面)
172.18.0.2:7000 172.18.0.3:7001 172.18.0.4:7002 172.18.0.5:7003 172.18.0.6:7004 172.18.0.7:7005
进入 7000 容器
docker exec -it redis-7000 bash
设置 三主 三从
redis-cli --cluster create 172.18.0.2:7000 172.18.0.3:7001 172.18.0.4:7002 172.18.0.5:7003 172.18.0.6:7004 172.18.0.7:7005 --cluster-replicas 1
遇到提示 输入 yes
遇到 等待join 需要新开一个 ssh 窗口 执行以下命令 如果成功了,就不用了
分别进入 其他redis容器 加入 7000 的集群中
docker exec -it redis-7001 bash
redis-cli -p 7001 cluster meet 172.18.0.2 7000
exit
docker exec -it redis-7002 bash
redis-cli -p 7002 cluster meet 172.18.0.2 7000
exit
docker exec -it redis-7003 bash
redis-cli -p 7003 cluster meet 172.18.0.2 7000
exit
docker exec -it redis-7004 bash
redis-cli -p 7004 cluster meet 172.18.0.2 7000
exit
docker exec -it redis-7005 bash
redis-cli -p 7005 cluster meet 172.18.0.2 7000
exit
查看
docker exec -it redis-7000 bash
redis-cli -p 7000 cluster nodes