docker搭建redis集群

一、概览

1、redis集群最少需要6个节点,且redis集群下只有db0,不支持多db。

2、服务器

  • 服务器一:192.168.3.13:6391、192.168.3.13:6392、192.168.3.13:6393
  • 服务器二:192.168.3.14:6391、192.168.3.14:6392、192.168.3.14:6393

3、开放端口

  • 节点访问:6391-6393
  • 集群连接:16391-16393
# 添加6391端口 firewall-cmd --zone=public --add-port=6391/tcp --permanent 

# 刷新防火墙
firewall-cmd --reload

二、创建容器

  • 分别在二台服务器上执行以下操作

1、开放以上端口

2、安装镜像

docker pull redis:6.2.5 

3、新建目录和配置文件

for port in $(seq 6391 6393); \ do \ mkdir -p /home/apps/redis-node-${port}/{conf,data} touch /home/apps/redis-node-${port}/conf/redis.conf cat << EOF >/home/apps/redis-node-${port}/conf/redis.conf #端口 port ${port}  bind 0.0.0.0 #启用集群模式 cluster-enabled yes  cluster-config-file nodes.conf #超时时间 cluster-node-timeout 5000 # 集群连接地址及端口 cluster-announce-ip 192.168.3.13 cluster-announce-port ${port} cluster-announce-bus-port 1${port} appendonly yes #集群加密 masterauth 123456 requirepass 123456 EOF done 

4、创建容器并启动

# 循环创建节点 for port in `seq 6391 6393`; do   docker run -d --name redis-node-${port} --restart=always --privileged=true -v /home/apps/redis-node-${port}/conf/redis.conf:/etc/redis/redis.conf -v /home/apps/redis-node-${port}/data:/data --net=host redis:6.2.5 redis-server /etc/redis/redis.conf done 

三、集群配置

  • 随便进一台服务器进行配置

1、集群配置

# 进入某一个容器 docker exec -it redis-node-6391 /bin/bash 

# 组建集群
redis-cli -p 6391 -a 123456 --cluster create 192.168.3.13:6391 192.168.3.13:6392 192.168.3.13:6393 192.168.3.14:6391 192.168.3.14:6392 192.168.3.14:6393 --cluster-replicas 1

2、查看集群信息

redis-cli -p 6391 -a 123456 

查看节点

cluster nodes

3、测试集群

  • 使用 redis-cli -c 连接到集群上,set一个值,然后从其他节点再获取值查看是否成功
# 客户端连接,-c 代表连接集群 redis-cli -c -p 6391 -a 123456 

四、程序中使用

1、spring boot配置

spring:   redis:     password: 123456     cluster:       nodes: 192.168.3.13:6391,192.168.3.13:6392,192.168.3.13:6393,192.168.3.14:6391,192.168.3.14:6392,192.168.3.14:6393 

五、参考