腾讯云轻量服务器通过Docker搭建外网可访问连接的redis5.x集群

原创/朱季谦

最近买了一台4核16的腾讯云轻量应用服务器,花了我快四百的大洋,打算搭建一堆docker组件集群,最先开始是通过docker搭建redis集群,计划使用三个端口,分别是7001,7002,7003。

腾讯云服务器有防火墙限制,故而需要在控制面板的防火墙开放这六个端口------

注意,为什么开放了7001,7002,7003,还需要开放它们对应的总线端口17001,17002,17003呢?因为这是它们集群心跳连接的端口,若不开放,将在对各启动容器节点创建集群时,会创建集群分配槽时失败。

完成这一步后,就可以开始通过docker拉取redis的镜像了,这里拉取的是redis:5.0.5版本------

复制代码
docker pull redis:5.0.5

创建redis-template.conf模板,将根据该模板自动生成各节点对应的redis.conf文件------

复制代码
mkdir /app/redis && cd /app/redis && mkdir redis-cluster && cd ./redis-cluster && touch redis-template.conf

接着,修改redis-template.conf模板文件内容,直接使用vi redis-template.conf指令------

输入以下内容即可------

XML 复制代码
#节点端口
port ${PORT}
#设置为集群节点
cluster-enabled yes
#外网连接必须设置为 no
protected-mode no
#集群节点文件
cluster-config-file nodes.conf
cluster-node-timeout 5000
#改成你的外网ip,假设,我的腾讯云服务器外网ip是14.253.73.xx
cluster-announce-ip 14.253.73.xx
#外网端口
cluster-announce-port ${PORT}
#总线端口
cluster-announce-bus-port 1${PORT}

appendonly yes

docker中创建一个redis集群专用的网络redis-net供集群使用

复制代码
docker network create redis-net

进入到存放redis-template.conf模板文件的目录下------

复制代码
cd /app/redis/redis-cluster/

直接在命令行中复制以下指令,然后回车执行------

复制代码
for port in `seq 7001 7003`; do 
  mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-template.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done

执行完后,通过指令ll查看,发现自动生成了7001~7003的目录------

接着,直接复制以下指令------

复制代码
for port in `seq 7001 7003`; do 
  docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /app/redis/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /app/redis/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

回车后,即可自动启动docker容器实例------

正常启动成功话,通过docker ps -a指令查看,显示以下信息------

这时候,我们只需要进入到其中一个docker容器的redis中,将各节点组成集群,这里进入到redis-7001容器中------

bash 复制代码
docker exec -it redis-7001 /bin/bash

接着执行以下指令即可------

bash 复制代码
redis-cli --cluster create 外网ip:7001 外网ip:7002 外网ip:7003  --cluster-replicas 0

注意:后续若改成三主三从时,这里的集群指令为------

复制代码
redis-cli --cluster create 外网ip:7001 外网ip:7002 外网ip:7003 外网ip:7004 外网ip:7005 外网ip:7006 --cluster-replicas 1

当出现以下请求时,直接填写 yes 即可------

Can I set the above configuration? (type 'yes' to accept): yes

最后启动成功后,会出现以下信息------

这时,我们可以测试一下,通过指令 redis-cli -c -h 外网IP -p 7001连接到集群节点上,正常连接上去后,再通过指令cluster info查看集群状态,显示ok说明集群正常,这时还可以通过cluster nodes查看各节点具体槽分配信息------

到这一步,通过springboot+redis即可连接到腾讯云服务器上docker部署的redis集群了,我测试验证可行------

相关推荐
国际云,接待4 分钟前
甲骨文云2025深度解析:AI驱动的云原生生态与全球化突围
运维·服务器·人工智能·云原生·性能优化·云计算·量子计算
Ops菜鸟(Xu JieHao)32 分钟前
Linux Nginx网站服务【完整版】
linux·运维·服务器·nginx·网站
H1346948901 小时前
文件备份服务器,备份文件内容到服务器有哪些方法?
运维·服务器
野生绿箭侠1 小时前
Docker 部署 flink1.19.2
运维·docker·容器
caolib2 小时前
7.计算机网络相关术语
服务器·计算机网络·asp.net
ikun·2 小时前
nginx 核心功能
linux·服务器·nginx
小黄人20253 小时前
阿里云 ECS 服务器进阶指南:存储扩展、成本优化与架构设计
服务器·阿里云·云计算
x-cmd3 小时前
[250430] Kali Linux 存储库密钥丢失导致所有用户无法正常更新 APT
linux·运维·服务器·kali linux
星雨流星天的笔记本4 小时前
3、Linux操作系统下,linux的技术手册使用(man)
linux·服务器
qq7422349844 小时前
AI开发者的Docker实践:汉化(中文),更换镜像源,Dockerfile,部署Python项目
python·docker·容器