企业接入升级打怪之路(下)
一、四层负载均衡
① 问题背景
在运营商处租用的100.1.2.3的公网IP,如何在企业内部使用最合理?
答(现状):①直接找一个物理机,ifconfig将网卡配上这个IP,起server监听即可 ②应用多,起多个server监听不同的端口即可 ③租多个公网IP(数量有限)
② 什么是四层负载均衡?
定义:基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上
三个主要功能:①解耦vip和rs ②NAT ③防攻击:syn proxy
③ 常见的调度算法原理
(1) RR轮询(Round Robin):将所有的请求平均分配给每个真实服务器RS
(2) 加权RR轮询:给每个后端服务器一个权值比例,将请求按照比例分配
(3) 最小连接:把新的连接请求分配到当前连接数最小的服务器上
(4) 五元组hash:根据sip、sport、proto、dip、dport对静态分配的服务器做散列取模
(缺点:当后端某个服务器故障后,所有连接都重新计算,影响整个hash环)
(5) 一致性hash:只影响故障服务器上的连接session,其余服务器上的连接不受影响
④ 常见的实现方式FULLNAT
RS怎么知道真实的CIP?
答:通过TCP options字段传递,然后通过特殊的内核模块反解
⑤ 四层负载均衡的特点
(1) 大部分都是通过dpdk技术实现,技术成熟,大厂都在用
(2) 纯用户态协议栈,kernel bypass,消除协议栈瓶颈
(3) 无缓存,零拷贝,大页内存(减少cache miss)
(4) 仅针对四层数据包转发,小包转发可达到限速,可承受高cps
⑥ 使用四层负载均衡
二、七层负载均衡
① 问题背景
问:四层负载对100.1.2.3只能bind一个80端口,而有多个外部站点需要使用,该如何解决?
(或者问:有一些七层相关的配置需求,该怎么做?)
(1) SSL卸载:业务侧是http服务,用户需要用https访问
(2) 请求重定向:浏览器访问toutiao.com自动跳转www. toutiao.com
(3) 路由添加匹配策略:完全、前缀、正则
(4) Header编辑
(5) 跨域支持
(6) 协议支持:websocket、grpc、quic
② Nginx简介
最灵活的高性能WEB SERVER,应用最广的七层反向代理:
(1) 模块化设计,较好的扩展性和可靠性
(2) 基于master/worker架构设计
(3) 支持热部署、可在线升级
(4) 不停机更新配置文件、更换日志文件、更新服务器二进制
(5) 较低的内存消耗:一万个keep-alive连接模式下的非活动连接仅消耗2.5M的内存
(6) 事件驱动:异步非阻塞模型,支持aio、mmap(内存映射)
③ Nginx和Apache性能对比
④ Nginx反向代理示意图
代理服务器功能:Keepalive、访问日志、url rewrite重写、路径别名、基于ip的用户的访问控制、限速及并发连接数控制等等……
⑤ Nginx内部架构
⑥ 事件驱动模型
网络接入动手实践与课程总结
一、DNS服务器搭建
二、四层负载均衡实验
开源的解决方案:LVS + keepalived
(1) LVS(Linux Virtual Server):Linux虚拟服务器,根据目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求转发,详见www.linuxvirtualserver.org/
(2) Keepalived集群高可用,解决某个节点故障问题
Nginx stream模块:
四层转发配置样例、请求样例和日志输出
三、七层负载均衡实验
四层转发配置样例、请求样例和日志输出
四、SSL自签证书实验
生成自签名证书:
五、如何将本地服务开放外网访问
服务开发前期,如何低成本的让别人访问自己的服务?
答:Ngrok,Expose your localhost to the web
使用条件:使用GitHub账户授权登录,即可使用,详见dashboard.ngrok.com/get-started…
命令:./ngrok http example.com:8082
总结与课程回顾