首页 > 数据库DBA > redis > redis高可用,哨兵模式环境搭建
2019
12-17

redis高可用,哨兵模式环境搭建

1. Redis高可用概述

在 Web 服务器中,高可用 是指服务器可以 正常访问 的时间,衡量的标准是在 多长时间 内可以提供正常服务(99.9%、99.99%、99.999% 等等)。在 Redis 层面,高可用 的含义要宽泛一些,除了保证提供 正常服务(如 主从分离、快速容灾技术 等),还需要考虑 数据容量扩展、数据安全 等等。

在 Redis 中,实现 高可用 的技术主要包括 持久化、复制、哨兵 和 集群,下面简单说明它们的作用,以及解决了什么样的问题:

  • 持久化:持久化是 最简单的 高可用方法。它的主要作用是 数据备份,即将数据存储在 硬盘,保证数据不会因进程退出而丢失。
  • 复制:复制是高可用 Redis 的基础,哨兵 和 集群 都是在 复制基础 上实现高可用的。复制主要实现了数据的多机备份以及对于读操作的负载均衡和简单的故障恢复。缺陷是故障恢复无法自动化、写操作无法负载均衡、存储能力受到单机的限制。
  • 哨兵:在复制的基础上,哨兵实现了 自动化 的 故障恢复。缺陷是 写操作 无法 负载均衡,存储能力 受到 单机 的限制。
  • 集群:通过集群,Redis 解决了 写操作 无法 负载均衡 以及 存储能力 受到 单机限制 的问题,实现了较为 完善 的 高可用方案。

2. Redis Sentinel的基本概念

redis sentinel是redis高可用的实现方案,在实际生产环境中,对提高整个系统的高可用性是非常有帮助的,当主节点发生故障时,redis sentinel能自动完成故障发现和故障转移,并通知应用方,从而实现高可用。

当主节点宕机后,sentinel在从节点中选举新的节点成为主节点,解决redis单点问题,实现高可用。

下面进行环境搭建:

一.redis主从复制

安装redis(三台机器都要安装) redis安装请看这里 传送门

三台机器

(172.17.0.2 – master )修改redis配置文件

重启redis

2.配置另外2台从节点

(172.17.0.3 – slaveof)编辑配置文件,修改一行,添加一行

重启服务

(172.17.0.4 – slaveof) 编辑配置文件,修改一行,添加一行

重启服务

切换到主节点master(172.17.0.2) 使用info命令查看redis信息

172.17.0.2

切换到从节点(172.17.0.3 和 172.17.0.4) 使用info命令查看信息

172.17.0.3
172.17.0.4

在主节点上写入数据

然后再从节点获取(检测是否可以获取到)

172.17.0.3 – slaveof
172.17.0.4 – slaveof

到此(redis主从复制配置完成)

二、redis的高可用

1.配置哨兵节点(三台哨兵节点都装在各自机器)

编辑sentinel文件:指定主节点redis的信息

三台哨兵节点的redis都需要修改。( 将修改好的文件传给(172.17.0.3)和(172.13.0.4) )

传输完成后,重启下三台机器redis

重启后查看配置文件你会发现,多了几行

测试

每个节点都执行监控命令

可以看到执行后有两行+slave,显示的是两个+slave的信息

172.17.0.2
172.17.0.3
172.17.0.4

重新打开一个shell,ssh连接node1,宕掉node1上的redis

这时候去看 node1的控制台信息

主节点master已经切换到了172.17.0.3上

打开新的shell窗口登录redis查看 其他节点当前状态

172.17.0.3 – node2
172.17.0.2 – node2
172.17.0.4 – node3

(完)

小错误:

2.你可能在启动的时候会遇到此类错误,意思是: 对一个高负载的环境来说tcp设置128这个值,太小了。 这是我的理解,绝体的还需到官网理解。然后我们可以手动设置,或者设置永久值.所以执行:

就把这个问题解决了

永久解决,打开/etc/sysctl.conf

添加如下行

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。