如何将我的服务开放给用户 | 青训营

135 阅读6分钟

引言

Q:浏览器输入网站域名到网页被加载出来,经历了哪些步骤?

A:域名解析、TCP建连、SSL握手、HTTP请求。

接入架构 Image.png

企业接入进化史

域名系统

主机表 host 到 IP 的映射

host方式面临的问题:

  • 流量和负载:用户规模指数增长,文件大小越来越大,统一分发引起较大的网络流量和CPU负载

  • 名称冲突:无法保证主机名称唯一性,同名主机添加导致服务故障

  • 时效性:分发靠人工,时效性差

改进:使用域名系统替换hosts文件

关于域名空间:

  • 被组织成树形结构
  • 通过划分zone方式进行分层授权管理
  • 全球公共域名空间仅对应一颗树
  • 根据名服务:查询的起点
  • 域名组成格式:[z-zA-Z0-9_-],以点划分label

Image.png

域名购买与配置迁移

步骤:

  • 购买域名,购买二级域名
  • 域名备案:防止在网上从事非法经营活动
  • 修改配置:清空 /etc/hosts ,配置/etc/resolv.conf中nameservers为公共DNS迁移原配置,通过控制台添加解析记录

Q:如何公开外部用户访问?

A:租外网ip,将www.example.com解析到外网ip,ip绑定到一台物理机,发布公网route,用于外部用户访问。

自建DNS服务器

背景:

  • 内部域名的出公网效率低下
  • 外部用户看到内网ip,容易被入侵
  • 云厂商权威DNS容易出现故障,影响用户体验
  • 持续扩大公司品牌技术影响力

DNS查询过程

  1. 主机 - 本地DNS服务器:访问www.163.com,请告诉我他的地址

  2. 本地DNS服务器 - DNS根服务器:本地里没有www.163.com的记录,联系根DNS得到域名给对应的地址

  3. DNS根服务器 - 本地:是.com区域管理,给你.com的服务器地址,.com知道答案

  4. 本地 - .com服务器:www.163.com对应的地址是?

  5. .com服务器 - 本地:负责163.com区域的服务器知道地址,给你他的地址

  6. 本地 - 163.com服务器:www.163.com对应的地址是?

  7. 163.com - 本地:该域名对应的地址是1.1.1.1

  8. 本地 - 主机:www.163.com对应的地址是1.1.1.1

DNS记录类型

  • A/AAA:IP指向记录,用于指向IP,前者为IPv4记录,后者为IPv6记录
  • CNAME:别名记录,配置值为别名或主机名,客户端根据别名继续解析以提取IP地址
  • TXT:文本记录,购买证书时需要
  • MX:邮件交换记录,用户指向邮件交换服务器
  • NS:解析服务器记录,用于指向哪台服务器对于该域名解析
  • SOA:其实授权机构记录,每个zone有且仅有唯一的一条SOA记录,是描述zone属性以及主要权威服务器的记录

Image.png

Image.png

权威DNS

企业需要权威DNS——LocalDNS

例子:bind

Image.png

架构 Image.png

HTTPS协议

背景

出现白页、返回403、弹出广告的原因是使用http,其使用明文传输,解决方法是改用https协议。

对称加密和非对称加密

对称:一份秘钥,秘钥可能被截获

非对称:公钥和私钥

SSL通信过程

Image.png

证书链

机构是否可信、域名是否与实际访问的一致、检查数字签名是否一致、检查证书有效期、检查证书的撤回状态

验签过程:摘要信息用私钥加密得到签名,客户端用公钥解密数字签名得到摘要,并进行对比

接入全站加速

存在问题:

  • 外网用户访问站点存在的问题,会被并发的请求打垮
  • 报文经过过多的网络设备,容易丢包、劫持
  • 自主选择链路长,时延高
  • 流失用户

解决方案:

  • 源站容量问题:增加后端机器扩容;静态内容使用静态加速缓存
  • 网络传输问题:动态加速CDN
  • 全站加速:静态加速 + 动态加速

静态加速CDN

缓存,将静态内容缓存到邻近的CDN静态节点上,不需要访问源站服务器

Image.png

优势:解决服务器第一公里的问题,消除不同运营商之间的瓶颈,减轻各省的出口带宽压力,优化网上热点内容的分布

动态加速DCDN

针对POST等非静态请求不能再用户边缘缓存的夜晚,基于只能选路技术,从众多会员线路中择优选择一条线路进行传输

原理:

RTT:

Image.png

Image.png

全站加速:

Image.png

四层负载均衡

基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡落到后端服务器

主要功能:

  • 解析VIP和rs
  • NAT
  • 防攻击:syn+proxy

Image.png

常见的调度算法:

  • RR轮询:将所有的请求平均分配给每一个真实服务器RS
  • 加权RR轮询:给每个后端服务器一个加权比例,将强求按比例分配
  • 最小连接:把最新的连接请求分配到当前连接数最小的服务器
  • 五元组hash:根据sip、sport、proto、dip、dport对静态分配的服务器做散列取模

缺点:后端某个服务器故障后,所有连接器都重新计算,影响整个环

解决:一致性hash,只影响故障服务器上的连接session,其余服务器上的连接不受影响

常见的实现方式FULLNAT

使用特点

  • 大部分使用dpdk实现
  • 纯用户协议栈,消除协议栈瓶颈
  • 无缓存、零拷贝、大页内存
  • 进针对4层数据包转发,小包转发可达到限速

架构 多了7、8

Image.png

七层负载均衡

背景 

需要7层的服务

  • SSL卸载:业务侧是http服务,用户需要用https访问
  • 请求重定向:浏览器访问toutiao.com自动跳转www.toutiao.com
  • 路由添加匹配策略:完全、前缀、正则
  • Header编辑
  • 跨域支持
  • 协议支持: websocket、 grpc、 quic

NGINX

介绍:

  • 模块化设计,较好的扩展性和可靠性
  • 基于master/worker架构设计
  • 支持热部署;可在线升级
  • 不停机更新配置文件、更换日志文件、更新服务器二进制
  • 较低的内存消耗
  • 事件驱动:异步非阻塞模型

内部架构

Image.png

事件模型

将每一种动作归纳成独立的事件,给每个事件相应的回调函数,队列不为空则取出事件处理相应的回调函数。