热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux配置系列之redis哨兵配置

一、浩言很精辟的一段话,”未曾清贫难做人,不经打击永天真;成熟不过是善于隐藏,沧桑不过是无泪有伤。”二、redis的高可用redis的主从配置比较容易,主从配置后,主主要进行写的操

一、浩言

很精辟的一段话,”未曾清贫难做人,不经打击永天真;成熟不过是善于隐藏,沧桑不过是无泪有伤。”

二、redis的高可用

redis的主从配置比较容易,主从配置后,主主要进行写的操作,从主要进行读的操作,那么如果主挂了,是不是就没法进行写了?所以redis中可以进行哨兵的配置,具有高可用性,即是在主挂了之后,哨兵检测到后,会在从中进行投票,投票数多的晋升为主。这个配置可折腾我了,按照找的资料进行了哨兵的配置,可是当我把主服务停掉之后,从还在一致尝试连接主

2.1初次配置问题

启动哨兵日志

《linux配置系列之redis哨兵配置》 Paste_Image.png

停掉主后从的日志

《linux配置系列之redis哨兵配置》 Paste_Image.png

停掉后哨兵中,日志情况

《linux配置系列之redis哨兵配置》 Paste_Image.png

2.2解决如下

就是这个问题我一直尝试找到解决办法,看了其中” sentinel-16379.conf”中的配置差不多,跟网上的一样。但是就是不行。
sentinel-16379.conf配置如下

《linux配置系列之redis哨兵配置》 Paste_Image.png

port 26379
dir "/tmp"
sentinel myid d0d116de4fe76badfeea68e27b0e7c6ac0397f8b
sentinel monitor mymaster 10.10.39.105 16380 1
sentinel down-after-milliseconds mymaster 600
sentinel failover-timeout mymaster 1800
sentinel auth-pass mymaster 123456
maxclients 4064
sentinel config-epoch mymaster 13740
sentinel leader-epoch mymaster 13740
sentinel known-slave mymaster 10.10.39.104 16379
sentinel current-epoch 13740

这是我把这个配置文件的注释和空格都去掉后的结果
实际中我修改了如下几个配置

sentinel monitor mymaster 10.10.39.105 16380 1
sentinel down-after-milliseconds mymaster 600
sentinel failover-timeout mymaster 1800
sentinel auth-pass mymaster 123456

其他的可能都是自动生成的。当然你也可以自己指定日志位置。
auth-pass是因为我的主中做了配置密码了。
官网的配置说明:https://redis.io/topics/sentinel

《linux配置系列之redis哨兵配置》 Paste_Image.png

所以那为什么我的哨兵没有起作用了,最后我找了公司运维一起看,问题的原因就是我的从中的bind的这个属性没有做配置。

bind 10.10.39.105

加上了这个,all done!!!
如果你直接使用

./src/redis-cli -p 13680

报错如下

Could not connect to Redis at 127.0.0.1:16380: Connection refused
Could not connect to Redis at 127.0.0.1:16380: Connection refused

因为bind只配置了10.10.39.105所以连接如下

./src/redis-cli -h 10.10.39.105 -p 16380

2.3测试哨兵

哨兵启动结果

《linux配置系列之redis哨兵配置》 Paste_Image.png
《linux配置系列之redis哨兵配置》 Paste_Image.png

干掉主进程

《linux配置系列之redis哨兵配置》 kill_process_Image.png

哨兵的日志打印状况

《linux配置系列之redis哨兵配置》 sen_log_Image.png

从服务器的日志情况:

《linux配置系列之redis哨兵配置》 slave_log_Image.png

连接39.105设置数据如下

《linux配置系列之redis哨兵配置》 Paste_Image.png

2.4此时在启动39.104再次测试

哨兵监控如下:

《linux配置系列之redis哨兵配置》 sen_info_new_Image.png

39.105的主上显示已经连接上

《linux配置系列之redis哨兵配置》 Paste_Image.png

39.104本身显示连上主

《linux配置系列之redis哨兵配置》 Paste_Image.png

测试从是否可以设置数据

《linux配置系列之redis哨兵配置》 Paste_Image.png

在主上设置数据

《linux配置系列之redis哨兵配置》 Paste_Image.png

在从上get数据

《linux配置系列之redis哨兵配置》 Paste_Image.png

三:问题说明
上面也说了,第一次没有成功的原因是因为bind问题

# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interfaces available on the server.
# It is possible to listen to just one or multiple selected interfaces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我尝试翻译下如下

默认的,如果没有bind的配置指令,redis监听服务上的所有连接,如果你仅仅监听一个或者多个的话,bind的配置,按照如下的一个或者多个ip的方式
警告:如果电脑上的redis直接暴露给网络,绑定所有的了地址是危险的并且将会暴露给在网路上的每一个人。所以我们默认的取消注释,强制的配置了一个IPV4的回环地址。(那就意味着在redis运行时只可以接收来自本电脑的连接)。
所以对于指定本机的ip的问题,我的理解就是,在主挂了后,哨兵需要连接到从,唤醒从并修改从的配置,如果不指定或者指定127.0.0.1是不行的,前一个是太多选择没有唯一,后面一个也说了只能在自己的电脑上连接。

四:浩语

__
__ _ ____ __| |__ _____ ___
\ \/ \/ / | \ | \\__ \ / _ \
\ /| | / Y \/ __ \( <_> )
\/\_/ |____/|___| (____ /\____/
\/ \/
任何事情都是要靠努力和用心。

推荐阅读
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
author-avatar
迷雾飘渺2702932540
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有