将服务开放给用户 | 青训营笔记

128 阅读4分钟

这是我参与「第三届青训营-后端场」笔记创作活动的的第8篇笔记。

企业级网络接入核心组件

域名系统

域名空间被组织成树形结构,通过划分zone的方式进行分层授权管理

内网接入方案:

  • 购买域名,域名备案
  • 配置/etc/resolv.confnameservers为公共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