HTTP服务高可用负载均衡

Posted 钢铁直男兽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP服务高可用负载均衡相关的知识,希望对你有一定的参考价值。



根据时间来看看,HTTP服务的高可用和负载均衡是如何发展的


1. 早期DNS轮询方案


早期互联网应用HTTP服务器直接暴露在互联网上, 非常简陋

  • 例如一个服务器放一个jboss, 一个服务器一个IP, 这些IP都是公网IP

  • 在DNS服务器上配置域名解析,来进行负载均衡


架构图


HTTP服务高可用负载均衡


优点

  1. 服务架构极其简单

  2. 扩容也非常容易

缺点

  1. 无法做到高可用, 任何一台服务器宕机都会影响一部分用户

  2. 服务器扩缩容具有延迟性,DNS配置更新有延迟,还需要传播, 延迟更大

  3. 占用大量的公网IP




2. 高可用反向代理


后来随着技术的发展出现了nginx, keepalived, VIP等技术, HTTP服务才变得真正的高可用起来


架构图


HTTP服务高可用负载均衡

要理解keepalived的作用需要了解一下ARP协议

https://www.zhihu.com/question/34822368/answer/156932231

优点

  1. 真正的高可用任意nginx,任意server 出现问题,可以随时调整流量

  2. 随意扩缩容, 对外部透明


缺点

  1. nginx服务器只会有一个在工作, 另外一个nginx总是在standby状态,浪费了硬件资源

  2. 单个nginx服务器的连接数也是有上限的, 只能承载1w-5w左右的连接数





3. 多层高可用反向代理


为了解决上面nginx的并发不足问题

有一种头疼医头脚疼医脚的办法, 把对外的VIP设备从nginx换成lvs或者F5


架构图

HTTP服务高可用负载均衡



优点

  1. 并发数量可以达到10w级别


缺点

  1. 其实还没有解决自由扩容的问题, 超过10w的并发还是无法处理




4. DNS轮询+多层高可用反向代理


架构图


HTTP服务高可用负载均衡

  • DNS会使用轮询或者随机或者就近访问之类的规则, 将其中某个VIP返回给客户端, 这样理论上就可以支持无限的连接数, 顶级互联网公司就是使用这种架构


  • 但如果VIP要停用的话, 要提前向DNS提交配置


  • lvs+keepalived解决的是VIP的高可用问题


优点

  1. 在接入层上增加了DNS轮训技术, 理论上可以支持无限的横向扩展


缺点

  1. DNS解析VIP的修改有延迟

  2. 成本高, 而且有一半的LVS是待命状态




5. DNS轮询+多层高可用反向代理+LVS双网卡


架构图

HTTP服务高可用负载均衡

  • 每台LVS(或者F5)配置了双网

  • 配置两个VIP, 分别将流量分给两个LVS

  • 当某个LVS宕机, 另外一台LVS即可将所有流量承接过去

  • 这样既做到了接入层的高可用, 又不至于浪费一个LVS空转


优点

  1. 完全的高可用


缺点

  1. 成本大

  2. DNS更新配置延迟较大




以上讨论了HTTP服务的高可用技术发展

从单体架构, 到高可用高并发无限扩容的架构 不是一蹴而就的

架构的选择需要通过网站的一步一步发展才走到现在的样子

今后肯定还会有更复杂更强大的架构设计, 以上只是我在有限的职业生涯中的经验总结





欢迎光临我的公众号

钢铁直男兽



长按添加好友

钢铁直男兽


以上是关于HTTP服务高可用负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Keepalived + Haproxy实现负载均衡高可用

Eureka高可用与负载均衡

nginx高可用负载均衡配置

[转] HaproxyKeepalived双主高可用负载均衡

Nginx + Keepalived(主备模式)实现负载均衡高可用浅析

Haproxy负载均衡部署(高可用,高负载)!