一、前言
redis集群对于很多人来说非常熟悉,在前些日子,我也有一位大兄弟也发布过一篇关于在阿里云(centOS7)上搭建redis 集群的文章,虽然集群搭建的文章在网上很多,我比较喜欢这篇文章的地方是他在搭建过程中,指出一些我们会遇到而别人没有指出的问题。
在这里,我同样带给大家一遍关于阿里云(centOS7)redis集群搭建的文章,但是这次搭建有所不同的是,它是在docker上搭建的redis集群。
环境说明
采用单机部署
操作系统 | ip | docker版本 | redis版本 |
centos 7.6 | 192.168.31.150 |
19.03.5 |
4.0.10 |
二、准备镜像
docker pull redis:4.0.10 docker pull ruby
说明:ruby用是来做加入集群的用的,仅一次使用。
三、搭建
创建redis配置文件
mkdir -p /data/redis-cluster vi /data/redis-cluster/redis-cluster.tmpl
内容如下:
port ${PORT} protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 192.168.31.150 cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly no
注意:ip地址修改为本机ip
配置文件解释
port ${PORT} ##节点端口 protected-mode no #关闭protected-mode模式,外部网络可以直接访问 cluster-enabled yes ##cluster集群模式 cluster-config-file nodes.conf ##集群配置名 cluster-node-timeout 5000 ##超时时间 cluster-announce-ip 192.168.31.150 ##实际为各节点网卡分配ip 先用上网关ip代替 cluster-announce-port ${PORT} ##节点映射端口 cluster-announce-bus-port 1${PORT} ##节点总线端 appendonly no ##持久化模式
备注:此模版文件为集群节点通用文件 其中${PORT} 将读取命令行变量
创建自定义network
docker network create redis-net
生成配置文件
生成conf和data目录,并生成配置信息
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
共生成6个文件夹,从7000到7005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件
创建容器
创建6个redis容器
for port in `seq 7000 7005`; do \ docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \ -v /data/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v /data/redis-cluster/${port}/data:/data \ --restart always --name redis-${port} --net redis-net \ --sysctl net.core.somaxconn=1024 redis:4.0.10 redis-server /usr/local/etc/redis/redis.conf; \ done
至此,通过命令docker ps可查看刚刚生成的6个容器信息
本文参考链接:
https://www.cnblogs.com/lianggp/articles/8136222.html
https://blog.csdn.net/qq_22211217/article/details/80436996