1.背景很多公司都会有自己的一套高可用服务端架构方案,但是作为测试人员,虽然功能很多系统经过测试,很多同学对服务器的整体架构设计不是很清楚。高可用、可扩展、负载均衡等概念还停留在概念层面,没有实际的理解。因此,本文通过以下步骤快速了解高可用服务端架构方案。2.服务器架构方案2.1单机方案1)浏览器通过DNS-server解析域名为ip2)浏览器通过ip访问web-server缺点:1)不具备高可用,web时整个系统挂掉-server挂了2)扩展性差,当吞吐量达到web-server的上限时,不能扩容1)多部署几台web-server,1台tomcat可以抗1000,部署3台tomcat可以抗30002)在DNS服务器级别,每次将域名解析为不同的IP。优点:1)零成本:在DNS中-给服务器多加几个IP,功能不收费。2)部署简单:只需多部署几台web-server,无需修改原有系统架构。3)负载均衡:变成多机,但是负载基本均衡。缺点:1)非高可用:DNS-server只负责域名解析ip。DNS-server不保证这个ip对应的服务是否可用。假设一个web-server挂了,部分服务会受到影响2)扩展不实时:DNS解析有有效期3)暴露太多外网ip2.3nginx解决方案nginx:一个高性能的web-server和反向代理软件1)站点层和浏览在服务器层之间增加一个反向代理层,使用高性能的nginx作为反向代理2)nginx将http请求分发到后端的多个web-server。优点:1)DNS-server无需移动2)负载均衡:使用nginx保证3)只暴露一个外网ip,nginx->tomcat之间使用内网访问4)实时扩展:nginx是内部可控,随时添加web-server,随时实时扩展5)可以保证站点层可用性:如果有一个tomcat挂了,nginx可以将流量迁移到其他tomcat缺点:1)延迟增加+架构比较复杂:中间加了一个反向代理层2)反向代理层变成单点,非常高可用2.4keepalived解决方案keepalived:一个用来检测服务状态存活性的软件,常用于高可用1)将两台nginx做成一个集群,分别部署keepalived,并设置为同一个虚拟IP,保证nginx的高性能可用2)当一台nginx宕机时,keepalived可以检测到并自动将流量迁移到另一台rnginx,整个过程反过来用户透明优点:1)解决高可用问题缺点:1)资源利用率只有50%2)nginx还是单点访问2.5LVS/F5方案LVS:LinuxVirtualServer,采用集群技术,在linux中实现操作系统层面的高性能高可用负载均衡服务器F5:高性能高可用负载均衡硬件设备1)可以通过lvs扩展多个nginx2)可以通过lvs保证可用性keepalived+VIP方案优点:1)解决了nginx是单点访问的问题。缺点:1)LVS依然是单点访问2.6的终极解决方案。横向扩展是解决性能问题的根本。能够通过增加机器来扩展性能的方案是最好的Scalability1)通过DNS轮询线性扩展ingresslvs层的性能2)通过keepalived保证高可用3)通过lvs扩展多个nginx4)使用nginx做负载均衡
