Redis集群安装

Redis集群模式,参考:Redis-Cluster集群

Redis最开始支持的主从复制模式,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以在3.x提出cluster集群模式。

开源管理工具:Redis-ManagerQuickRedis

Redis-Cluster采用无中心结构,每个节点保存数据(部分桶区间)和整个集群状态,每个节点都和其他所有节点连接(PING-PONG机制)。为了保证数据的高可用性需配置主从模式,一个主节点对应N个从节点。客户端与任意节点直连即可,根据KEY取模定位桶位置,最后重定向到目标IP(客户端有路由缓存)。

  • 主节点的作用:
    • 提供数据存取
    • 异步同步数据给从节点
  • 从节点的作用:
    • 在所属主节点拉取数据备份
    • 若所属主节点宕机,通过投票选举一个从节点作为主节点实现容灾
    • readonly模式提供读取服务

当某个主节点挂掉后,在对应的从节点列表中选举一个充当主节点,从而保证集群可用。如果A、B、C三台主节点都没有从节点,任何一台宕机都会导致集群不可用,即便剩余主节点还正常(通过cluster-require-full-coverage=no配置,其余节点还可继续工作)。

Redis集群预分好16384个桶,每台机都维护了桶区间与IP的映射关系,桶分配和使用方式:

  • 三台主节点的分配情况:
    • A:[0-5460]
    • B:[5461-10922]
    • C:[10923-16383]
  • 新增一个主节点D时,从已有节点的前面各取一部分移动过去:
    • A:[1365-5460]
    • B:[6827-10922]
    • C:[12288-16383]
    • D:[0-1364, 5461-6826, 10923-12287]
  • 当需要存一个Key-Val时,根据CRC16(key) mod 16384的值决定将key放到哪个桶中,最后重定向到正确的节点

Redis的安装与启动

# 安装Remi的软件源
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# 安装最新包
yum --enablerepo=remi install redis
# 以服务模式单独启动
service redis start
# 启动或访问有问题,可尝试关闭防火墙
systemctl stop firewalld

# 查看端口占用
lsof -i | grep 6379

# 集群模式配置,注意各节点的端口号和文件目录
# dir /var/lib/redis/node1
# logfile /var/log/redis/node1/redis.log
# port 6379
# pidfile /var/run/redis_6379.pid
# cluster-enabled yes
# cluster-config-file nodes-6379.conf
# daemonize yes

# 启动节点
redis-server /etc/redis/node1.conf

# 停止节点
/usr/libexec/redis-shutdown node1

# 查看启动情况
ps -el | grep redis

# 创建集群(先确认所有节点都已正常启动)
redis-cli --cluster create 0.0.0.0:6381 0.0.0.0:6382 0.0.0.0:6383 \
0.0.0.0:6384 0.0.0.0:6385 0.0.0.0:6386 --cluster-replicas 1

# 以集群模式登录,操作相关key时会提示重定向的slot和节点
redis-cli -c -h 0.0.0.0 -p 6381

# 批量修改配置里的绑定IP
sed -i 's/0.0.0.0/172.16.9.138/g' /etc/redis/node*.conf
# 删除全部节点的备份数据和集群配置文件
rm -f /var/lib/redis/node*/*

posted @ 2021-10-28 16:06  爱定小闹钟  阅读(44)  评论(0编辑  收藏  举报