高可用Redis服务架构搭建详细解析(3)

作为服务的提供方,我们总是会讲到用户体验问题。在上述方案当中始终有一个让Client端用的不是那么舒服的地方。对于单机版Redis,Client端直接连接Redis Server,我们只需要给一个ip和port,Client就可以使用我们的服务了。而改造成Sentinel模式之后,Client不得不采用一些支持Sentinel模式的外部依赖包,并且还要修改自己的Redis连接配置,这对于“矫情”的用户来讲显然是不能接收的。有没有办法还是像在使用单机版的Redis那样,只给Client一个固定的ip和port就可以提供服务呢?

高可用Redis服务架构搭建详细解析

答案当然是肯定的。这可能就要引入虚拟IP(Virtual IP,VIP),如上图所示。我们可以把虚拟IP指向Redis Server master所在的服务器,在发生Redis主从切换的时候,会触发一个回调脚本,回调脚本中将VIP切换至slave所在的服务器。这样对于Client端来说,他仿佛在使用的依然是一个单机版的高可用Redis服务。

结语

搭建任何一个服务,做到“能用”其实是非常简单的,就像我们运行一个单机版的Redis。不过一旦要做到“高可用”,事情就会变得复杂起来。业务中使用了额外的两台服务器,3个Sentinel进程+1个Slave进程,只是为了保证在那小概率的事故中依然做到服务可用。在实际业务中我们还启用了supervisor做进程监控,一旦进程意外退出,会自动尝试重新启动。

下面关于Redis的文章您也可能喜欢,不妨参考下:

Ubuntu 14.04下Redis安装及简单测试
Redis主从复制基本配置 https://www.linuxidc.com/Linux/2015-03/115610.htm
Redis集群搭建与简单使用  https://www.linuxidc.com/Linux/2017-03/142210.htm
CentOS 7下Redis的安装与配置 https://www.linuxidc.com/Linux/2017-02/140363.htm
Ubuntu 14.04安装Redis与简单配置 https://www.linuxidc.com/Linux/2017-01/139075.htm
Ubuntu 16.04环境中安装PHP7.0 Redis扩展 https://www.linuxidc.com/Linux/2016-09/135631.htm
Redis 单机&集群离线安装部署 https://www.linuxidc.com/Linux/2017-03/141403.htm
CentOS 7.0 安装Redis 3.2.1详细过程和使用常见问题 https://www.linuxidc.com/Linux/2016-09/135071.htm
Ubuntu 16.04环境中安装PHP7.0 Redis扩展 https://www.linuxidc.com/Linux/2016-09/135631.htm
Ubuntu 15.10下Redis集群部署文档 https://www.linuxidc.com/Linux/2016-06/132340.htm
Redis实战 中文PDF https://www.linuxidc.com/Linux/2016-04/129932.htm
Redis热迁移实战总结  https://www.linuxidc.com/Linux/2017-02/141083.htm
Redis3.0配置文件详解  https://www.linuxidc.com/Linux/2017-03/141369.htm

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/95bb85035cc1a7abee0f9d9cceb82dd1.html