热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis主从模式和哨兵模式_gw

Redis主从模式和哨兵模式Redis的主从模式全量同步增量复制Redis主从同步策略主从部署哨兵模式哨兵模式原理哨兵模式的作用配置哨兵模式效果验证Redis的主从模式Redis虽


Redis主从模式和哨兵模式

  • Redis的主从模式
    • 全量同步
    • 增量复制
    • Redis主从同步策略
    • 主从部署
  • 哨兵模式
    • 哨兵模式原理
    • 哨兵模式的作用
    • 配置哨兵模式
    • 效果验证


Redis的主从模式


Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。
为了分担读压力,Redis支持主从复制,保证主数据库的数据内容和从数据库的内容完全一致。
Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。



全量同步


Redis全量复制一般发生在Slave初始化阶段,这时slave需要将Master上的所有数据都复制一份。
具体步骤如下:

从服务器连接主服务器,发送SYNC命令;
主服务器接收到SYNC命名后,开始执行BGSAVE 命令生成RDB 文件并使用缓冲区记录此后执行的所有写命令;
主服务器BGSAVE 执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令
从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令



增量复制


Redis增量复制是指Slave 初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。



Redis主从同步策略


主从刚刚连接的时候,进行全量同步;
全同步结束后,进行增量同步。当然,如果有需要,slave在任何时候都可以发起全量同步。
redis策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。



主从部署


环境

主1:20.0.0.10
从1:20.0.0.14
从1:20.0.0.15



先给三台机器安装redis
按以下步骤安装


tar zxvf redis-5.0.4.tar.gzcd redis-5.0.4/make && make install PREFIX=/usr/local/redisln -s /usr/local/redis/bin/* /usr/sbin/cd utils/./install_server.shnetstat -anpt | grep 6379 #查看服务是否成功开启

主:配置文件修改如下


vi /etc/redis/6379.conf
bind 0.0.0.0 #修改监听地址为0.0.0.0(在实验环境使用)
appendonly yes #开启AOF持久化功能
daemonize yes #开启守护进程
logfile /var/log/redis_6379.log #修改日志文件目录
dir /var/lib/redis/6379 #修改工作目录

从:配置文件修改如下


vi /etc/redis/6379.conf
replicaof 20.0.0.11 6379 #同步master节点IP和端口
bind 0.0.0.0 #修改监听地址为0.0.0.0(在实验环境使用)
appendonly yes #开启AOF持久化功能
daemonize yes #开启守护进程
logfile /var/log/redis_6379.log #修改日志文件目录
dir /var/lib/redis/6379 #修改工作目录

在这里插入图片描述
重启服务


[root@gw utils]# /etc/init.d/redis_6379 restart
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...

验证

查看日志


[root@gw utils]# tail -f /var/log/redis_6379.log

在这里插入图片描述



验证

登录到主redis查看信息


[root@gw utils]# redis-cli
127.0.0.1:6379> info replication

在这里插入图片描述



哨兵模式


哨兵模式原理


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



哨兵模式的作用


监控

不断的检查master和slave是否正常运行。
master存活检测、master与slave运行情况检测



通知(提醒)

当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。



自动故障转移

断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址



注:

哨兵也是一台redis服务器,只是不提供数据服务

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



配置哨兵模式

[root@gw ~]# vim redis-5.0.4/sentinel.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



启动哨兵模式
先启master,再启slave


[root@gw ~]# redis-sentinel redis-5.0.4/sentinel.conf &# &符号为后台启动[root@gw ~]# ps aux | grep redis
root 20837 0.1 0.6 159468 11324 ? Ssl 01:27 0:01 /usr/sbin/redis-server 0.0.0.0:6379
root 21009 0.2 0.4 153836 7908 ? Ssl 01:43 0:00 redis-sentinel *:26379 [sentinel]
root 21014 0.0 0.0 112676 984 pts/1 S+ 01:43 0:00 grep --color=auto redis

在这里插入图片描述



查看哨兵信息


[root@gw ~]# redis-cli -h 20.0.0.10 -p 26379 info Sentinel

在这里插入图片描述



效果验证


关闭master上redis-server


[root@gw ~]# ps aux | grep redis
root 20837 0.1 0.6 159468 11324 ? Ssl 01:27 0:01 /usr/sbin/redis-server 0.0.0.0:6379
root 21009 0.2 0.4 153836 7908 ? Ssl 01:43 0:00 redis-sentinel *:26379 [sentinel]
root 21014 0.0 0.0 112676 984 pts/1 S+ 01:43 0:00 grep --color=auto redis#杀掉redis进程
[root@gw ~]# kill 20837

在这里插入图片描述



验证结果

查看日志


[root@gw ~]# tail -f /var/log/sentinel.log

在这里插入图片描述



进入redist查看哨兵信息


[root@gw ~]# redis-cli -p 26379 INFO Sentinel

在这里插入图片描述



推荐阅读
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
潮人-小麦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有