【Redis】部署架构 - 哨兵模式

部署脚本

#!/bin/bash

# 设置参数
REDIS_PORT=6379 # Redis 主节点端口号
SENTINEL_PORT_BASE=26379 # 起始 Sentinel 端口号
SENTINEL_QUORUM=2 # Sentinel quorum 数量
REDIS_CONFIG_PATH=/etc/redis # Redis 配置文件目录

# 生成 Redis 主节点配置文件并启动节点
mkdir -p ${
    
    REDIS_CONFIG_PATH}
cat > ${
    
    REDIS_CONFIG_PATH}/redis.conf <<EOF
port ${
    
    REDIS_PORT}
appendonly yes
dir /var/lib/redis
EOF
redis-server ${
    
    REDIS_CONFIG_PATH}/redis.conf &

# 生成 Redis 哨兵配置文件并启动节点
for ((i = 0; i < SENTINEL_QUORUM; i++)); do
    PORT=$(expr $SENTINEL_PORT_BASE + $i)
    mkdir -p ${
    
    REDIS_CONFIG_PATH}/${
    
    PORT}
    cat > ${
    
    REDIS_CONFIG_PATH}/${
    
    PORT}/sentinel.conf <<EOF
port ${
    
    PORT}
sentinel monitor mymaster 127.0.0.1 ${
    
    REDIS_PORT} ${
    
    SENTINEL_QUORUM}
sentinel config-epoch mymaster 0
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
EOF
    redis-sentinel ${
    
    REDIS_CONFIG_PATH}/${
    
    PORT}/sentinel.conf &
done

该脚本创建一个 Redis 主节点和多个 Redis 哨兵节点,其中 Redis 主节点的端口号为 6379,Redis 哨兵节点的起始端口号为 26379。脚本生成 Redis 主节点和哨兵节点的配置文件,并在后台启动它们的 Redis 服务器和 Redis 哨兵进程。其中,sentinel monitor mymaster 127.0.0.1 ${REDIS_PORT} ${SENTINEL_QUORUM} 参数表示监控名为 mymaster 的主节点,并且至少需要 SENTINEL_QUORUM 个 Sentinel 节点同意才能执行故障转移操作。

注意事项

Redis 哨兵模式中,各个 Sentinel 节点必须配置在同一个局域网内,并且相互之间能够互通。
如果所有 Sentinel 节点都发生故障,则可能导致主节点无法恢复。(Redis 6.0 开始支持自动降级成单机模式)
在进行主从切换时,可能会出现数据丢失。这是因为新的主节点在切换后需要重新同步数据。

优点

可以增加系统的高可用性,当主节点发生故障时可以自动进行主从切换。
支持多 Sentinel 节点,可以提供对主节点健康状态的监控和决策。
在 Sentinel 节点中使用 quorum 算法,可以防止由于网络分区等原因而产生的脑裂问题。

缺点

部署和管理 Redis 哨兵集群需要一些专业知识。
Redis 哨兵模式的故障转移时间可能比较长,这可能会导致客户端请求超时或者服务质量下降。
Redis 哨兵模式只支持单主节点,无法实现水平扩展。

猜你喜欢

转载自blog.csdn.net/qq_38428623/article/details/129947959
今日推荐