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