高可用 可扩展 多层反向代理架构演进
1、DNS轮询技术
2、nginx
3、lvs(操作系统层面反向代理)
4、F5(硬件层面反向代理)
5、vip+keepalived技术-实现保活,高可用
一、使用dns,架构如下
dns将一个域名解析到多个ip上,要求ip都是公网ip
这样做存在众多的问题:1、服务器直接对外暴露
2、需要较多的公网ip
3、不能保证高可用,因为dns不能检测服务器的存活情况,即使有服务器挂了流量依然会打进来
4、增加一台服务器就需要配置一次dns,但是dns生效是需要一段时间的。
二、使用dns+nginx+keepalived
增加一层反向代理,dns解析域名到对应的nginx服务器上,
两台nginx服务器只会有一台服务器在使用,当一台nginx服务器挂了后,keepalived会将服务切到另一台上,保证nginx服务的高可用
nginx可以感知服务的存活情况,若服务器挂了,会将流量切到存活的服务器上,保证服务的高可用
但是nginx的并发量也是有限的,解决办法,增加dns服务组、DNS轮询到多个nginx服务组
三、由于nginx性能有限,所以流量较大的网站会使用lvs代替nginx,nginx下沉到下一层
各种方案可以灵活组合使用,加入代理后增加了可用性和扩展性,但是接入了代理层,响应的时延也对应增加了。
心有多大,天有多高,一起奋斗!!