docker搭建redis三主三从集群
1.拉取redis镜像
docker pull redis
2.查看镜像是否拉取成功
docker images
3.创建集群目录文件
mkdir redis-cluster-d
4.进入创建的目录
cd redis-cluster-d/
5.创建redis配置文件模板
vi redis-cluster.tmpl
#模板内容如下
port ${PORT}
masterauth 123456
requirepass 123456
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 127.0.0.1
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
#配置解释
1.port 端口号
2.masterauth 节点间访问密码 跟下面一致
3.requirepass redis访问密码
4.cluster-enabled 启动集群模式
5.cluster-config-file 集群节点信息文件
6.cluster-node-timeout 集群节点宕机发现时间
7.cluster-announce-ip 集群节点汇报ip(外网访问使用外网ip,内网访问使用内网ip,除本机外不能使用127.0.0.1)
8.cluster-announce-port 集群节点的汇报port防止nat
9.cluster-announce-bus-port 集群节点的汇报bus-port防止nat
10.appendonly 开启aof持久化
5.使用命令:在 redis-cluster下生成conf和data目标,并生成配置信息
for port in seq 7001 7006
;
do mkdir -p ./KaTeX parse error: Expected 'EOF', got '&' at position 13: {port}/conf &̲& PORT={port} envsubst < ./redis-cluster.tmpl > ./KaTeX parse error: Expected 'EOF', got '&' at position 24: …onf/redis.conf &̲& mkdir -p ./{port}/data;
done;
#遍历生成不同端口redis配置文件 与挂载目录 若两个服务器部署 应分别执行 三个端口即可
6.创建六个redis容器
for port in seq 7001 7006
;
do docker run -d --net=host -v /home/redis-cluster-d/
p
o
r
t
/
c
o
n
f
/
r
e
d
i
s
.
c
o
n
f
:
/
e
t
c
/
r
e
d
i
s
/
r
e
d
i
s
.
c
o
n
f
−
v
/
h
o
m
e
/
r
e
d
i
s
−
c
l
u
s
t
e
r
−
d
/
{port}/conf/redis.conf:/etc/redis/redis.conf -v /home/redis-cluster-d/
port/conf/redis.conf:/etc/redis/redis.conf−v/home/redis−cluster−d/{port}/data:/data --restart always --name=redis-${port} redis redis-server /etc/redis/redis.conf;
done;
#遍历开启不同端口redis容器 与挂载目录 若两个服务器部署 应分别执行 三个端口即可
#/home/redis-cluster-d 为最开始创建的文件目录
7.查看容器是否创建成功
docker ps
8.进入容器内部
docker exec -it redis-7001 bash
9.配置节点信息
redis-cli -a 123456 --cluster create 192.168.80.93:7001 192.168.80.93:7002 192.168.80.93:7003 192.168.80.93:7004 192.168.80.93:7005 192.168.80.93:7006 --cluster-replicas 1
#多个服务器时 使用不同的ip跟端口 配置成自己使用的
10.进入redis服务器内部
redis-cli -c -a 123456 -h 127.0.0.1 -p 7001
11.查看节点信息
CLUSTER NODES
12.springboot使用redis集群
yml格式:
spring:
redis
password: 123456 #密码
cluster:
nodes:
- 192.168.80.93:7001 #节点信息
- 192.168.80.93:7002
- 192.168.80.93:7003
- 192.168.80.93:7004
- 192.168.80.93:7005
- 192.168.80.93:7006
max-redirects: 5 #重定向次数
properties格式:
#节点信息
spring.redis.cluster.nodes=127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003,127.0.0.1:7004,127.0.0.1:7005
#重定向次数
spring.redis.cluster.max-redirects=5
redis服务器连接密码(默认为空)
spring.redis.password=123456