自由尋覓快樂別人從沒法感受

0%

基于Docker的Redis集群搭建

本机环境

  • 操作系统:CentOS8,由Vmware虚拟机创建,网络使用桥接模式
  • Docker版本:19.03.12
  • Redis版本:5.0.3

前期准备

安装并启动Docker

1
2
sudo yum install docker -y
sudo service docker start

获取Redis镜像

1
docker pull redis

创建集群配置文件模板

首先创建一个文件夹,用于存放配置文件模板,稍后也用于存放Redis集群数据文件

1
2
mkdir ~/redis_cluster
cd ~/redis_cluster

新建模板文件vim redis_cluster.tmpl,并写入以下配置(注意此处的Cluster IP,需要根据自己的宿主机IP地址来填写):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Redis Port
port ${PORT}

# Protected mode off
protected-mode no

# Cluster enable
cluster-enabled yes

# Cluster node conf
cluster-config-file nodes.conf

# Timeout
cluster-node-timeout 5000

# Cluster IP
cluster-announce-ip 192.168.1.103

# Cluster Port-range: 8090-8095
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}

# Enable append only back up mode
appendonly yes

# Back up frequency
appendfsync everysec

# Disable aof comprass sync
no-appendfsync-on-rewrite no

# Aof rewrite percentage
auto-aof-rewrite-percentage 100

# Aof rewrite size
auto-aof-rewrite-min-size 512mb

# Disable back up
save ""

新建批量生成单个Redis配置的脚本

vim mkconf.sh,随后填入以下内容,此处我的Redis集群端口从8090开始到8095,可根据需要自行修改

1
2
3
4
5
for port in `seq 8090 8095`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis_cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done

然后赋予可执行权限并运行该脚本

1
2
chmod +x mkconf.sh
./mkconf.sh

新建批量生成Docker容器的脚本

vim mkcontainer.sh,随后填入以下内容

1
2
3
4
5
6
7
for port in `seq 8090 8095`; do \
docker run -d -it \
-v ~/redis_cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v ~/redis_cluster/${port}/data:/data \
--restart always --name redis-${port} --net host \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done

建立Redis集群

如果宿主机已经安装了redis-cli,就不用进入到容器内部了,可以直接在宿主机上操作

如果宿主机没有安装redis-cli,则执行以下命令随便进入一个容器中

1
docker exec -it redis-8090 bash

执行以下命令创建集群

1
redis-cli --cluster create 192.168.1.103:8090 192.168.1.103:8091 192.168.1.103:8092 192.168.1.103:8093 192.168.1.103:8094 192.168.1.103:8095 --cluster-replicas 1

创建集群

出现以上图中的询问,输入yes回车即可,自此Redis集群就创建成功了

验证集群可用性

登录其中的一个节点

1
redis-cli -c -h 192.168.1.18 -p 8090

查看集群节点信息,同时也可以试着写入数据,能查看到节点信息,能写入、读取数据,表示集群搭建成功

集群节点信息