复制集群&.主从模式 (读写分离)

主从模式原理
集群运作原理


Redis主从复制默认读写分离(主写从读). 单点故障时,默认的容灾机制可以实现快速故障恢复(单点/多点故障).

主从集群说明


(优点) 易扩展 (可以动态的添加增加从机)
(优点) 读写分离 (主写从读)
(缺点) 复制延迟 (写操作均由主机完成,从机过多数据同步慢)
(缺点) 可用性差 (主机故障需手动选举新主机,此间写操作异常)

(1) 准备集群主机: 安装配置n台Redis服务器(n>=1),配置方式参考Redis6.2安装配置.

(2) 搭建主从集群: 从n台Redis主机中任选n-1台作为从机. 逐个连接从机,对从机进行主从关系配置(如下).

slaveof     # 将当前Redis主机配置为指定Redis主机的从机.info replication                    # 查看当前Redis主机的信息(role值从master改为slave即成功)

[多级从机] 除以上配置外,还可以为从机配置从机 (在从机的从机上通过slaveof 命令配置).
[切换主机] 在主机故障时,也可以手动将指定从机提升为集群的主机 (在指定从机上通过执行slaveof no one命令进行切换).

&.哨兵模式 (+高可用)

哨兵模式原理
集群运作原理


Redis哨兵模式中,哨兵主机会监控主从集群中的主机和所有从机,当主机故障时,哨兵主机会根据选举规则自动选举新主机. 当原主机故障重连后,则以从机身份重新接入集群.

哨兵集群说明


(优点) 易扩展 (可以动态的添加增加从机)
(优点) 高可用 (主机故障时,会选举新主机来保证读写正常)
(缺点) 复制延迟 (写操作均由主机完成,从机过多数据同步慢)

(1) 配置主从集群: 安装配置n台Redis服务器,并建立出主从关系.

(2) 配置哨兵主机: 为Redis主从集群添加哨兵服务器(最少1台),用于对主从关系进行监控和自动切换.

# sentinel.conf文件中写入如下内容,其中1为至少有多少个哨兵同意迁移的数量sentinel monitor    1

(3) 启动哨兵主机: 启动方式如下,启动后接口连接哨兵集群,连接入口为主机和从机 (同主从集群).

redis-sentinel /etc/redis/sentinel.conf    # 启动哨兵服务器

分片集群 (+负载均衡)

分片集群原理
集群运作原理


Redis分片集群中,数据会根据slot分片存储到不同的复制集群中(每组复制集群存储总数据的1/n,n为复制集群数量).

分片集群说明


(优点) 易扩展 (无中心化,配置相对简单)
(优点) 高可用 (复制集群故障仅导致部分数据不可用)
(优点) 高负载 (读写分离、分片存储等特性实现负载均衡)
(缺点) 不支持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台),# @ 集群中每个主节点对应几个从节点.# @ ip必须为Redis主机的真实ip,不能是本地回环地址.redis-cli --cluster create --cluster-replicas   [ ...]

(3) 集群连接测试: 连接集群中的任意一台主机(去中心化,任意主机都可作为集群连接入口).

cluster nodes      # 查看分片集群中所有节点的信息