sentinel监控redis高可用集群(二)
一、端口转发。
如果在一个主机里面,安装了两个redis实例,可以在项目里面配置IP端口,用iptables转发。
iptables -t nat -A PREROUTING -p tcp --dport 6379 -j REDIRECT --to-ports 7379
当发生切换的时候,触发了脚本,执行语句。端口可以马上转发带正确的redis上面。参数的含义:

脚本配置:

脚本实例:
#!/bin/bash
iptables -t nat -I PREROUTING -p tcp --dport 6379 -j REDIRECT --to-ports $7
这样在项目配置就可以直接使用6379,有什么切换交给iptables转发。IP转发也可以用这种方法实现。不能这样实现的原因是,sentinel和redis都是由不同的容器实现。除非用宿主机安装的办法,不然由sentinel执行的脚本根本不能控制到宿主机的iptables来选择redis。
二、修改HOST文件。
这种方法和第一种少有不同。就不是从网络上面改了。项目里面的配置可以直接用主机名。不过这种方法的缺陷是只能改IP,就是说使用的端口号要一致,每次故障只切换IP,不切换端口。
echo "192.168.20.26 redis" >> /etc/hosts
这种方法不能实现的原因是,sentinel和项目执行容器独立,由sentinel执行的脚本动不了apache的host文件,除非sentinel和apache共享host文件。这非常麻烦。而且,每个sentinel有执行一次,就需要和sentinel一样数量的apache容器。
脚本示例:
#!/bin/bash
sed -i 's/$4/$6/g' /etc/hosts
三、用第三方代理haproxy。
用这种方法的话,就不管sentinel怎么切换,haproxy只需检测到可读写的redis交给项目就行,而且项目里面配置指向haproxy的IP。

上图可知haproxy是通过交互发现master可用,slave都切换为down。haproxy是利用轮询检测。

项目的配置:

四、插曲
这里是sentinel检测redis。如果3个redis,mater挂了,另外一个slave顶上。如果master重启了,却没有加入集群。
问题就在这里,1的状态都知道2是master,2确不知道有1这个slave。那就是1和2没有通讯了。
1、初始状态:

2、初始master:

3、关掉1,

4、2切换为master:

5、master状态:

6、重启1的状态:

1启动之后,马上变为master,但是没有slave,后面切换回slave,他的master是2.。就是说1是master,2、3都是slave,1的状态可以看到2、3的存在。1挂了,2就是master,3还是slave。1重启了就应该是slave,1的状态也说他的master是2,但是2说他只有3这一个slave。
7、查看sentinel的切换日志:

第一行,说明检测到1已经挂了。
第二行,移除挂了这个状态,即是1已经恢复。
第三行,把1转变为slave,master为2.
这个日志说明出问题不在sentinel,因为他已经完成了使命。
8、查看1的日志:

这个日志说明1想去连接,但是认证失败。
9、我们去改redis的配置:

10、检查后一切正常。
sentinel监控redis高可用集群(二)的更多相关文章
- sentinel监控redis高可用集群(一)
		
一.首先配置redis的主从同步集群. 1.主库的配置文件不用修改,从库的配置文件只需增加一行,说明主库的IP端口.如果需要验证的,也要加多一行,认证密码. slaveof 192.168.20.26 ...
 - (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
		
参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...
 - Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】
		
No cross,no crown . 不经历风雨,怎么见彩虹. Redis哨兵模式,用现在流行的话可以说就是一个"哨兵机器人",给"哨兵机器人"进行相应的配置 ...
 - 基于docker实现redis高可用集群
		
基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...
 - Redis 高可用集群
		
Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(c ...
 - Redis系列(二):Redis高可用集群
		
一.集群模式 Redis集群是一个由多个主从节点组成的高可用集群,它具有复制.高可用和分片等特性 二.集群部署 1.环境 3台主机分别是: 192.168.160.146 192.168.160.15 ...
 - Redis高可用集群-哨兵模式(Redis-Sentinel)
		
前言 Redis哨兵模式,用现在流行的话可以说就是一个“哨兵机器人”,给“哨兵机器人”进行相应的配置之后,这个"机器人"可以7*24小时工作,它能能够自动帮助你做一些事情,如监控 ...
 - 基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel)
		
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_110 我们知道,Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3) ...
 - Redis高可用集群方案——哨兵
		
本篇文章版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文系列地址http://www.cnblogs.com/tdws/tag/NoSql/ 本人之前有篇文章,讲到了redis主从复制,读写分 ...
 
随机推荐
- ELK 经典用法—企业自定义日志手机切割和mysql模块
			
本文收录在Linux运维企业架构实战系列 一.收集切割公司自定义的日志 很多公司的日志并不是和服务默认的日志格式一致,因此,就需要我们来进行切割了. 1.需切割的日志示例 2018-02-24 11: ...
 - linux RHCS集群  高可用web服务器
			
RHCS集群,高可用服务器 高可用 红帽集群套件,提供高可用性,高可靠性,负载均衡,快速的从一个节点切换到另一个节点(最多16个节点)负载均衡 通过lvs提供负载均衡,lvs将负载通过负载分配策略,将 ...
 - VxWorks下USB驱动总结2
			
3:USBD驱动详解 这一部分将要描述USBD(USB Host Driver)的典型应用.例如初始化,client注册,动态连接注册,设备配置,数据传输,同时还探讨了USBD内部设计的关键特性.这部 ...
 - HighCharts之2D对数饼图
			
HighCharts之2D对数饼图 1.实例源码 LogarithmicPie.html: <!DOCTYPE html> <html> <head> <me ...
 - freemarker之list
			
freemarker之list 1.设置数据源 /** * * @Title:student * @Description: * @param:@param name * @return: void ...
 - org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir
			
1.错误描述 org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir svn: Co ...
 - Flex和Java通信报错
			
1.错误描述 11-30 18:15:52 ERROR [localhost-startStop-1] org.springframework.web.servlet.FrameworkServlet ...
 - 翻译--Thinking in React
			
无聊翻译篇react入门文章,去年学习react时看了一遍,很不错的一篇文章. https://reactjs.org/docs/thinking-in-react.html 部分为意译,旨在让new ...
 - js小括号的作用
			
js中小括号()的用法详解:对于小括号无论是菜鸟还是高手一定都不会陌生,可以说它几乎是随处可见,虽然熟悉但并非真正的理解,由此可能会产生很多莫名其妙的错误,下面就通过代码实例详细介绍一下小括号的用法. ...
 - java中outputStream与inputStream的相互转换
			
package com.boco.test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; im ...