【Redis】部署架构 - 集群模式

部署脚本

#!/bin/bash

# 设置参数
CLUSTER_NODES=6 # 集群节点数
REDIS_PORT_BASE=7000 # 起始端口号
REDIS_CONFIG_PATH=/etc/redis # Redis 配置文件目录
REDIS_DATA_PATH=/var/lib/redis # Redis 数据目录

# 创建 Redis 数据目录
mkdir -p ${
    
    REDIS_DATA_PATH}/{
    
    7000,7001,7002,7003,7004,7005}

# 生成 Redis 配置文件并启动节点
for ((i = 0; i < CLUSTER_NODES; i++)); do
    PORT=$(expr $REDIS_PORT_BASE + $i)
    NODE_ID=$(printf "%04x" $PORT)
    mkdir -p ${
    
    REDIS_CONFIG_PATH}/${
    
    PORT}
    cat > ${
    
    REDIS_CONFIG_PATH}/${
    
    PORT}/redis.conf <<EOF
port ${
    
    PORT}
cluster-enabled yes
cluster-config-file nodes-${
    
    NODE_ID}.conf
cluster-node-timeout 5000
appendonly yes
dir ${
    
    REDIS_DATA_PATH}/${
    
    PORT}
EOF
    redis-server ${
    
    REDIS_CONFIG_PATH}/${
    
    PORT}/redis.conf &
done

# 等待节点启动完成
sleep 10

# 创建集群
FIRST_PORT=$REDIS_PORT_BASE
LAST_PORT=$(expr $FIRST_PORT + $CLUSTER_NODES - 1)
CLUSTER_HOST=$(hostname -i)
redis-cli --cluster create ${
    
    CLUSTER_HOST}:${
    
    FIRST_PORT} ${
    
    CLUSTER_HOST}:$(expr $FIRST_PORT + 1) ${
    
    CLUSTER_HOST}:$(expr $FIRST_PORT + 2) ${
    
    CLUSTER_HOST}:$(expr $FIRST_PORT + 3) ${
    
    CLUSTER_HOST}:$(expr $FIRST_PORT + 4) ${
    
    CLUSTER_HOST}:$(expr $FIRST_PORT + 5) --cluster-replicas 1

该脚本假设 Redis 集群由 6 个节点组成,起始端口号为 7000,Redis 配置文件和数据目录分别位于 /etc/redis 和 /var/lib/redis 目录下。脚本生成 Redis 配置文件,并在后台启动每个节点的 Redis 服务器。随后,脚本等待一段时间,然后使用 redis-cli 工具创建 Redis 集群。其中,–cluster-replicas 1 参数表示为每个主节点自动创建一个从节点。

注意事项

对于每个 Redis 节点,需要确保节点之间的网络连接稳定,并且具有足够的带宽。
在 Redis 集群中,每个键值对的存储位置是通过哈希算法计算得出的。因此,在添加或删除节点时,可能会导致部分数据从一个节点迁移到另一个节点,这可能会影响集群的性能。
如果 Redis 集群中的某个节点发生故障,则可能会导致部分数据无法访问。在这种情况下,需要手动干预来进行故障修复。

优点

可以实现水平扩展,增加集群的读写吞吐量。
支持自动故障恢复和主从切换。
通过数据自动分片,可以更好地利用硬件资源。

缺点

部署和管理 Redis 集群需要一些专业知识。
在 Redis 集群中,单个键值对可能会被拆分到不同的节点上,这可能会导致跨节点事务的实现变得困难。
在某些情况下,当节点增加或删除时,可能需要重新分片,这可能会导致性能问题和操作复杂性增加。

猜你喜欢

转载自blog.csdn.net/qq_38428623/article/details/129947862