当前位置:网站首页 > 数据科学与大数据 > 正文

linux 连接redis数据库(linux连接redis集群)



博主介绍:
计算机科班人,全栈工程师,掌握C、C#、Java、Python、Android等主流编程语言,同时也熟练掌握mysql、oracle、sqlserver等主流数据库,能够为大家提供全方位的技术支持和交流。
工作五年,具有丰富的项目经验和开发技能。提供相关的学习资料、程序开发、技术解答、代码讲解、文档报告等专业服务。


前言

由于项目需要,搭建了一个 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)等类型,官网:https://redis.io/。

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供 list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

为什么用Redis?


二、Redis 安装部署

1、下载安装包

官网下载地址:https://redis.io/download,这里我们下载目前最新稳定版5.0.7,直接点击下载。
download.png

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

 

2、安装

首先解压安装包,如下

 

在这里插入图片描述

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

 

在这里插入图片描述

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

在这里插入图片描述

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

 

安装完成后,显示如下

在这里插入图片描述

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

在这里插入图片描述


3、部署
 

(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,三台虚拟机如下配置:

IP地址端口号角色192.168.231.主机(master)192.168.231.从机(slave)192.168.231.从机(slave)

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

在这里插入图片描述

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

 

1、主机配置

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

 
  • bind:0.0.0.0
    Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
  • port:6379
    监听端口默认为6379,想改其他也行。
  • protected-mode:no
    关闭保护模式,可以外部访问。
  • daemonize:yes
    设置为后台启动。
  • logfile:https://blog.csdn.net/xch_yang/article/details/redis.log
    redis 日志文件,生成后在 bin 目录下可找到。
  • requirepass:pwdtest@2019
    设置 redis 连接密码。
  • masterauth:pwdtest@2019
    slave 服务连接 master 的密码。

2、从机配置

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

 
  • replicaof 192.168.231.130 6379
    指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。

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


3、数据同步

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

在这里插入图片描述

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

 

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

  • 192.168.231.130 6379(主)

在这里插入图片描述

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

  • 192.168.231.132 6380(从)

在这里插入图片描述

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

  • 192.168.231.131 6381(从)

在这里插入图片描述

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


4、主从验证

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

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述


五、Redis 哨兵模式搭建

1、哨兵模式详解

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

  • 监控(Monitoring):会不断地检查你的主服务器和从服务器是否运作正常。
  • 通知(Notification):当被监控的某个 Redis 服务器出现问题时, 可以通过API向管理员或者其他应用程序发送通知。
  • 故障迁移:当主服务器不能正常工作时,会自动进行故障迁移,也就是主从切换。
  • 统一的配置管理:连接者询问取得主从的地址。

哨兵原理

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

  • 每个 Sentinel 会自动发现其他 Sentinel 和从服务器,它以每秒钟一次的频率向它所知的主服务器、从服务器以及其他 Sentinel 实例发送一个 PING 命令。
  • 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 选项所指定的值, 那么这个实例会被 Sentinel 标记为主观下线。 有效回复可以是: 、 或者 。
  • 如果一个主服务器被标记为主观下线, 那么正在监视这个主服务器的所有要以每秒一次的频率确认主服务器的确进入了主观下线状态。
  • 如果一个主服务器被标记为主观下线, 并且有足够数量的(至少要达到配置文件指定的数量)在指定的时间范围内同意这一判断, 那么这个主服务器被标记为客观下线。
  • 在一般情况下, 每个会以每 10 秒一次的频率向它已知的所有主服务器和从服务器发送 INFO 命令。 当一个主服务器被标记为客观下线时,向下线主服务器的所有从服务器发送 INFO 命令的频率会从 10 秒一次改为每秒一次。
  • 当没有足够数量的同意主服务器已经下线, 主服务器的客观下线状态就会被移除。 当主服务器重新向的 PING 命令返回有效回复时, 主服务器的主管下线状态就会被移除。

在这里插入图片描述


配置文件详解

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

 

2、哨兵搭建

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

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

 

(2)编辑 sentinel.conf

 

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

 

3、防火墙设置

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

 

4、启动三个哨兵:
 

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

 

info_sentinel.png

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


5、容灾切换

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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


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


结语

为了写这篇文章,熬了好几个夜,觉得有帮助点个赞吧。

原创不易,转载请注明出处。

到此这篇linux 连接redis数据库(linux连接redis集群)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • pymysql查询出来的数据格式(pymysql 查询数据)2024-12-30 13:18:07
  • 数据库课程设计(学生选课管理系统数据库课程设计)2024-12-30 13:18:07
  • cmip6数据处理代码(cmip6数据介绍)2024-12-30 13:18:07
  • 数据库课程号怎么表示(数据库中课程名用什么表示)2024-12-30 13:18:07
  • 3dtile数据(3dtile数据里面有哪些)2024-12-30 13:18:07
  • impdp导入速度一般是多少(impdp导入成功但是没有数据)2024-12-30 13:18:07
  • 中文期刊常用数据库有哪些(中文期刊类数据库)2024-12-30 13:18:07
  • db的数据库包含什么(db的数据库包含什么类型)2024-12-30 13:18:07
  • 大数据需要学哪些内容和方法(大数据需要学哪些内容和方法知识)2024-12-30 13:18:07
  • cmip6模式数据有缺测值嘛(cmip5数据模式介绍)2024-12-30 13:18:07
  • 全屏图片