当前位置:网站首页 > 技术博客 > 正文

redis集群与哨兵的选择



大家好,又见面了,我是你们的朋友全栈君。

前言

由于项目需要,搭建了一个 Redis 服务器集群,实现了主从配置和容灾部署,使得主机出现故障时,可自动进行容灾切换,下面就详细讲解一下如何利用 Redis 来实现。

文章重点

1、Redis 入门简介 2、Redis 安装部署 3、Redis 集群整体架构 4、Redis 主从配置及数据同步 5、Redis 哨兵模式搭建

一、Redis 入门简介

Redis(Remote Dictionary Server 远程字典服务)是一个开源的高性能key-value数据库,它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,官网:。

为什么用Redis?

一个字,快!传统的关系型数据库如 Mysql 等已经不能适用所有的场景了,比如在高并发,访问流量高峰等情况时,数据库很容易崩了。Redis 运行在内存,能起到一个缓冲作用,由于内存的读写速度远快于硬盘,因此 Redis 在性能上比其他基于硬盘存储的数据库有明显的优势。 同时除了快之外,还可应用于集群的自动容灾切换以及数据的读写分离,减轻高并发的压力。

二、Redis 安装部署

1、下载安装包

官网下载地址:,这里我们下载目前最新稳定版5.0.7,直接点击下载。

或者直接使用命令下载,如下:

2、安装

首先解压安装包,如下

进入解压文件目录使用命令对解压的 redis 文件进行编译,如下

编译完成之后,可以看到解压文件 redis-5.0.7 中会有对应的 src、conf 等文件,如下

编译成功后,进入 src 文件夹,执行 make install 进行 Redis 安装。

安装完成后,显示如下

注:如出现错误,是因为没有安装 gcc 环境,使用命令安装 gcc 环境即可。

3、部署

由于 src 下文件非常多,我们可以将几个常用的命令和 conf 配置文件复制出来进行统一管理,如下: (1)新建 bin 和 etc 文件夹

(2)回到安装目录,将复制到 ect 文件夹下

(3)进入 src 文件夹下,将、、、、、、文件复制到 bin 文件夹

查看复制后的文件,如下

4、启动redis服务

切换到 bin 目录,使用即可启动 redis 服务,但是这种方式没有指明配置文件,redis 将采用默认配置,所以我们需要让 redis 按照我们的配置文件来启动,如下,启动时指定刚才我们复制到 etc 文件夹下的。

启动后查看redis的进程,如下,可以看到6379端口就是我们运行的 redis 服务(配置文件中默认端口为6379)。

使用命令连接客户端,如下

5、关闭redis服务

如果需要关闭redis服务,使用如下命令即可关闭。

三、Redis 集群整体架构

这里我们采用的集群整体架构就是主从结构+哨兵(sentinel),实现容灾的自动切换,如下图所示:

一个主节点(master)可拥有多个从节点(slave),从节点实现对主节点的复制,保证数据同步。而哨兵(sentinel)则对各节点进行监控,主要包括主节点存活检测、主从运行情况检测等,一旦主节点宕机,哨兵可自动进行故障转移 (failover)、主从切换。 接下来就开始搭建这样一个集群,首先是主从结构,然后是哨兵模式,接着往下看。

四、Redis 主从配置及数据同步

在第一步 Redis 安装部署中我们已经启动了 Redis 服务,但是配置文件并没有做修改,因为主从配置主要就是通过修改配置文件来实现,所以 Redis 配置文件的修改统一在这里进行讲解。

这里我创建了三台虚拟机来演示,分别按照上述安装方式安装好 Redis,三台虚拟机如下配置:

现在进入 etc 文件夹,使用命令打开编辑 redis.conf 配置文件,如下

首先看一下redis.conf 配置文件中的各个参数,详解如下

1、主机配置

主机(192.168.231.130)需要改动的配置如下所示,修改完毕后先按 esc ,然后命令保存退出。

2、从机配置

从机的配置和主机相似,相同的地方我就不再详解,不同的地方是需要使用指定主机(master)的IP地址和端口,需要注意的是老版本使用的是 slaveof,目前我使用的5.0.7版本要使用 replicaof ,如下。

注:由于我们搭建的集群需要自动容灾切换,主数据库可能会变成从数据库,所以三台机器上都需要同时设置 requirepass 和 masterauth 配置项。

3、数据同步

上面我们主从节点的配置文件配置好后,重启 redis 服务,进入 bin 目录即可查看配置文件中指定的日志文件。

下面我们需要设置一下防火墙,否则主从机之间无法同步数据,命令如下,这里根据自己设置的端口进行更改。

至此主从结构搭建完毕,不出意外主从机已经可以数据同步,下面我们分别查看三台机器的信息,如下

可以看到当前角色为主机(master),并且连接了另外两台从机(slave)。

可以看到当前角色为从机(slave),并指明了主机地址和端口。

可以看到当前角色为从机(slave),并指明了主机地址和端口。

4、主从验证

接下来我们在主机(master)添加几条数据,看从机(slave)是否可以获取到,如果能获取,说明数据已经同步到了从机,主机添加数据,如下:

两台从机已经获取到数据,证明主从搭建成功并可同步数据,如下所示:

五、Redis 哨兵模式搭建

1、哨兵模式详解

是Redis 的高可用性解决方案,由一个或多个(哨兵)实例组成。它可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,它的主要功能如下:

哨兵原理

使用的算法核心是 Raft 算法,主要用途就是用于分布式系统,系统容错,以及Leader选举,每个都需要定期的执行以下任务:

配置文件详解

哨兵的配置主要就是修改配置文件中的参数,在安装目录即可看到此配置文件,各参数详解如下:

2、哨兵搭建

这里我们部署三个哨兵,每台服务器一个哨兵,配置方式相同,如下

(1)同样为了方便管理,首先将复制到 etc 下

(2)编辑 sentinel.conf

配置文件修改如下,修改完毕后先按 esc ,然后命令保存退出。

3、防火墙设置

命令如下,这里根据自己设置的端口进行更改。

4、启动三个哨兵:

三个哨兵都启动后,可使用如下命令查看哨兵信息

可以看到,哨兵已经监听到当前的主机IP端口和运行状态,并且有2台从机,3个哨兵。

5、容灾切换

现在我们模拟主机宕机,将主机 redis 服务关闭,如下

现在我们去看三台服务器的情况,发现刚才的主机(192.168.231.130 6379)已经变成了从机,并且哨兵(Sentinel)通过选举机制选举了从机(192.168.231.131 6381)作为了新的主机,如下

进入192.168.231.131 6381 可以看到它已经由从机(slave)变为了主机(master),并且成功连接从机。

需要注意的是,主从切换后配置文件已经被自动进行了更改,我们现在看一下新上位的主机 redis 日志,如下

可以看到,当主机挂了的时候,一直连接主机被拒绝,当哨兵选举它为主机后,它成功执行重写的配置文件,并且连接了其他从机。

至此,主从+哨兵的集群架构搭建完毕。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188693.html原文链接:https://javaforall.cn

  • 上一篇: 安卓开机动画下载
  • 下一篇: eof函数用法
  • 版权声明


    相关文章:

  • 安卓开机动画下载2025-05-10 11:30:03
  • mysql怎么连接数据库2025-05-10 11:30:03
  • application/json 请求头的2025-05-10 11:30:03
  • 霍夫曼编码树状图2025-05-10 11:30:03
  • lenet-5 tensorflow2025-05-10 11:30:03
  • eof函数用法2025-05-10 11:30:03
  • linux的for语句2025-05-10 11:30:03
  • python unittest mock2025-05-10 11:30:03
  • async/await python2025-05-10 11:30:03
  • hashcode和equals方法的关系2025-05-10 11:30:03