Redis6.2集群部署
基础版 (主从模式)
主从集群优点 读写分离: 主写从读,分摊了读写压力. 数据容灾: 数据以多分存储在不同节点上. 主从集群缺点 复制延迟: 写操作均由主机完成,从机过多数据同步慢. 可用性差: 主机故障需手动选举新主机,此间写操作异常. 扩展性差: 集群只能有一台主机,从机是全量备份,无法在线扩容. |
(1) 准备集群主机: 安装配置n台Redis服务器(n>=1),配置方式参考Redis6.2安装配置.
(2) 搭建主从集群: 从n台Redis主机中任选n-1台作为从机. 逐个连接从机,对从机进行主从关系配置(如下).
slaveof <master_ip> <master_port> # 将当前Redis主机配置为指定Redis主机的从机.
info replication # 查看当前Redis主机的信息(role值从master改为slave即成功)
[多级从机] 除以上配置外,还可以为从机配置从机 (在从机的从机上通过
slaveof <slave_ip> <slave_port>
命令配置).
[切换主机] 在主机故障时,也可以手动将指定从机提升为集群的主机 (在指定从机上通过执行slaveof no one
命令进行切换).
进阶版 (哨兵模式)
主从集群优点 读写分离: 主写从读,分摊了读写压力. 数据容灾: 数据以多分存储在不同节点上. 可用性高: 主机故障时,哨兵主机会根据选举规则自动选举新主机. 主从集群缺点 复制延迟: 写操作均由主机完成,从机过多数据同步慢. 扩展性差: 集群只能有一台主机,从机是全量备份,无法在线扩容. |
(1) 配置主从集群: 安装配置n台Redis服务器,并建立出主从关系.
(2) 配置哨兵主机: 为Redis主从集群添加哨兵服务器(最少1台).
# sentinel.conf文件中写入如下内容,其中1为至少有多少个哨兵同意迁移的数量
sentinel monitor <master_name> <master_ip> <master_port> 1
(3) 启动哨兵主机: 启动方式如下,启动后接口连接哨兵集群,连接入口为主机和从机 (同主从集群).
redis-sentinel /etc/redis/sentinel.conf # 启动哨兵服务器
高级版 (集群模式)
分片集群优点 数据容灾: 数据按slot分片存储在不同节点上. 可用性高: 部分主机或主从集群故障时,分片集群仍可用. 负载均衡: 各节点间数据共享,可动态调整数据分布. 扩展性好: 无中心化,可线性扩展到1000节点,节点可动态增删. 分片集群缺点 功能受限: 不支持lua脚本、不支持多键操作和多键的Redis事务. |
(1) 准备集群主机: 安装配置n台Redis主机(n>=3),在每台主机的redis.conf中都启用如下配置,然后启动.
# 启用集群模式
cluster-enabled yes
# 设置节点的配置文件名
cluster-config-file nodes-6379.conf
# 设置节点的超时时间 (毫秒),超时自动进行主从选举
cluster-node-timeout 15000
# 关闭集群全覆盖,开启时有一个slot的主从全故障则集群整体故障 (关闭时仅故障slot不可用)
cluster-require-full-coverage no
(2) 搭建分片集群: 从n台Redis主机中任选一台输入如下指令,引导工具会自动生成架构方案,选yes进行配置即可.
# 将集群中所有主机的ip和端口都通过该命令进行指定(本例中为n台),
# @<number> 集群中每个主节点对应几个从节点.
# @<ip:port> ip必须为Redis主机的真实ip,不能是本地回环地址.
redis-cli --cluster create --cluster-replicas <number> <ip:port> [<ip:port> ...]
(3) 集群连接测试: 连接集群中的任意一台主机(去中心化,任意主机都可作为集群连接入口).
cluster nodes # 查看分片集群中所有节点的信息