Redis集群基于docker搭建

本文详细介绍如何使用Docker搭建一个由6个节点组成的Redis集群,包括环境准备、镜像拉取、网络创建、配置文件生成及容器运行等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备
docker拉取redis镜像和ruby镜像

docker pull redis // 当前版本是 5.0.0
docker pull ruby // 当前版本是 2.5.3
创建docker网络

docker network create redis-net
开始搭建
创建redis容器

创建redis配置文件 (redis-cluster.tmpl)
在路径/home下创建一个文件夹redis-cluster,在路径/home/redis-cluster下创建一个文件redis-cluster.tmpl,并把以下内容复制过去

port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.XX.XX //自己服务器IP
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 PORTclusterannouncebusport1{PORT}
appendonly yes
生成配置配置信息
共生成6个文件夹,从7000到7005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件

for port in seq 7000 7005; do
mkdir -p ./KaTeX parse error: Undefined control sequence: \ at position 13: {port}/conf \̲ ̲ && PORT={port} envsubst < ./redis-cluster.tmpl > ./KaTeX parse error: Undefined control sequence: \ at position 24: …onf/redis.conf \̲ ̲ && mkdir -p .…{port}/data;
done
创建6个redis容器
for port in seq 7000 7005; do
docker run -d -ti -p p o r t : {port}: port:{port} -p 1 p o r t : 1 {port}:1 port:1{port}
-v /home/redis-cluster/KaTeX parse error: Undefined control sequence: \ at position 56: …dis/redis.conf \̲ ̲-v /home/redis-…{port}/data:/data
–restart always --name redis-${port} --net redis-net
–sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
done
至此,通过命令docker ps可查看刚刚生成的6个容器信息,并且确保容器已经正常启起来了

集群
通过启动ruby来实现集群
在这里,脚本去github上面下载了一个ruby的脚本,请注意redis的版本和脚本版本要对应,此处redis的版本虽然是5.0.0,但是用最新的脚本版本启动不了,用4.0的版本就可以。

echo yes | docker run -i --rm --net redis-net ruby sh -c ’
gem install redis
&& wget https://raw.githubusercontent.com/antirez/redis/4.0/src/redis-trib.rb
&& ruby redis-trib.rb create --replicas 1
'"KaTeX parse error: Undefined control sequence: \ at position 34: …7000 7005`; do \̲ ̲ echo -n "(docker inspect --format ‘{ { (index .NetworkSettings.Networks “redis-net”).IPAddress } }’ “redis- p o r t " ) " : {port}")": port")":{port} ’ ’ ;
done)”
出现下面信息则说明redis集群就搭建好了

Creating cluster
Performing hash slots allocation on 6 nodes…
Using 3 masters:
172.19.0.2:7000
172.19.0.3:7001
172.19.0.4:7002
Adding replica 172.19.0.6:7004 to 172.19.0.2:7000
Adding replica 172.19.0.7:7005 to 172.19.0.3:7001
Adding replica 172.19.0.5:7003 to 172.19.0.4:7002
M: 5525e406ee40e808800f1e07ad24636448e4c400 172.19.0.2:7000
slots:0-5460 (5461 slots) master
M: c6aed43e8ca48a4bf92174fe1bff658eafaecdb3 172.19.0.3:7001
slots:5461-10922 (5462 slots) master
M: b9d4a2fa9ebfcaf54f58d62bbf66f87dfcbec68a 172.19.0.4:7002
slots:10923-16383 (5461 slots) master
S: 1d47c99ce5b47434fd9e87a54d37f49c9709368a 172.19.0.5:7003
replicates b9d4a2fa9ebfcaf54f58d62bbf66f87dfcbec68a
S: 49fa7f3e5fd9d54470b2caf5808582ad3195caeb 172.19.0.6:7004
replicates 5525e406ee40e808800f1e07ad24636448e4c400
S: 61a144bc54cb14e228e9cd8ad6b56922cc16d9d2 172.19.0.7:7005
replicates c6aed43e8ca48a4bf92174fe1bff658eafaecdb3
Can I set the above configuration? (type ‘yes’ to accept): >>> Nodes configuration updated

Assign a different config epoch to each node
Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join…

Performing Cluster Check (using node 172.19.0.2:7000)
M: 5525e406ee40e808800f1e07ad24636448e4c400 172.19.0.2:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 49fa7f3e5fd9d54470b2caf5808582ad3195caeb xx.106.108.xx:7004
slots: (0 slots) slave
replicates 5525e406ee40e808800f1e07ad24636448e4c400
M: c6aed43e8ca48a4bf92174fe1bff658eafaecdb3 xx.106.108.xx:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 61a144bc54cb14e228e9cd8ad6b56922cc16d9d2 xx.106.108.xx:7005
slots: (0 slots) slave
replicates c6aed43e8ca48a4bf92174fe1bff658eafaecdb3
S: 1d47c99ce5b47434fd9e87a54d37f49c9709368a xx.106.108.xx:7003
slots: (0 slots) slave
replicates b9d4a2fa9ebfcaf54f58d62bbf66f87dfcbec68a
M: b9d4a2fa9ebfcaf54f58d62bbf66f87dfcbec68a xx.106.108.xx:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.

Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
开启防火墙端口 7000-7005 17000-17005

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值