docker 搭建 redis cluster 集群环境
前言
最近在学习 redis-cluster
的知识,自己准备搭建一套简单的集群环境,因为 redis-cluster官方推荐的最低机器台数为3台。3个主节点,每个主节点,对应1个从节点,保证集群的高可用,容灾故障转移。
为什么我们使用docker 来搭建 ?
我个人主机上的 学习环境基本都是 docker 搭建的。因为占用小,安装简单,用完了随时停止环境,对当前主机无侵入,镜像命令都是统一的。
我们的目标是 三主 三从 搭建一个简单的 redis-cluster集群
。
准备
我们将配置文件和数据全都映射到我们的宿主机。我这里准备搭建7380 -7385
端口的6台redis实例。
我们新建对应的目录:
cd /usr/docker/data/
mkdir redis-cluster
cd redis-cluster/
mkdir 7380 7381 7382 7383 7384 7385
每个目录下 放置我们对应的配置文件 redis.conf
。 配置文件至少包括下面:
# 端口号
port 7380
# 开启集群模式
cluster-enabled yes
# 集群配置文件
cluster-config-file nodes-7380.conf
# 集群节点超时时间
cluster-node-timeout 15000
# aof 持久化
appendonly yes
# 兼容docker相关配置
#对外 ip
cluster-announce-ip 10.1.1.5
# 端口
cluster-announce-port 7380
# tcp 交互端口 默认 在实例端口基础 加 10000
cluster-announce-bus-port 17380
客户端端口:客户端访问Redis服务器的端口
集群总线端口:用二进制协议(gossip协议)的点对点集群通信的端口。用于节点的失败侦测、配置更新、故障转移授权,等等。
详细了解,可以去redis官网下载一个完整的 redis.conf 查看其备注即可。
运行 镜像
docker run --name myredis7380 -d -p 7380:7380 -p 17380:17380 -v /usr/docker/data/redis-cluster/7380:/data -v /usr/docker/data/redis-cluster/7380/redis.conf:/usr/local/redis.conf redis:v1 redis-server /usr/local/redis.conf
镜像运行成功后,查看我们持久化目录下的 集群配置文件
同理,我们启动剩余节点。
搭建集群
现在我们已经有了六个正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件。
通过使用 Redis 集群命令行工具 redis-trib , 编写节点配置文件的工作可以非常容易地完成: redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。
**
自己安装 redis-trib
./redis-trib.rb create --replicas 1 ip:7380 ip:7381 \
ip:7382 ip:7383 ip:7384 ip:7385
**
使用docker安装redis-trib
**
拉取镜像
docker pull yangyu66/redis-trib
命令行交互运行
docker run --rm -it yangyu66/redis-trib \
create --replicas 1 ip:7380 ip:7381 \
ip:7382 ip:7383 ip:7384 ip:7385
这个命令在这里用于创建一个新的集群, 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave
redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息:
我们这里一共6个redis 节点,redis-trib会自动按照一定规则帮我们配置主从。
输入 cluster nodes
可以查看集群节点。
最终结果: 7380 ;7381 ;7382 为集群主节点。7383;7384;7384 为各自的从节点。