企业—redis的主从复制及其基于哨兵的redis的主从切换

一.redis简介

1.概念

redis是一个基于内存的高性能key-value数据库,和传统关系型数据库不一样,不一定遵循传统数据库的基本要求。

2.redis的特点

  • Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
  • Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,也可以被当作一 个功能加强版的memcached来用

3.redis的数据结构

  • redis是以key-value store存储,data structure service数据结构服务器
  • 键可以包含:string(字符串),哈希,链表(list),集合(set),有序集合(Zset)。这些数据结合都支持pysh/pop,add/remove及取交集和并集更丰富的操作
  • redis支持各种不同的方式排序,为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新数据写入磁盘后把修改操作写到追加文件。

4.redis的额外功能

  • 提供了键过期功能,可以用来实现缓存

  • 提供了发补订阅功能,可以用来实现消息系统

  • 支持Lua脚本功能,可以利用Lua脚本创造出新的redis命令
    5.redis速度快的原因

  • redis是把所有的数据都放到内存中

  • redis是用c语言实现的,一般来说c语言实现的程序“距离“操作系统最近,执行速度相对更快

  • redis使用了单线程架构,预防了多线程可能产生的竞争问题。

6.分布式

  • redis支持主从的模式。原则:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。
  • 这是一个典型的分布式读写分离模型。我们可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数据

7.高可用

  • redis从2.8版本正式提供了高可用实现redis setinel,它能够保证redis节点的故障发现和故障自动转移。
  • redis从3.0版本正式提出了分布式redis cluster,它是redis真正分布式的实现,提供了高可用,读写及其容量的扩展性。

redis有三种高可用:

a.主从
在这里插入图片描述
b .哨兵

Redis sentinel是一个分布式系统中监控redis主从服务器,并在主服务器下线时自动进行故障转移。其中有3个特性:

  • 监控(Monitoring): Sentinel会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。
  • 自动故障转移(Automatic failover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障转移操作。

在这里插入图片描述
c.集群
在这里插入图片描述

二.redis的主从复制

1.实验环境

主机名(IP) 服务
server1(172.25.254.1) master
server2(172.25.254.2) slave
server3(172.25.254.3) slave

2.redis主从复制的部署

  • server1(master):

  • 安装redis

a.官网下载压缩包并且解压

[root@server1 ~]# tar zxf redis-5.0.3.tar.gz

在这里插入图片描述
b.安装依赖包并且编译安装

[root@server1 ~]# cd redis-5.0.3
[root@server1 redis-5.0.3]# pwd
/root/redis-5.0.3
[root@server1 redis-5.0.3]# yum install gcc -y
[root@server1 redis-5.0.3]# make && make install

在这里插入图片描述
c.在相应目录下纸型安装脚本安装

[root@server1 redis-5.0.3]# cd utils/
[root@server1 utils]# ./install_server.sh 

在这里插入图片描述
在这里插入图片描述
完成之后会出现redis的端口

  • 本次模拟实验需要的配置

a.编辑配置文件,修改bind端口

注:默认改文件的bind端口是本机的回环地址,也就是127.0.0.1,但是这样的话,访问redis只能通过本机的客户端连接,无法进行远程连接,这样可以避免redis服务暴露于危险的网络环境中,防止别人通过远程连接盗取数据,在本次实验中为了实验效果,默认是设置为0.0.0.0及任意网段的主机进行连接,如果注释的话表示接收来自于可用网络接口的连接,这在企业中是不会出现的。
在这里插入图片描述
文件编辑内容如下:
在这里插入图片描述
b.重启服务查看端口
在这里插入图片描述

  • server2,server3(slave):

  • 安装redis(同server1)

a.安装包解压
在这里插入图片描述
在这里插入图片描述
b.安装依赖软件编译安装
在这里插入图片描述
在这里插入图片描述
c.执行安装脚本,指定redis的相应配置(同server1)
在这里插入图片描述
在这里插入图片描述

  • 编辑server2和server3的配置文件

server2:
在这里插入图片描述
文件编辑如下:
在这里插入图片描述
server3的配置文件编辑同server2,这里不再演示
b.重启服务查看端口
在这里插入图片描述
在这里插入图片描述

  • 测试:
    a.在server1(master)上添加key-value数值
    在这里插入图片描述
    2.在server2和server3(都是slave)上查看数据是否同步
    在这里插入图片描述
    在这里插入图片描述

三.基于哨兵的redis的主从切换

  • server1:

a.在redia的解压目录下将关于哨兵的配置文件复制到redis的控制配置文件目录下

在这里插入图片描述
b.编辑配置文件

[root@server1 redis-5.0.3]# cd /etc/redis/
[root@server1 redis]# ls
6379.conf  sentinel.conf
[root@server1 redis]# vim sentinel.conf 
文件编辑内容如下:
17 protected-mode no   //关闭保护模式
84 sentinel monitor mymaster 172.25.254.1 6379 2     
//指定要监控的master,mymaster是定义的master名字,quorum为法定票数2,此处指的是sentinel的数,
只有指定的sentinel同意时才认为sentinel做的决策是有效的,一般大于sentinel数量的半数。可以有多
个master,一组sentinel集群可以监控N个主从复制架构 
113 sentinel down-after-milliseconds mymaster 10000
//至少多长时间 连不上才认为主的离线了。单位为ms, 即连接超时时长
121 sentinel parallel-syncs mymaster 1
// 刚刚设定为新主时,允许同时有多少个从向主发起同步请求。
146 sentinel failover-timeout mymaster 180000
//当master故障时,把新的从提升为master,多长时间提不上就认为故障转移失败。 

c.将哨兵配置文件发到server2和server3上的相应目录下
在这里插入图片描述
c.分别重启server1,2,3上的redis服务
在这里插入图片描述

  • 查看状态

在server1上:
可以查看到俩个slave的状态
在这里插入图片描述
在这里插入图片描述
在server2和server3上也能查到对应的slave的状态
在这里插入图片描述
在这里插入图片描述

  • 测试:
    在server1,2,3中任意一个主机上执行下面命令
[root@server1 redis]# redis-server  /etc/redis/sentinel.conf  --sentinel
或者redis-sentinel  /etc/redis/sentinel.conf  &

在这里插入图片描述
关掉server1(master)的redis
在这里插入图片描述
在监控中回看到master已经到server2上
并且在server2上查看发现server2已经提升为主,且可以看到server2的slave是server3.

猜你喜欢

转载自blog.csdn.net/weixin_44224288/article/details/90051007
今日推荐