关于redis集群的主从复制和哨兵机制的介绍和使用

一.主从复制

概述

在现有企业中80%公司大部分使用的是redis单机服务,在实际的场景当中单一节点的redis容易面临风 险。

面临问题:

  1. 机器故障。我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器 并且要保证数据是同步的。

  2. 容量瓶颈。当我们有需求需要扩容 Redis 内存时,从 16G 的内存升到 64G,单机肯定是满足 不了。当然,你可以重新买个 128G 的新机器。

解决办法

要实现分布式数据库的更大的存储容量和承受高并发访问量,我们会将原来集中式数据库的数据分别存 储到其他多个网络节点上。

注意:

Redis 为了解决这个单一节点的问题,也会把数据复制多个副本部署到其他节点上进行复制,实现 Redis的高可用,实现对数据的冗余备份从而保证数据和服务的高可用。

什么是主从复制

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

主从复制的作用

  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服 务的冗余。

  3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是 在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

  4. 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是 Redis高可用的基础。

主从复制的环境搭建

  1. 在redis目录中新建以下文件

  • 新建redis6379.conf

    include redis.conf文件路径    #例如:....../redis.conf
    pidfile /var/run/redis_6379.pid
    port 6379
    dbfilename dump6379.rdb
  • 新建redis6380.conf

include redis.conf文件路径    #例如:....../redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
  • 新建redis6381.conf

include redis.conf文件路径    #例如:....../redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb

2.在redis目录下的src目录中启动三台redis服务器并在后台运行

./redis-server ../redis6379.conf
./redis-server ../redis6380.conf
./redis-server ../redis6381.conf

3.配置从库

  • 进入6380,6381端口的redis服务器

    在Xshell上另外复制两台机器,在第二台机器的src目录中输入

    ./redis-cli -p 6380     #进入6380端口的redis客户端

    在第三台机器的src目录中输入

    ./redis-cli -p 6381     #进入6381端口的redis客户端
  • 分别在两个redis客户端中输入

    127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
    OK
    127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
    OK

    这样就完成了主从复制,而主机master可以用来接收redis客户端所写的数据,然后再将master中所保留的数据复制同步到从机slave上;而从机slave上只能读取master的数据,不能往里面写!

Redis主从复制缺点

当主机 Master 宕机以后,我们需要人工解决切换。

二.哨兵机制

主从切换技术

当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造 成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。

哨兵概述

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例.

哨兵作用

集群监控:负责监控redis master和slave进程是否正常工作

消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员

故障转移:如果master node挂掉了,会自动转移到slave node上

配置中心:如果故障转移发生了,通知client客户端新的master地址

  1. redis目录中配置sentinel文件

    • 新建sentinel-26379.conf文件

      #端口
      port 26379
      #守护进程运行
      daemonize yes
      #日志文件
      logfile "26379.log"
      sentinel monitor mymaster 127.0.0.1 6379 2
    • 新建sentinel-26380.conf文件

      #端口
      port 26380
      #守护进程运行
      daemonize yes
      #日志文件
      logfile "26380.log"
      sentinel monitor mymaster 127.0.0.1 6379 2
    • 新建sentinel-26381.conf文件

      #端口
      port 26381
      #守护进程运行
      daemonize yes
      #日志文件
      logfile "26381.log"
      sentinel monitor mymaster 127.0.0.1 6379 2
  2. 启动哨兵节点并在后台运行

  • 进入src目录

  • ./redis-sentinel ../sentinel-26379.conf
    ./redis-sentinel ../sentinel-26380.conf
    ./redis-sentinel ../sentinel-26381.conf 

3.进入哨兵节点

  • 在Xshell上另外复制两个机器(保证在src目录中)

  • 分别在三个机器上输入

  • ./redis-cli -p 26379
  • ./redis-cli -p 26380
  • ./redis-cli -p 26381

结论

  • 哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完 成的。

  • 哨兵节点本质上是redis节点。

  • 每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。

  • 在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(config rewrite)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值