- 环境
2台机器 10.30.97.200;10.30.97.220 centos7系统 含有已安装docker - 整体搭建步骤分为以下几步:
. 下载redis镜像
. 编写redis配置文件
. 创建redis容器
. 创建redis cluster集群
2.1. 编写redis配置文件
2.1.1. 创建目录和文件
分别在2台机器上执行下操作:
mkdir -p /usr/local/docker-redis/redis-cluster
cd /usr/local/docker-redis/redis-cluster
vim redis-cluster.tmpl
2.1.2. 编写配置文件
10.30.97.200 机器的redis-cluster.tmpl文件内容如下:
port ${PORT}
requirepass 1234
masterauth 1234
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip 10.30.97.200
cluster-announce-port
P
O
R
T
c
l
u
s
t
e
r
−
a
n
n
o
u
n
c
e
−
b
u
s
−
p
o
r
t
1
{PORT} cluster-announce-bus-port 1
PORTcluster−announce−bus−port1{PORT}
10.30.97.220机器的redis-cluster.tmpl文件内容如下:
port ${PORT}
requirepass 1234
masterauth 1234
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip 10.30.97.220
cluster-announce-port
P
O
R
T
c
l
u
s
t
e
r
−
a
n
n
o
u
n
c
e
−
b
u
s
−
p
o
r
t
1
{PORT} cluster-announce-bus-port 1
PORTcluster−announce−bus−port1{PORT}
对上述文件配置的解释:
port 端口
requirepass 主从节点通信密码
masterauth 与requirepass成对出现
protected-mode 安全模式
daemonize 是否是后台运行
appendonly AOS的文件是否开启
cluster-enabled 集群环境是否开启
cluster-config-file 集群配置文件
cluster-node-timeout 集群通信超时时间
cluster-announce-ip 集群ip,用宿主机的,因为是host网络模式
cluster-announce-port 集群端口
cluster-announce-bus-port 消息总线端口
在10.30.97.200 机器的 redis-cluster目录下执行以下命令:
for port in seq 6371 6373
;do
mkdir -p KaTeX parse error: Undefined control sequence: \ at position 13: {port}/conf \̲ ̲&& PORT={port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf
&& mkdir -p ${port}/data;
done
执行完后创建的文件结构:
在10.30.97.220 机器的 redis-cluster目录下执行以下命令:
for port in seq 6374 6376
;do
mkdir -p KaTeX parse error: Undefined control sequence: \ at position 13: {port}/conf \̲ ̲&& PORT={port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf
&& mkdir -p ${port}/data;
done
2.2. 创建redis容器
2.2.1. 创建容器
将宿主机的 6371-6376 之间的端口与6个redis容器映射,并将宿主机的目录与容器的目录进行映射,网络模式指定host
在10.30.97.200 机器执行以下命令:
for port in KaTeX parse error: Undefined control sequence: \ at position 21: …6371 6373); do \̲ ̲docker run -di …{port} --net host
-v /usr/local/docker-redis/redis-cluster/KaTeX parse error: Undefined control sequence: \ at position 56: …dis/redis.conf \̲ ̲-v /usr/local/d…{port}/data:/data
redis redis-server /usr/local/etc/redis/redis.conf;
done
在10.30.97.220 机器执行以下命令:
for port in KaTeX parse error: Undefined control sequence: \ at position 21: …6374 6376); do \̲ ̲docker run -di …{port} --net host
-v /usr/local/docker-redis/redis-cluster/KaTeX parse error: Undefined control sequence: \ at position 56: …dis/redis.conf \̲ ̲-v /usr/local/d…{port}/data:/data
redis redis-server /usr/local/etc/redis/redis.conf;
done
2.3. 创建redis cluster集群
随便进入一个容器节点,并进入 /usr/local/bin/ 目录:
docker exec -it redis-6371 bash
cd /usr/local/bin/
接下来我们就可以通过以下命令实现redis cluster集群的创建
redis-cli -a 1234 --cluster create 10.30.97.200:6371 10.30.97.200:6372 10.30.97.200:6373 10.30.97.220:6374 10.30.97.220:6375 10.30.97.220:6376 --cluster-replicas 1