优秀的编程知识分享平台

网站首页 > 技术文章 正文

Docker搭建Redis 6.0集群(使用两台集群搭建cluster模式)

nanyue 2025-01-18 22:57:29 技术文章 1 ℃

#头条创作挑战赛#

假设我的两台机器分别是:172.21.0.17、172.21.0.12,此两个IP为内网IP。

  1. Redis镜像下载
docker pull redis:6.2.7
  1. 创建Redis配置文件

创建redis的配置文件redis.conf,配置redis端口,设置超时时间、日志级别、认证密码以及持久化等信息。通过脚本创建redis配置文件

172.21.0.17 机器上创建3个redis.conf

for port in $(seq 6389 6391); \
do \
mkdir -p /opt/redis-cluster/redis-node-${port}/{conf,data}
touch /opt/redis-cluster/redis-node-${port}/conf/redis.conf
cat << EOF >/opt/redis-cluster/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

# 指定日志记录级别
loglevel warning
logfile ""

# 设置数据库的数量,默认为0
databases 16

# 集群连接地址及端口
cluster-announce-ip 172.21.0.17
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}

# Append Only File是另一种持久化方式,可提供更好的持久化特性。
# Redis会把每次写入的数据在接收后都写入appendonly.aof 文件
appendonly yes

# 集群加密
masterauth synjones2022
requirepass synjones2022
EOF
done

172.21.0.12 机器上创建3个redis.conf

for port in $(seq 6389 6391); \
do \
mkdir -p /opt/redis-cluster/redis-node-${port}/{conf,data}
touch /opt/redis-cluster/redis-node-${port}/conf/redis.conf
cat << EOF >/opt/redis-cluster/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

# 指定日志记录级别
loglevel warning
logfile ""

# 设置数据库的数量,默认为0
databases 16

# 集群连接地址及端口
cluster-announce-ip 172.21.0.12
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}

# Append Only File是另一种持久化方式,可提供更好的持久化特性。
# Redis会把每次写入的数据在接收后都写入appendonly.aof 文件
appendonly yes

# 集群加密
masterauth synjones2022
requirepass synjones2022
EOF
done
  1. 创建容器并启动

两台机器均执行如下命令:

for port in `seq 6389 6391`; do \
  docker run -d --restart=always \
  --name redis-node-${port} \
  --privileged=true \
  -v /opt/redis-cluster/redis-node-${port}/conf/redis.conf:/etc/redis/redis.conf \
  -v /opt/redis-cluster/redis-node-${port}/data:/data \
  --log-opt max-size=10m \
  --log-opt max-file=1 \
  --net=host \
  redis:6.2.7 \
  redis-server /etc/redis/redis.conf
done
  1. 建立集群

两台机器:172.21.0.17、172.21.0.12

  1. 进入某个机器的其中一个容器
docker exec -it redis-node-6389 /bin/bash
  1. 组建集群
redis-cli -p 6389 -a synjones2022 --cluster \
create 172.21.0.17:6389 172.21.0.17:6390 172.21.0.17:6391 \
172.21.0.12:6389 172.21.0.12:6390 172.21.0.12:6391 \
--cluster-replicas 1
  1. 调试示例:
  1. 验证集群信息
  1. 进入其中一个容器
docker exec -it redis-node-6389 /bin/bash
  1. 进入redis
redis-cli -p 6389 -a synjones2022
  1. 查看集群节点信息
cluster nodes

查看密码:config get requirepass
  1. 调试参考
  1. 使用Another-Redis连接

此Redis客户端的下载地址:https://github.com/qishibo/AnotherRedisDesktopManager

使用RedisClient连接示例,先公网ip ssh登录,再配置内网地址进行集群连接,选择集群中任一节点配置填入即可,会自动识别其它节点

批量清理容器脚本

for folder in redis-node-6389 redis-node-6390 redis-node-6391; \
do \
    docker rm -f ${folder};
    echo "delete ${folder} complete";
done

集群连接地址:

172.21.0.17:6389,172.21.0.17:6390,172.21.0.17:6391,172.21.0.12:6389,172.21.0.12:6390,172.21.0.12:6391

Tags:

最近发表
标签列表