在阿里云服务器上通过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 创建完成后的目录结构:
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
- 创建成功
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