负载均衡高可用
在一个高可用的应用中,很容易搭建这样的架构,如下图:
用户访问通过负载均衡,再到应用服务器,如果其中某一台宕机,可以负载到另一台,用户不受影响,应用服务器实现了高可用。但有一个问题,负载均衡宕机了怎么办,感觉好像负载均衡是一个单点。之前团队里面总有同学会提出这样的疑问。
当然,现在很多应用都上云了,直接购买云服务商的负载均衡服务就好了,一般也不会自己搭建。但我们了解其基本原理之后,在做一些架构决策时,才会更有底气。
如何实现负载均衡高可用,一般会采用Keepalived+负载均衡(如 NGINX) 来实现高可用,Keepalived类似的工具还有其他,比如heartbeat。
Keepalived是一个基于VRRP协议来实现的服务高可用方案。VRRP协议(虚拟路由冗余协议——Virtual Router Redundancy Protocol,简称VRRP),是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。
大白话来说就是,VRRP协议允许一台机器可以拥有一个或者多个虚拟IP。在高可用的一组机器中,有一个master,多个slave,对外提供一个虚IP,通过虚IP访问master,slave负责监控master,如果master宕机,则选举其中一个slave接管master,虚IP绑定到新的master上(俗称IP漂移),从而实现了高可用。
keepalived实现中,会提供一个脚本,检测服务是否可用,如果服务不可用,则让出虚IP,slave监控虚ip不通,则认为master宕机,开始接管。
关于keepalived相关配置及使用方法,可以自行google或者度娘。
浙公网安备 33010602011771号