这是我参与「第三届青训营-后端场」笔记创作活动的的第8篇笔记。
企业级网络接入核心组件
域名系统
域名空间被组织成树形结构,通过划分zone的方式进行分层授权管理
内网接入方案:
- 购买域名,域名备案
- 配置
/etc/resolv.conf中nameservers为公共DNS - 通过控制台添加解析记录 进一步开放给外部用户:
- 租赁外网IP
- 使用云厂商DNS服务将域名解析到外网IP 问题:
- 内网域名解析也要出公网获取
- 云厂商权威DNS容易出故障
自建DNS服务器
DNS记录类型
- A/AAAA: IP指向记录,前者IPv4,后者IPv6
- CNAME:别名记录,客户端根据别名继续解析
- TXT:文本记录,购买证书时需要
- MX:邮件交换记录,指向邮件交换服务器
- NS:解析服务器记录,指定域名解析服务器
- SOA记录:起始授权机构记录,每个zone有且只有唯一的SOA记录,描述zone熟悉以及主要权威服务器的记录
权威DNS系统架构
常见的开源DNS:bind, nsd, knot, coredns bind的架构:
- DNS Query
- DNS Responnse
- DNS Update:DNS主服务器master接受外部的变更指令
- DNS Notify:DNS主服务器master接受变更命令后,会自增自身的serial号,同时将变更的serial号告知从服务器slave
- DNS XFR:DNS从服务器slave以增量的形式向master要求获取本次变更的内容
- DNS AXFR:DNS从服务器slave以全量的形式向master要求获取当前的全量数据
接入HTTPS协议
SSL/TLS:(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议
SSL的通信过程(RSA算法)
- client random
- server random
- premaster secret
- 加密算法协商
- 得到对称密钥 session key
解决公钥可信问题:证书链
- 服务端发送带签名的证书链
- 客户端收到后验证:
- 是否是可信机构颁布
- 域名是否与实际访问一致
- 数字签名是否一致
- 证书有效期
- 证书撤回状态
验签过程:
- 服务端对证书的内容进行摘要计算(指纹)
- 使用中级证书私钥进行加密得到数字签名
- 将数字证书连同数字签名发送给客户端
- 客户端使用上级CA的公钥进行解密得到摘要信息
- 重新计算证书的摘要信息进行比对
接入全站加速
问题:
- 源站容量低,可承载的并发请求数低
- 报文经过的网络设备越多,出问题概率越大
- 自主选路网络链路长,时延高
解决方案:
- 源站容量问题:后端机器扩容;静态加速缓存
- 网络传输问题:动态加速DCDN
- 全站加速:静态加速+动态加速
静态加速CDN
- 针对视频、图片等不变的内容,将其缓存在靠近用户的边缘节点,缓存预热后用户直接从边缘获取,从而加速访问速度
- 缓解了不同运营商之间互联的瓶颈造成的影响
- 减轻了各省的出口带宽压力
- 优化网上热点内容的分布
动态加速DCDN
- 针对API类返回值不同的请求,通过特殊的网络优化方式(路由优化、传输优化)等技术加速其达到源站的速度。
四层负载均衡
基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上 主要功能:
- 解耦VIP和RS
- VIP:虚拟IP,一般作为四层反向代理的入口,client看起来一直在与VIP交互
- RS(Real Server):VIP后实际承受client请求的服务,可能是物理机/虚拟机/容器POD
- NAT
- 防攻击
常见调度算法:
- RR轮询:Round Robin,将所有请求平均分配给每个RS
- 加权RR轮询
- 最小连接:把新的连接请求分配给当前连接数最小的服务器
- 五元组hash:根据sip, sport, proto, dip, dport做散列取模
- 一致性hash:只影响故障服务器上的连接session,其余服务器上的连接不受影响
特点:
- 大部分通过DPDK技术实现
- Data Plane Development Kit,一种从数据面去加速网络报文处理的工具,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率
- 纯用户态协议栈
- 无缓存,零拷贝,大页内存
- 仅对四层数据包转发
七层负载均衡
Nginx:最灵活的高性能Web服务器,应用最广的七层反向代理
- 基于master/slave架构
- 支持热部署
- 不停机更新配置文件、更换日志文件、更新服务器二进制
- 较低内存消耗
- 事件驱动:异步非阻塞模型、支持AIO,mmap