创建一个 Redis 集群,你需要按照一定的步骤来配置 Docker 容器和 Redis 实例。以下是详细的步骤来帮助你完成这个过程,并创建一个包含六台服务器的 Redis 集群。
准备工作
确保你已经安装了 Docker 和 Docker Compose(可选但推荐)。
创建 Redis 集群
- 创建目录结构
在主机上创建必要的目录用于存储数据和配置文件。
bash
深色版本
mkdir -p /data/redis/{node1,node2,node3,node4,node5,node6}/data
2. 创建基本的 redis.conf 文件
创建一个基本的 redis.conf 文件,这个文件将被复制到每个节点中并根据需要修改。
cat > /data/redis/redis.conf <<EOF
port 6379
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.18.115.139
cluster-announce-port 6379
cluster-announce-bus-port 16379
#appendonly yes
requirepass S@ssw0rd!
masterauth S@ssw0rd!
dir /data
save 300 1
save 60 10
save 10 10000
dbfilename dump.rdb
rdbcompression yes
EOF
docker run --name redis-node1 -p 6379:6379 -v /data/redis/node1/data:/data -v /data/redis/redis.conf:/usr/local/etc/redis/redis.conf redis:7.4.0 redis-server /usr/local/etc/redis/redis.conf
... (重复上述命令启动其他节点)
- 修改配置文件
对于每个节点,你需要修改 redis.conf 文件中的 cluster-announce-ip 和 cluster-announce-port 设置,以正确地广播它们自己的 IP 地址和端口。
bash
深色版本
sed -i 's/bind 0.0.0.0/bind 0.0.0.0\ncluster-announce-ip 127.0.0.1\ncluster-announce-port 6379/g' /data/redis/redis.conf
... (重复上述命令修改其他节点的配置)
如果你在 Docker 容器内部修改配置,需要使用 docker exec 命令。
- 创建集群
使用 redis-trib.rb 脚本创建集群。你需要在 Docker 容器内运行此脚本,或者将脚本拷贝到宿主机上执行。
在宿主机上创建集群
docker exec -it redis-node1 redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
或者从 Docker 容器内部执行
docker run --rm --net=host redis:7.4.0 redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
7. 验证集群状态
检查集群的状态是否正常。
docker exec -it redis-node1 redis-cli -c -h 127.0.0.1 -p 6379
INFO cluster
这将显示集群的信息,包括每个槽的状态等。