分布式|Redis 主从复制、哨兵、集群的部署


文章目录

  • 一、Redis主从复制
    • 1、Redis主从复制的概念
    • 2、Redis主从复制的作用
    • 3、Redis主从复制的流程
    • 4、Redis主从复制的搭建
  • 二、哨兵模式
    • 1、哨兵模式的原理
    • 2、哨兵模式的作用![在这里插入图片描述](https://img-blog.csdnimg.cn/da9c586f67504c129f40ed2ab9f5c28f.png)
    • 3、哨兵模式的结构
    • 4、哨兵模式的搭建
  • 三、Redis 集群模式
    • 1、集群作用
    • 2、Redis集群的数据分片
    • 3、搭建Redis集群模式

一、Redis主从复制 1、Redis主从复制的概念
  • 主从复制,是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点 master,后者为从节点slave;数据的复制是单向的,只能有主节点到从节点
  • 默认情况下,每台redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点
2、Redis主从复制的作用
  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务,分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高redis服务器的并发量
  • 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis高可用的基础
3、Redis主从复制的流程
  • 启动一个slave从服务器进程,它会向master服务器上发送一个“sync command” 命令,请求同步连接
  • 不管是多少次连接,master服务器上都是会启动一个后台进程,将数据快照保存到数据文件中,执行rdb操作,同时master还会记录修改数据的所有命令并缓存在数据文件中
  • 后台进程完成缓存操作之后,master机器就会向slave服务器发送数据文件,slave服务器将数据文件保存到硬盘上,然后将其加载到内存中,接着master服务器就会修改数据的所有操作一并发送给slave服务器。若slave出现故障导致宕机,则恢复正常后会自动重新连接
  • master服务器收到slave服务器连接后,将其完整的数据文件发送给slave服务器,如果master同时收到多个slave发来的同步请求,则master会在后台启动一个进程以保存数据文件,然后将其发送给所有的slave服务器,确保所有的slave服务器都正常
4、Redis主从复制的搭建 4.1 在所有服务器安装redis
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

分布式|Redis 主从复制、哨兵、集群的部署
文章图片

分布式|Redis 主从复制、哨兵、集群的部署
文章图片

4.2 修改master节点redis配置文件
[root@master utils]# vim /etc/redis/6379.conf 70 bind 0.0.0.0/修改bind项,使之监听所有网段 137 daemonize yes/开启守护进程 172 logfile /var/log/redis_6379.log/指定日志文件目录 264 dir /var/lib/redis/6379/指定工作目录 700 appendonly yes/开启AOF持久化功能 [root@master utils]# /etc/init.d/redis_6379 restart/重启redis Stopping ... Waiting for Redis to shutdown ... Redis stopped Starting Redis server...

4.3 修改slave节点redis配置文件
[root@slave1 utils]# vim /etc/redis/6379.conf 70 bind 0.0.0.0/修改bind项,使之监听所有网段 137 daemonize yes/开启守护进程 172 logfile /var/log/redis_6379.log/指定日志文件目录 264 dir /var/lib/redis/6379/指定工作目录 288 replicaof 192.168.159.247 6379/指定同步的master节点和端口 700 appendonly yes/开启AOF持久化功能 [root@slave1 utils]# /etc/init.d/redis_6379 restart/修改完成配置文件重启服务 Stopping ... Waiting for Redis to shutdown ... Redis stopped Starting Redis server...

4.4 验证主从效果
4.4.1在mater节点看日志
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

4.4.2 在master节点上验证从节点
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

二、哨兵模式
  • 哨兵的核心功能:主从复制的基础上,哨兵引入了主节点的自动故障转移
1、哨兵模式的原理 分布式|Redis 主从复制、哨兵、集群的部署
文章图片

2、哨兵模式的作用分布式|Redis 主从复制、哨兵、集群的部署
文章图片
3、哨兵模式的结构 分布式|Redis 主从复制、哨兵、集群的部署
文章图片

4、哨兵模式的搭建 4.1 环境配置,在所有节点修改redis配置文件
[root@slave1 utils]# vim /opt/redis-5.0.7/sentinel.conf 17protected-mode no 26 daemonize yes 36 logfile "/var/log/sentinel.log" 65 dir "/var/lib/redis/6379" 84 sentinel monitor mymaster 192.168.159.2476379 2

【分布式|Redis 主从复制、哨兵、集群的部署】4.2 启动哨兵模式(先启动master,在启动slave)
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

分布式|Redis 主从复制、哨兵、集群的部署
文章图片

分布式|Redis 主从复制、哨兵、集群的部署
文章图片

4.2 故障模拟
4.2.1 故障redis-server进程
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

4.2.2 杀死master节点上redis-server的进程号
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

4.2.3 验证结果
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

三、Redis 集群模式 分布式|Redis 主从复制、哨兵、集群的部署
文章图片

1、集群作用 分布式|Redis 主从复制、哨兵、集群的部署
文章图片

2、Redis集群的数据分片 分布式|Redis 主从复制、哨兵、集群的部署
文章图片

3、搭建Redis集群模式
  • 搭建集群需要6个节点:3主3从;
  • 并设置主节点端口号:7001、7003、7005;对应从节点端口号:7002、7004、7006
3.1 在所有节点配置
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

3.2 在master1节点修改配置文件
[root@master redis]# cd /etc/redis/redis-cluster/redis6379 [root@master redis6379]# vim redis.conf 69 bind 192.168.159.110/修改bind项,监听自己的ip 88 protected-mode no /关闭保护模式 92 port 7007/修改监听端口为7007,每台都需要不一样 136 daemonize yes/打开以独立进程启动 699 appendonly yes/打开A0F持久化 832cluster-enabled yes/取消注释,开启集群功能 840cluster-config-file nodes-6379.conf/取消注释,打开集群名称文件 846cluster-node-timeout 15000/取消注释,集群超时时间设置

3.3 在master1节点上使用scp上传到其他节点服务器并覆盖其他服务器的配置文件(其他五台)分布式|Redis 主从复制、哨兵、集群的部署
文章图片

3.4 其他节点的配置文件修改
[root@slave1 redis]# vim /etc/redis/redis-cluster/redis6379/redis.conf 69 bind 192.168.159.120/其他的节点修改监听自己的ip 92 port 7002/监听端口设置自定义,不需要一样就可以了

3.5 启动所有节点
[root@master redis6379]# cd /etc/redis/redis-cluster/redis6379/切换到此目录 [root@master redis6379]# redis-server redis.conf/启动redis节点 15854:C 10 Aug 2021 19:32:21.141 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 15854:C 10 Aug 2021 19:32:21.141 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=15854, just started 15854:C 10 Aug 2021 19:32:21.141 # Configuration loaded

3.6 启动集群
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

3.7 进入数据库内查看
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

3.8 进入该范围值服务器内查看结果
分布式|Redis 主从复制、哨兵、集群的部署
文章图片

    推荐阅读