搭建Redis主从集群和哨兵

这篇具有很好参考价值的文章主要介绍了搭建Redis主从集群和哨兵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:单机的Redis存在许多的问题,如数据丢失问题、高并发问题、故障恢复问题、海量数据的存储能力问题,针对这四个问题,对应解决方式有:数据持久化(参考:http://t.csdn.cn/SSyBi)、搭建主从集群、Redis哨兵和搭建分片集群;

本文介绍搭建Redis主从集群和哨兵,用以解决单机Redis的并发问题和故障恢复问题。操作系统是CentOS 7,远程连接工具是WindTerm。

单机安装

首先,先安装单机的Redis

第一步:下载Redis压缩包

可在官网(https://redis.io/download/#redis-downloads)下载,下载完成后将压缩包复制到云服务器或者Linux虚拟机里;

搭建Redis主从集群和哨兵,redis,数据库,缓存

我这里放在/tmp/essay目录下

搭建Redis主从集群和哨兵,redis,数据库,缓存

第二步:安装Redis所需的依赖

我安装过了,首次安装需要一点时间

yum install -y gcc tcl

搭建Redis主从集群和哨兵,redis,数据库,缓存

第三步:解压

tar -xvf redis-6.2.4.tar.gz

搭建Redis主从集群和哨兵,redis,数据库,缓存

第四步:编译

进入redis目录

cd redis-6.2.4

执行编译命令

make && make install

全程没有爆红,就是编译完成

搭建Redis主从集群和哨兵,redis,数据库,缓存

搭建Redis主从集群和哨兵,redis,数据库,缓存

第五步:修改配置文件

需要修改两个地方,一个是绑定地址(75行),默认是127.0.0.1,本地访问,需要修改为0.0.0.0,表示任意IP访问;

搭建Redis主从集群和哨兵,redis,数据库,缓存

第二个是数据库数量(327行),默认是16,我们设置为1;

搭建Redis主从集群和哨兵,redis,数据库,缓存

可通过下面的命令查看配置文件中对应的配置是否已经更改

grep -rina "关键字" 文件

可以看到地址已经修改了,可是数据库数量没有更改过来
搭建Redis主从集群和哨兵,redis,数据库,缓存

修改完之后再看,已经修改完成

搭建Redis主从集群和哨兵,redis,数据库,缓存

第六步:启动测试

redis-server redis.conf

可以看到,Redis可以正常启动;
搭建Redis主从集群和哨兵,redis,数据库,缓存

如果出现了端口被占用的情况,可使用下面两个命令,查看端口被占用的进程PID,再强制结束该进程;

ps -ef |grep 端口号

kill -9 进程ID

搭建Redis主从集群和哨兵,redis,数据库,缓存

关闭Redis(ctrl+c),开始搭建主从集群

搭建Redis主从集群和哨兵,redis,数据库,缓存

主从集群

结构图

搭建Redis主从集群和哨兵,redis,数据库,缓存

第一步:复制配置文件

将redis.conf配置文件拷贝三份,修改文件中对应的端口号(如8001、8002、8003),模拟三台Redis服务器;

注意,需要在Redis的目录外面操作;

# 创建三个目录,以端口号命名
mkdir 8001 8002 8003

# 复制redis配置文件到三个文件夹中
echo 8001 8002 8003 | xargs -t -n 1 cp redis-6.2.4/redis.conf

搭建Redis主从集群和哨兵,redis,数据库,缓存

第二步:修改对应的端口号

修改对应目录下的配置文件中的端口号,注意路径,我这里的是/tmp/essay

sed -i -e 's/6379/8001/g' -e 's/dir .\//dir \/tmp\/essay\/8001\//g' 8001/redis.conf
sed -i -e 's/6379/8002/g' -e 's/dir .\//dir \/tmp\/essay\/8002\//g' 8002/redis.conf
sed -i -e 's/6379/8003/g' -e 's/dir .\//dir \/tmp\/essay\/8003\//g' 8003/redis.conf

搭建Redis主从集群和哨兵,redis,数据库,缓存

第三步:绑定IP

修改每个目录里的配置文件,使每个Redis绑定一个固定IP,避免多个IP造成的混乱(如果是虚拟机操作);

printf '%s\n' 8001 8002 8003 | xargs -I{} -t sed -i '1a replica-announce-ip IP' {}/redis.conf

我这里改成自己云服务的内网IP,如果是虚拟机操作的话,那么改成自己虚拟机的IP就可以;

搭建Redis主从集群和哨兵,redis,数据库,缓存

第四步:启动

可以创建三个窗口,分别启动这三个Redis

# 第1个
redis-server 8001/redis.conf
# 第2个
redis-server 8002/redis.conf
# 第3个
redis-server 8003/redis.conf

搭建Redis主从集群和哨兵,redis,数据库,缓存

第五步:关联主从关系

此时,三台Redis服务器是相互独立的,没有主从关系。需要进入到对应的客户端里,建立主从关系;

# 指定端口进入对应的redis客户端
redis-cli -p 端口号
# 在子节点中设置master节点
slaveof master节点的IP 端口号
# 在master节点中查看子节点信息
info replication

例如设置8001为master节点,8002、8003均为8001的子节点

搭建Redis主从集群和哨兵,redis,数据库,缓存

在master节点的redis日志中,可以看到另外两个节点发过来的同步请求同步信息;

同样,在另外两个子节点也可以看到对应的日志信息;

搭建Redis主从集群和哨兵,redis,数据库,缓存

如果无法关联主从关系,检查一下三个redis.conf文件中的这行配置是否已经设置为0.0.0.0

搭建Redis主从集群和哨兵,redis,数据库,缓存

第六步:使用

正如前面所说,搭建主从集群,可以解决高并发问题,这是通过读写分离实现的。

  • 子节点没有写能力,只有读能力;

  • master节点有读写能力;

搭建Redis主从集群和哨兵,redis,数据库,缓存

小结

通过搭建主从集群,实现读写分离,可解决高并发问题。

另外,值得一提的是:

(1)主从集群可以设置临时和永久两种模式,上面通过命令行的方式设置的是临时模式,重启redis服务后失效。想要设置永久模式,可将命令写在对应的redis.conf配置文件中。

(2)在redis 5.0以后,新增了replicaof命令,效果与slaveof一样。

Redis哨兵

结构图

搭建Redis主从集群和哨兵,redis,数据库,缓存

第一步:创建文件

在essay目录下,创建三个目录(s1、s2、s3),分别表示三个哨兵,端口号分别是28001、28002、28003;

# 创建三个目录
mkdir s1 s2 s3

进入s1目录,创建sentinel.conf文件,文件内容如下,补充上IP地址

# 创建sentinel.conf文件
touch sentinel.conf
port 28001
sentinel announce-ip IP地址
sentinel monitor mymaster IP地址 8001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/tmp/essay/s1"

搭建Redis主从集群和哨兵,redis,数据库,缓存

第二步:复制文件到其他目录

在essay目录下,将s1中的文件复制一份到另外两个文件夹中

echo s2 s3 | xargs -t -n 1 cp s1/sentinel.conf

搭建Redis主从集群和哨兵,redis,数据库,缓存

第三步:修改配置文件

修改另外两个配置文件中的端口号

sed -i -e 's/28001/28002/g' -e 's/s1/s2/g' s2/sentinel.conf
sed -i -e 's/28001/28003/g' -e 's/s1/s3/g' s3/sentinel.conf

搭建Redis主从集群和哨兵,redis,数据库,缓存

第四步:启动哨兵

分别启动三个哨兵

# 第1个
redis-sentinel s1/sentinel.conf
# 第2个
redis-sentinel s2/sentinel.conf
# 第3个
redis-sentinel s3/sentinel.conf

通过日志信息,可以看到哨兵已经监测到了前面的主从集群

搭建Redis主从集群和哨兵,redis,数据库,缓存

第五步:使用

手动尝试把8001master节点宕机,查看另外两个子节点是否可以异常恢复;

搭建Redis主从集群和哨兵,redis,数据库,缓存

(8002端口Redis:可以发现,8002有关于8001、8003的请求同步日志,说明此时8002成为新的master节点)

搭建Redis主从集群和哨兵,redis,数据库,缓存

(8003端口Redis:可以看到8001宕机后,8003连接数次失败后,转为连接8002,说明此时8002称为新的master节点)
搭建Redis主从集群和哨兵,redis,数据库,缓存

查看哨兵日志,可以看到详细的日志记录,表明8001宕机后,8002称为了新的master节点;

(哨兵日志图片.png)

如果此时8001重新上线,将作为8002的子节点

搭建Redis主从集群和哨兵,redis,数据库,缓存

小结

通过增加哨兵,可以解决单机Redis故障问题文章来源地址https://www.toymoban.com/news/detail-594740.html

到了这里,关于搭建Redis主从集群和哨兵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建Redis主从集群+哨兵+代理predixy

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 搭建了一个 Redis 服务器集群(主从复制+哨兵模式+代理),实现了主从配置和容灾部署,使得主机出现故障时,可自动进行容灾切换,现详细记录下搭建过程

    2024年02月02日
    浏览(61)
  • Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细

    4.1 环境部署 4.2 安装Redis(主从服务器) 4.3 修改Master节点Redis配置文件 (192.168.163.100) 4.4 修改Slave节点Redis配置文件 (192.168.163.110 192.168.163.120) 4.5 验证结果 5.1 哨兵模式的原理 5.2 哨兵模式的作用 5.3哨兵模式的结构 哨兵结构由两部分组成, 哨兵节点 和 数据节点 : 哨兵节点:

    2023年04月14日
    浏览(43)
  • Redis主从复制、哨兵模式、集群模式的搭建与springboot集成

    Redis有三种模式:分别是主从同步/复制、哨兵模式、Cluster 主从复制 :主从复制是高可用Redis的基础,哨兵和群集都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单故障恢复。 缺陷:故障恢复无法自动化,写操作无

    2024年02月02日
    浏览(44)
  • redis集群和分片-Redis Cluster:分布式环境中的数据分片、主从复制和 Sentinel 哨兵

    当涉及到 Redis 中的集群、分片、主从复制和 Sentinel 哨兵时,这些是构建分布式 Redis 环境中非常重要的概念和组件。下面详细介绍这些概念以及它们在分布式环境中的作用。 Redis Cluster 是 Redis 官方提供的分布式解决方案,用于管理和维护多个 Redis 节点的分布式数据存储。R

    2024年02月13日
    浏览(53)
  • 【Redis】3、Redis主从复制、哨兵、集群

    主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能

    2024年02月09日
    浏览(37)
  • Redis 主从复制 哨兵 集群

    主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能

    2024年02月11日
    浏览(48)
  • Redis学习笔记02(主从同步,哨兵,哨兵集群)

    redis具有高可靠性:1.数据尽量减少丢失(AOF和RDB来保障) 2.服务尽量减少中断.第二点通过增加冗余副本来保障。 读写分离:  减少保障数据一致性的开销。修改操作只会在主库上进行。 同步过程  1.psync包括了主库runID和复制进度offset。第一次采用全量复制协议(主库bgsav

    2024年02月02日
    浏览(82)
  • redis主从复制、哨兵与集群

    目录 一、概述 二、redis主从复制 1、概念 2、主从复制的作用 3、主从复制流程 4、搭建Redis 主从复制实验 ①在三台服务器上安装redis (1)关闭防火墙和安全机制 (2)修改内核参数 (3)安装redis (4)创建redis工作目录 (5)准备环境变量 (6)定义systemd服务管理脚本 ②修改

    2024年02月03日
    浏览(45)
  • 3.Redis主从复制、哨兵、集群

    Redis主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave):数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点:且 一个主节点可以有多个从节点(或没有从节点),但一个从节点只

    2024年02月12日
    浏览(59)
  • redis之主从复制、哨兵、集群

    在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 高可用的计算公式是1-(宕机时间)/(宕机时间+运行时间)有点类似与网络传输的参数误码率,我们用9的个数表示可用性: 2个9:99%,一年内宕

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包