Dcoker搭建Redis5+版本集群

前几天收到需求, 需要做一个Redis的集群, 让主从节点分布在两个机房中, 来保证当一个机房停电后, 数据库依然可用. 这里记录一下搭建过程. 我这里是搭建了一个15个master个15个slaver的集群. Redis5.0后提供一种更加简单的方式去建立集群.(redis cluster 至少需要三个主节点三个从节点)

安装环境 :

CentOS7
docker version 19.03.9

一.拉取Redis镜像

docker pull redis
默认是下载最新版本的镜像, 可以用docker pull redis:tag 方式拉取指定版本.

二. 创建自定义网络

docker network create redis-net

三. 构建集群

以一台机器上的一个节点进行演示, 其他节点操作相同, 只是需要修改对应的端口.

  • 在服务器/usr/local 目录下建立redis-cluster目录存放redis节点
mkdir /usr/local/redis-cluster
cd /usr/local/redis-cluster
  • 在redis-cluster目录下,建立配置文件的模板
vi redis-cluster.tmpl
#内容如下
port ${
     PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
# 服务器IP, 自行填写
cluster-announce-ip xx.xx.xx.xx
cluster-announce-port ${
     PORT}
# 集群节点间通信端口, 与redis端口的偏移量必须是10000
cluster-announce-bus-port 1${
     PORT}
appendonly yes
  • 建立集群文件
for port in `seq 11025 11030`; do \
  mkdir -p ./${
     port}/conf \
  && PORT=${
     port} envsubst < ./redis-cluster.tmpl > ./${
     port}/conf/redis.conf \
  && mkdir -p ./${
     port}/data; \
done

此时redis-cluster目录文件结构如下:
Dcoker搭建Redis5+版本集群_第1张图片
进入其中一个目录 11025:
在这里插入图片描述
进入 conf , 修改redis.conf文件
Dcoker搭建Redis5+版本集群_第2张图片
需要修改cluster-announce-bus-port 21025这一行, 使其与redis端口11025的偏移量是10000.
其他节点操作相同, 注意修改端口.

  • 启动6个redis节点(以11025为例)
 docker run -d -ti -p 11025:11025 -p 21025:21025 \
  -v /usr/local/redis-cluster/11025/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /usr/local/redis-cluster/11025/data:/data \
  --restart always --name redis-11025 --net redis-net \
  --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
  • 查看启动情况
    在这里插入图片描述
    6个节点已经启动成功其他服务器的节点做相同操作, 成功启动后, 开始搭建集群
  • 进入任意一个redis节点
docker exec -it redis-11025 bash
# 执行如下命令
/usr/local/bin/redis-cli --cluster create \
ip:10025 \
ip:10026 \
ip:10027 \
ip:11025 \
ip:11026 \
ip:11027 \
ip:12025 \
ip:12026 \
ip:12027 \
ip:46025 \
ip:46026 \
ip:46027 \
ip:47025 \
ip:47026 \
ip:47027 \
ip:10028 \
ip:10029 \
ip:10030 \
ip:11028 \
ip:11029 \
ip:11030 \
ip:12028 \
ip:12029 \
ip:12030 \
ip:46028 \
ip:46029 \
ip:46030 \
ip:47028 \
ip:47029 \
ip:47030 \
--cluster-replicas 1

其中 ip为服务器ip, --cluster-replicas 1 代表主从节点平均分配, 即15个主节点,15个从节点.至此redis集群搭建完毕.
参考文档

你可能感兴趣的:(数据库,redis,docker,linux)