七层负载均衡的尝试

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

7层负载均衡

问题引入

提问:四层负载对100.1.2.3只能bind一个80端口,而有多个外部站点需要使用,该如何解决? 换个问法:有一些7层相关的配置需求,该怎么做?

SSL卸载:业务侧是http服务,用户需要用https 访问

请求重定向:浏览器访问toutiao.com自动跳转 www.toutiao.com

路由添加匹配策略:完全、前缀、正则

Header编辑

跨域支持

协议支持: websocket、grpc、quic

Nginx简介

最灵活的高性能WEB SERVER,应用最广的7层反向代理。

image-20220712154158624

模块化设计,较好的扩展性和可靠性

基于master/worker架构设计

支持热部署:可在线升级 不停机更新配置文件、更换日志文件、更新服务器二进制

较低的内存消耗:1万个keep-alive连接模式下的非活动连接仅消耗2.5M内存

事件驱动:异步非阻塞模型、支持aio, mmap(内存映射)

Nginx反向代理

image-20220712210857569

代理服务器功能

  • Keepalive
  • 访问日志
  • url rewrite重写
  • 路径别名
  • 基于ip的用户的访问控制
  • 限速及并发连接数控制

Nginx内部构造

image-20220712212643565

事件驱动模型

image-20220712212713779

Nginx简单调优

image-20220712212746014

提升网络效率

  • 连接复用

    • 减少upstream建连
  • 使用Cache

    • 超时时间对业务的影响
  • gzip压缩

    • 会增加cpu开销,需平衡使用
  • 开启proxy_buffering

    • 谨慎设置proxy_buffer 大小,磁盘io读写。

使用七层负载均衡

image.png 网络七层协议(二到七层含义)

所谓四层即运输层,就是基于 IP + 端口的负载均衡;
七层即应用层、就是基于 URL 等应用层信息的负载均衡;
同理,还有基于 MAC 地址的二层负载均衡和基于 IP 地址的三层负载均衡

posted @ 2022-10-19 15:17  Luciferpluto  阅读(0)  评论(0)    收藏  举报  来源