博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件(原创)
阅读量:5894 次
发布时间:2019-06-19

本文共 1918 字,大约阅读时间需要 6 分钟。

对于redis-sentinel我在之前的文章中已经说过,它是一个仲裁者,当主master挂了后,它将在所有slave服务器中进行选举,选举的原则当然可以看它的官方文章,这与我们使用者没有什么关系,而对于sentinel来说,它在进行主从切换时,会触发相关事件,这是和我们开发人员有关系的,如当+switch-master事件被触发时,说明当前Sentinal已经完成了一次主从的切换,并所有服务已经正常运转了。

下面是我这几天作的测试,对于Twemproxy代理和Sentinal哨兵都已经成功使用stackExchange.redis进行了连接,并正常访问了,当然Sentinel只公开了几个redis命令,这个大家要清梦,不明白的可以看我的这篇文章《》。

连接普通的redis服务器

ConnectionMultiplexer conn = ConnectionMultiplexer.Connect("127.0.0.1:6379");
ConfigurationOptions option = new ConfigurationOptions();  option.EndPoints.Add("127.0.0.1", 6379);  ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(option);

连接TW代理服务器

ConfigurationOptions twOption = new ConfigurationOptions();    twOption.EndPoints.Add("127.0.0.1", 22122);    twOption.EndPoints.Add("127.0.0.1", 22123);    twOption.Proxy = Proxy.Twemproxy;//代理的类型    ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(twOption);

连接Sentinal仲裁哨兵服务器

//连接sentinel服务器            ConfigurationOptions sentinelConfig = new ConfigurationOptions();            sentinelConfig.ServiceName = "master1";            sentinelConfig.EndPoints.Add("192.168.2.3", 26379);            sentinelConfig.EndPoints.Add("192.168.2.3", 26380);            sentinelConfig.TieBreaker = "";//这行在sentinel模式必须加上            sentinelConfig.CommandMap = CommandMap.Sentinel;            // Need Version 3.0 for the INFO command?            sentinelConfig.DefaultVersion = new Version(3, 0);            ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(sentinelConfig);

有了上面的代码后,我们可以成功的连接一个sentinel服务器,对这个连接的实际意义在于:当一个主从进行切换后,如果它外层有Twemproxy代理,我们可以在这个时机(+switch-master事件)通知你的Twemproxy代理服务器,并更新它的配置文件里的master服务器的地址,然后从起你的Twemproxy服务,这样你的主从切换才算真正完成。

对于Twemproxy-sentinal-master/slave主从切换实现图

我们可以使用.netcore开发一个跨平台的程序,将它放在linux的tw代理服务器上,使用dotnet run去运行它,然后当收到由sentinel发来的+switch-master事件时,将更新tw配置文件并从起它的服务。

希望大家对技术多一点深度的研究,找不到答案就看看它的源代码,可能会有意外的收获!

欢迎大家关注大叔博客!

转载于:https://www.cnblogs.com/lori/p/5829250.html

你可能感兴趣的文章
Liunx查找命令解析与分析
查看>>
10条命令,1分钟时间检查Linux服务器性能
查看>>
python一个发邮件的函数
查看>>
mailto用法
查看>>
编程如何入门(创世纪新篇)
查看>>
EIGRP产生默认路由的方法
查看>>
php转义和正则问题
查看>>
Spring源码阅读--@Autowired注解自动装配
查看>>
Integrating Perl REST service with jQuery and a da
查看>>
给普通用户像ROOT用户一样权限!
查看>>
【MySQL】【安全】探讨MySQL备份所需最小权限
查看>>
各项异性过滤
查看>>
jfinal3.0+easyui1.4.4后台权限管理系统 [2017.2.11 更新]
查看>>
centos7安装telnet服务
查看>>
运维监控之Nagios实战(四)&Nagios报警
查看>>
Myeclipse2014中,新建部署Maven项目
查看>>
eclipse老是building workspace及自动更新问题
查看>>
【VMCloud云平台】SCAP(一)规划
查看>>
Tomcat启动报错:java.lang.IllegalArgumentException: Can't convert argument:null
查看>>
你好,blog!
查看>>