腾讯云公网负载均衡技术实现详解 (3)

0?wx_fmt=jpeg

物理网络

整体流程上和vpc基本一样,只是在TGW和cvm之间通讯时通过ip隧道的方式进行的,TGW的ld集群中存在内核模块对数据包进行ip隧道封装和解封装(如下图)。

0?wx_fmt=jpeg

七层LB

7层LB目前使用的底层架构是STGW(TGW的升级版),这里简单说一下STGW的强大之处。

多协议适配及卸载(支持SSL3~TLS1.2, SPDY3.1, HTTP2, Websocket,对业务透明,减少业务协议适配压力)

内容路由(根据url,header等字段深度匹配,精确、正则、前缀匹配)

负载均衡策略(加权轮询,ip_hash,最小连接数,一致性hash)

7层针对CLB来讲主要是提供http和https服务,https有三大功能:身份认证---防冒充;数据加密---防窃听;数据一致性---防篡改,防抵赖。目前STGW针对https性能做了很大提升,目前已经具有以下特点。

并行支持协议多

https计算性能强

https防攻击能力强

https访问速度快

统一的证书管理及证书远程加载服务

VPC网络

其实和四层的区别主要是中间多了一层l7-ld,如下图所示为vpc公网LB数据流程图,这一层主要是做nginx反向代理和7层负载功能的。本应该ld和实体网络vm之间是可以通过普通的ip包进行数据交互的,但是vpc子机的话,存在私有网络和自定义ip,ld就没法和vm之间进行直接通讯了,目的ip为vpc子机的话,数据包是没法路由的。为了解决上面的问题,TGW在l7-ld上安装了内核模块,该内核用来模拟TGW封装gre包,然后将gre后的数据包和vpc子机进行交互就没有任何问题了。qcloud为腾讯云业务层,oss模块接收到请求之后将规则下发到l7-nginx的配置文件中,l7-nginx通过反向代理功能和nginx本身负载均衡功能会进行domain+port+url维度的负载转发。

0?wx_fmt=jpeg

l7-nginx

l7-nginx提供的反向代理和负载均衡能力,这个是7层负载均衡的核心功能。上面谈到l7-agent会下发业务侧的规则到l7-nginx上,其实就是下发一个nginx的配置文件到l7-nginx上,如下图所示。可以看到这个配置文件里面域名就是用户在控制台配置的域名(),还有vip、vport信息、子机,权重等信息都存在这个配置文件中。

0?wx_fmt=jpeg

用户访问:2356/data/test

server模块中 server_name用来指定ip或者域名,当用户访问这个域名的时候 server_name将请求匹配给location中/data/test/路径下proxy_pass;这里location会根据不同的路径进行转发给相应的proxy_pass,实现了基于路径转发的能力

proxy_pass接下来就交给相应的upstream模块处理了

upstream模块

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwgfj.html