热门标签 | 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 \/ __ \( <_> )
\/\_/ |____/|___| (____ /\____/
\/ \/
任何事情都是要靠努力和用心。

推荐阅读
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • ### 优化后的摘要本文对 HDU ACM 1073 题目进行了详细解析,该题属于基础字符串处理范畴。通过分析题目要求,我们可以发现这是一道较为简单的题目。代码实现中使用了 C++ 语言,并定义了一个常量 `N` 用于字符串长度的限制。主要操作包括字符串的输入、处理和输出,具体步骤涉及字符数组的初始化和字符串的逆序操作。通过对该题目的深入探讨,读者可以更好地理解字符串处理的基本方法和技巧。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • .NET Core 托管服务优化与实践
    在.NET Core应用中,托管服务的形式主要分为进程内托管(InProcess)和进程外托管(OutOfProcess)。这两种托管方式各有优缺点,本文将深入探讨它们的特点,并结合实际案例,介绍如何根据具体需求选择合适的托管模式,以实现性能优化和资源利用的最大化。此外,文章还将分享一些实用的配置技巧和最佳实践,帮助开发者提升应用的稳定性和可维护性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
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社区 版权所有