高可用
在上一篇文章中,我们的反向代理+负载均衡实例如下
实例
node1(反向代理+负载均衡):192.168.141.53
node3(web1):192.168.141.12
node4(web2):192.168.141.132
但是,如果node1(反向代理+负载均衡服务器)挂掉了怎么办?是不是会导致我们的网站无法访问,从而造成损失?
这时候就需要引入高可用方案了,例如keepalived、hearbeat、coresync等。
高可用性
高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。它与被认为是不间断操作的容错技术有所不同。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。
高可用架构
高可用架构应具备但不限于以下特征:
1、主从切换
很好理解,当其中一台机器的服务宕机后,对于服务调用者来说,能够迅速的切换到其他可用服务,从服务升级为主服务,这种切换速度应当控制在秒级别(几秒钟)。
当宕机的服务恢复之后,自动变为从服务,主从服务角色切换。主从切换一定是要付出代价的,所以当主服务恢复之后,也就不再替换现有的主服务。
2、负载均衡
当服务的请求量比较高的时候,一台服务不能满足需求,这时候需要多台机器提供同样的服务,将所有请求分发到不同机器上。
高可用架构中应该具有丰富的负载均衡策略和易调节负载的方式。
甚至可以自动化智能调节,例如由于机器性能的原因,响应时间可能不一样,这时候可以向性能差的机器少一点分发量,保证各个机器响应时间的均衡。
3、易横向扩展
当用户量越来越多,已有服务不能承载更多的用户的时候,便需要对服务进行扩展,扩展的方式最好是不触动原有服务,对于服务的调用者是透明的。
实例解析
node1(反向代理+负载均衡):192.168.141.53
node2(反向代理+负载均衡):192.168.141.69
node3(web1):192.168.141.12
node4(web2):192.168.141.132
为了防止node1挂掉导致客户端无法访问我们搭建在node3和node4上面的web网站,所以我们加了一台反向代理+负载均衡服务器:node2。
可是新的问题随之而来,node1和node2的ip地址是不同的,客户端究竟应该访问node1还是node2呢?这就需要引入高可用方案keepalive+虚拟ip(vip)了。
实例解析
node1(反向代理+负载均衡+keepalive主):192.168.141.53
node2(反向代理+负载均衡+keepalive从):192.168.141.69
node3(web1):192.168.141.12
node4(web2):192.168.141.132
vip:192.168.141.100
vip是基于vrrp协议的。vrrp组里有一台虚拟路由器,其具有虚拟ip+mac地址,该ip即vip。
VRRP:Virtual Router Redundancy Protocol,虚拟路由冗余协议。VRRP说白了就是实现地址漂移的,是一种容错协议,在提高可靠性的同时,简化了主机的配置。该协议能够实现将可以承担网关功能的一组路由器加入到备份组中,形成一台虚拟路由器,由VRRP的选举机制决定哪台路由器承担转发任务,局域网内的主机只需将虚拟路由器配置为缺省网关。
同样的道理,在服务器架构中,nginx1、nginx2的两个对外接口做一个vrrp对外提供一个虚拟ip,成为vip。有了vip的存在,让客户访问同一个vip即可,客户请求从vip转发到node1或者node2的真实网卡ip上,实现对node3和node4上面web的访问。nginx1、nginx2两服务器互相监测对方nginx是否正常运行,二者之间有一个监控机制。nginx1、nginx2之间,从服务器对主服务器始终进行心跳检测(组播、广播),主服务器挂了则从服务器顶上,这个机制类似于OSPF协议中的DR/BDR。
在lnamp架构中,最前面是nginx做反向代理加负载均衡和反向代理,后面有apache,再后面就是mysql,然后mysql后面是硬盘。apache服务器与mysql服务器交互,同时与缓存服务器(redies memcache)交互,因为从内存读取数据总比从直接从硬盘读数据快。nginx同时与apache的web1、web2交互,而web1、web2使用共享存储技术使得网站得以同步。
keepalived:
单主模型:包括一主一从、一主多从模型
双主模型:
例如web1的主是node1,从是node2;而对于web2的主是node2,从是node1。双主可以防止资源浪费,不然会有一台或者多台从服务器呆着啥也不干浪费资源。
生产环境还有:三主、五主模型等
本篇到此结束