Redis 集群

该文详细介绍了Redis的高可用解决方案,包括RDB和AOF持久化、主从复制及其作用与流程、哨兵模式的原理与作用,以及哨兵模式的部署步骤。此外,还涵盖了Redis集群的搭建过程,包括创建、配置、启动及验证集群的详细操作。
摘要由CSDN通过智能技术生成

目录

        一、Redis概述

        1.1 概述

        1.1.1 RDB持久化 

        1.1.2 AOF持久化

        1.2 redis主从复制

        1.2.1 主从复制作用

        1.2.2 主从复制流程

        二、Redis 主从复制

        2.1 实验配置

         2.2 主从配置验证

         三、Redis 哨兵模式

        3.1 哨兵模式原理

        3.2 哨兵模式作用 

        3.3 哨兵结构组成

        3.4 哨兵模式部署

        四、集群模式

        4.1 概述

        4.2 搭建集群


        一、Redis概述

        1.1 概述

        Redis可以实现单机的数据持久化,但无论是RDB也好或者AOF也好,都解决不了单点宕机问题,即一旦单台 redis服务器本身出现系统故障、硬件故障等问题后,就会直接造成数据的丢失,此外单机的性能也是有极限的,因此需要使用另外的技术来解决单点故障和性能扩展的问题。

        1.1.1 RDB持久化 

        RDB 持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘

        Redis从master主进程先fork出一个子进程,使用写时复制机制,子进程将内存的数据保存为一个临时文件,比如:tmp-.rdb,当数据保存完成之后再将上一次保存的RDB文件替换掉,然后关闭子进程,这样可以保证每一次做RDB快照保存的数据都是完整的。

        因为直接替换RDB文件的时候,可能会出现突然断电等问题,而导致RDB文件还没有保存完整就因为突然关机停止保存,而导致数据丢失的情况.后续可以手动将每次生成的RDB文件进行备份,这样可以最大化保存历史数据。

        1.1.2 AOF持久化

        RDB持久化是将进程数据写入文件,而AOF持久化,则是将Redis执行的每次写、删除命令记录到单独的日志文件中,查询操作不会记录; 当Redis重启时优先执行AOF文件中的命令来恢复数据。 与RDB相比,AOF的实时性更好,因此已成为主流的持久化方案。

        1.2 redis主从复制

        主从复制,是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点(master),后者称为从节点(slave);数据复制是单向的,只能由主节点到从节点。

        默认情况下,每台redis服务器都是主节点;且一个主节点可以有多个从节点(或者没有从节点),但是每一个从节点只能有一个主节点。

        1.2.1 主从复制作用

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余
负载均衡:在主从复制的基础.上,配合读写分离,可以让主节点提供写服务,由从节点提供读服务〈即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

        1.2.2 主从复制流程

若启动一个Slave机器,则它会向Master机器发送一个"sync command"命令,请求同步连接。从发给主服务器
无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行rdb操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。
后台进程完成缓存操作之后,Master机器就会向Slave机器发送数据文件存储,接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若slave出现故障导致宕机,则恢复正常后会自动重新连接。
Master机器收到Slave端机器的连接后,将其完整的数据文件发送给slave端机器,如果Master同时收到多个slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。

        二、Redis 主从复制

        2.1 实验配置

主服务器:192.168.162.121

从服务器1:192.168.162.122

从服务器2:192.168.162.123

##三台服务器

##主服务器配置
[root@localhost ~]#vim /etc/redis/6379.conf 
70 bind 0.0.0.0
#将监听端口改为任意端口
137 daemonize yes
#开启守护进程
172 logfile /var/log/redis_6379.log
#指定日志文件目录
264 dir /var/lib/redis/6379
#指定工作目录
700 appendonly yes
#开启AOF持久化功能

##两台从服务器配置
[root@localhost ~]#vim /etc/redis/6379.conf 
70 bind 0.0.0.0
#将监听端口改为任意端口
137 daemonize yes
#开启守护进程
172 logfile /var/log/redis_6379.log
#指定日志文件目录
264 dir /var/lib/redis/6379
#指定工作目录
288  replicaof 192.168.162.121 6379
#指定主节点的ip 和端口
701 appendonly yes
#开启 AOF持久化

         2.2 主从配置验证

[root@localhost ~]#/etc/init.d/redis_6379 restart
#重启服务

 

         三、Redis 哨兵模式

        3.1 哨兵模式原理

        哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移。

        哨兵(sentinel):是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的Master并将所有Slave连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。

        3.2 哨兵模式作用 

监控:哨兵会不断地检查主节点和从节点是否运作正常。
自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点
通知提醒:哨兵可以将故障转移的结果发送给客户端。

        3.3 哨兵结构组成

       · 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点就是特殊的redis节点,不存储数据

        · 数据节点:主节点和从节点都是数据节点。

        哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上.都需要部署哨兵模式,哨兵模式会监控所有的Redis工作节点是否正常,当Master出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个Master的确出现问题,然后会通知哨兵间,然后从Slaves中选取一个作为新的 Master。

        3.4 哨兵模式部署

##主服务器配置哨兵模式
[root@localhost redis-5.0.7]# vim sentinel.conf
#修改配置文件
##17行取消注释  protected-mode no
#关闭保护模式
##21     port 26379
#端口号 26379
##26     daemonize yes
#开启后台运行
##36     logfile "/var/log/sentinel.log"
#指定日志目录
##65     dir "/var/lib/redis/6379"
#数据文件
##84     sentinel monitor mymaster 192.168.91.100 6379 2
#改变master节点地址
##113     sentinel down-after-milliseconds mymaster 30000
#可以修改时间
##146     sentinel failover-timeout mymaster 180000
#故障切换时间

 [root@localhost ~]#scp sentinel.conf 192.168.162.122:/opt/redis-5.0.7

[root@localhost ~]#scp sentinel.conf 192.168.162.123:/opt/redis-5.0.7

##从后台运行服务
[root@localhost redis-5.0.7]# redis-sentinel sentinel.conf &
[root@localhost redis-5.0.7]# redis-cli -p 26379
127.0.0.1:26379> info sentinel


##如果哨兵模式未启动查看从服务器配置文件,并修改
[root@localhost redis-5.0.7]# vim sentinel.conf 
sentinel monitor mymaster 192.168.162.121 6379 2

        四、集群模式

        4.1 概述

        集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。

        4.2 搭建集群

        创建redis

[root@localhost ~]# cd /etc/redis/
[root@localhost redis]# mkdir -p redis-cluster/redis600{1..6}     创建redis
[root@localhost redis]# cd /opt/redis-5.0.7/
[root@localhost redis-5.0.7]# tree /etc/redis/redis-cluster/         查看
/etc/redis/redis-cluster/
├── redis6001
├── redis6002
├── redis6003
├── redis6004
├── redis6005
└── redis6006
————————————————
版权声明:本文为CSDN博主「lltyyds」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lltyyds/article/details/121884511

         (2)将文件拷贝到创建的6台redis

[root@localhost redis-5.0.7]# for i in {1..6}; do cp redis.conf src/redis-cli src/redis-server /etc/redis/redis-cluster/redis600$i; done

[root@localhost redis-5.0.7]# tree /etc/redis/redis-cluster/

        (3)切换到每一个redis上修改配置文件

[root@localhost redis-5.0.7]# cd /etc/redis/redis-cluster/
[root@localhost redis-cluster]# cd redis6001

[root@localhost redis6001]#vim redis.conf

 

 

 

 (4)拷贝配置文件到其他端口下,并修改端口号 

拷贝配置文件

[root@localhost redis6001]# \cp -f redis.conf ../redis6002
[root@localhost redis6001]# \cp -f redis.conf ../redis6003
[root@localhost redis6001]# \cp -f redis.conf ../redis6004
[root@localhost redis6001]# \cp -f redis.conf ../redis6005
[root@localhost redis6001]# \cp -f redis.conf ../redis6006

 ##修改各配置文件端口号

[root@localhost redis6001]# cd /etc/redis/redis-cluster/
[root@localhost redis-cluster]# cd redis6002(6003/6004/6005/6006)
[root@localhost redis6002]# vim redis.conf

##修改第92和第840行就行

         (5) 启动与查看

##启动

[root@localhost redis6006]# cd ../redis6001
[root@localhost redis6001]# for i in {1..6}
> do
> cd /etc/redis/redis-cluster/redis600$i
> ./redis-server redis.conf 
> done

查看 

[root@localhost redis6006]# ps -elf |grep redis

 启动集群

 [root@localhost redis6006]# redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1

 ##验证各个群集之间可以相互转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值