1 redis集群简介:
1.1 集群的概念
所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态(高可用)。
1.2 使用redis集群的必要性
问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群?
- 单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。
- 单个redis的读写能力是有限的。
redis集群是为了强化redis的读写能力。
1.3 如何学习redis集群
- redis集群中,每一个redis称之为一个节点。
- redis集群中,有两种类型的节点:主节点(master)、从节点(slave)。
- redis集群,是基于redis主从复制实现。
所以,学习redis集群,就是从学习redis主从复制模型开始的。
2 redis主从复制
2.1 概念
主从复制模型中,有多个redis节点。其中,有且仅有一个为主节点Master。从节点Slave可以有多个。只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步。
2.2 特点
- 主节点Master可读、可写
- 从节点Slave只读。(read-only)
因此,主从模型可以提高读的能力,在一定程度上缓解了写的能力。因为能写仍然只有Master节点一个,可以将读的操作全部移交到从节点上,变相提高了写能力。
2.3 基于配置实现
2.3.1 需求
2.3.2 配置步骤
- 在 /usr/local 目录下,创建一个 /redis/master-slave 目录
- 在 master-slave 目录下,创建三个子目录 6380、6381、6382
- 依次拷贝redis解压目录下的 redis.conf 配置文件,到这三个子目录中
- 进入 6380 (master) 目录,修改 redis.conf ,将 port 端口修改成 6380 即可
- 进入 6381 (slave) 和 6382 目录,分别修改 redis.conf,将 port 端口改成 6381、6382,同时指定开启主从复制。
2.3.3 测试
依次启动主从节点,主节点的日志中会显示从节点的连入。经测试可以看到,主节点可以读写,从节点默认只能读不能写。
3 Sentinel哨兵模式
3.1 主从模式的缺陷
当主节点宕机了,整个集群就没有可写的节点了。由于从节点上备份了主节点的所有数据,那在主节点宕机的情况下,如果能够将从节点变成一个主节点,是不是就可以解决这个问题了呢?是的,这个就是Sentinel哨兵的作用。
3.2 哨兵的任务
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
- 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会进行选举,