在阿里云服务器上通过docker部署redis cluster

在阿里云服务器上通过docker部署redis cluster

0. 环境

  • centos7(内核版本高于3.10)

1. 安装docker

直接通过脚本安装

$ sudo yum update
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

启动docker

$ sudo systemctl start docker

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。
请在该配置文件中加入(没有该文件的话,请先建一个):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

1. 获取redis容器

$ sudo docker pull redis

2. 准备配置文件及数据文件夹

2.1 编写配置文件模板

redis-cluster.tmpl:

port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip XXX.XXX.XXX.XXX # 这里是你的服务器外网ip
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
logfile "redis.log"

2.2 创建6个redis cluster的节点

for port in `seq 7010 7015`; do \
mkdir -p ${port}/data; \
mkdir -p ${port}/conf; \
PORT=${port} envsubst < redis-cluster.tmpl; \
done

2.3 创建完成后的目录结构:

在阿里云服务器上通过docker部署redis cluster_第1张图片

3. 启动docker

$ for port in `seq 7010 7015`; do \
sudo docker run --name redis-${port} --net host \
-v $PWD/${port}/data:/data \
-v $PWD/${port}/conf/redis.conf:/etc/redis/redis.conf \
--restart always \
--sysctl net.core.somaxconn=1024 \
-d redis redis-server /etc/redis/redis.conf; \
done

这里为什么–net host ,在redis官网有解释redis官网

4. 创建集群

  • 由于redis5.0创建集群的工具已经继承在了redis-cli中,先通过docker命令进入任意一个节点中
$ sudo docker exec -it redis-7010 /bin/bash
  • 通过redis-cli命令创建集群,其中XXX.XXX.XXX.XXX必须为你的服务器外网ip
$ redis-cli --cluster create XXX.XXX.XXX.XXX:7010 XXX.XXX.XXX.XXX:7011 XXX.XXX.XXX.XXX:7012 XXX.XXX.XXX.XXX:7013 XXX.XXX.XXX.XXX:7014 XXX.XXX.XXX.XXX:7015 --cluster-replicas 1
  • 创建成功
    在阿里云服务器上通过docker部署redis cluster_第2张图片

5. 注意事项

5.1 其中 --net host 是必须的,表示使用本机网络环境

5.2 配置文件中 cluster-announce-bus-port 1${PORT} 也是需要的,在官网有解释(在docker环境下的时候,每个节点需要知道自己的ip和端口,还要指定总线端口)

5.3 在阿里云服务器上必须开启7010-7015, 17010-17015,不然建立集群也会失败

5.4 创建集群和配置文件中的XXX.XXX.XXX.XXX必须为服务器外网ip

你可能感兴趣的:(linux)