限于机器限制,本文主要在阿里云搭建 3主3从的redis集群
重要注意事项:
在阿里云网络配置安全组先打开这12个端口的访问权限
7001-7006 17001-17006
第一步:拉取redis镜像,创建redis-conf模板
拉取redis最新镜像
docker pull redis
新文件redis-cluster2.tmpl 文件,
vim redis-cluster2.tmpl
然后复制以下内容到redis-cluster2.tmpl 文件内
##设置外部网络连接redis服务,默认是yes,即开启。开启protected-mode保护模式,需配置bind ip或者设置访问密码,关闭protected-mode模式,此时外部网络可以直接访问
protected-mode no
##节点端口
port ${PORT}
##指定redis是否要用守护线程的方式启动,默认no
daemonize no
##持久化模式
appendonly yes
##cluster集群模式
cluster-enabled yes
##集群配置名
cluster-config-file nodes.conf
##超时时间
cluster-node-timeout 15000
##实际为各节点网卡分配ip
cluster-announce-ip 外网ip
##节点映射端口
cluster-announce-port ${PORT}
##节点总线端
cluster-announce-bus-port 1${PORT}
##连接密码(可选)
requirepass 123456
模板说明:
cluster-announce-bus-port:节点总线端,节点使用群集总线进行故障检测,配置更新,故障转移授权等,因此搭建集群需要确保这个端口已开通,就是文章开始的注意事项。
第二步:创建redis-cof脚本
vim creatRedisCluster2.sh
复制以下内容到creatRedisCluster2.sh
for port in `seq 7001 7006`; do \
base=6999 \
&& ip=$[port-base] \
&& mkdir -p ${port}/conf \
&& PORT=${port} TEMP=${ip} envsubst < redis-cluster2.tmpl > ${port}/conf/redis.conf \
&& mkdir -p ${port}/data;\
done
赋予执行权限
chmod 755 creatRedisCluster2.sh
创建自定义网桥
docker network create redis-net
第三步:创建启动docker模板
新建creatDocker.sh文件,复制以下内容进去
for port in `seq 7001 7006`; do
docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
-v /usr/local/redis-cluster2/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-cluster2/${port}/data:/data --name redis-${port} --net redis-net -d redis redis-server /usr/local/etc/redis/redis.conf;
done
说明:
-p ${port}:${port} :开启映射的端口,宿主机的port:容器的port
--name redis-${port} : 容器的名字
-v /usr/local/redis-cluster2/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf
-v /usr/local/redis-cluster2/${port}/data:/data
将宿主机的目录文件/usr/local/redis-cluster2/${port}/conf/redis.conf 和容器的目录文件/usr/local/etc/redis/redis.conf 共享
将宿主机的目录文件usr/local/redis-cluster2/${port}/data和容器的目录文件/data 共享
可以理解为:启动容器后,容器里面的redis的配置文件就是这个目录的配置文件/usr/local/redis-cluster2/${port}/conf/redis.conf
-d redis :拉取的镜像名字 redis构建启用容器
redis-server /usr/local/etc/redis/redis.conf: 用/usr/local/etc/redis/redis.conf文件作为启动redis的配置文件
给 creatDocker.sh赋予执行权限
chmod 755 creatDocker.sh
第四步:执行脚本creatRedisCluster2.sh,creatDocker.sh
./creatRedisCluster2.sh
执行结果
./creatDocker.sh
执行结果
第五步:搭建集群
随便进入一个容器
docker exec -it redis-7001 /bin/bash
执行集群命令
redis-cli --cluster create 外网ip:7001 外网ip:7002 外网ip:7003 外网ip:7004 外网ip:7005 外网ip:7006 --cluster-replicas 1 -a 123456
随便进入一个容器内:
docker exec -it redis-7001 /bin/bash
注意redis集群,要用 -c
redis-cli -c -h 外网ip -p 7001
登录
auth 123456
查看集群状态
cluster nodes
实验一些结果可用