部署 | 青训营笔记

88 阅读3分钟
  • 浏览器输入网站域名,发生了如下
    1. DNS解析
    2. 与Web服务器建立TCP连接
    3. SSL/TLS握手(仅在HTTPS下)
      • 客户端向服务器发起请求说明自己支持的加密方式信息等
      • 服务器发送数字证书给客户端
        • 证书持有人信息、公钥、有效期、签名算法、颁发者信息、扩展字段
      • 客户端通过CA(认证机构)验证证书
      • 协商生成对阵秘钥
        • 客户端生成随机数作为会话密钥
        • 会话密钥通过公有密钥加密,而后传送给服务器
        • 同时,服务端生成随机数,并用公钥加密发送给客户端
        • 双方拼接随机数对组成 生成对称秘钥的信息
      • 数据交换
      • 断开连接
    4. 发送HTTP请求
    5. WEb服务器处理并返回HTTP响应
    6. 浏览渲染页面
    7. 断开与Web服务器的连接

域名系统

  • Host管理
    • 手动管理 主机IP映射
    • /etc/hosts
  • 域名系统替换hosts文件
    • 域名购买
    • 域名备案
    • 修改配置
      • 清空/etc/hosts
      • 配置/etc/resolv.conf中nameseservers为公共DNS迁移原配置
  • 开放外部用户访问
    • 租一个外网ip,用于外部用户访问
    • 将域名解析到外网IP
    • 将IP绑定到一台固定的主机上
    • 发布公网route
  • 自建DNS服务器
    • 从公有云托管-->自建DNS
    • 构建权威DNS、LocalDNS

HTTPS协议

  • HTTP明文传输,存在安全问题
  • 加密
    • 对称
      • 加密双方使用相同的密钥进行加密
    • 非对称
      • 分为公钥和私钥,公钥给对方用于加密数据,自己用私钥解密数据
  • 公钥可信吗?会不会被劫持
    • 公钥是可信的,其有CA签名认证,使用数字证书可以确保公钥来自一个可信的第三方
    • 如果出现公钥劫持或伪造,可能出现安全问题。为此HTTPS提供了更高级的安全连接

全站加速

  • 静态加速--缓存
    • CDN
  • 动态加速
    • 针对POST等非静态请求不能在用户边缘缓存
    • 智能路由技术,选择最优路线/直连路由

四层负载均衡

  • 基于IP+端口,利用某算法将报文转发给某个后端服务器,实现复杂均衡的落在后端服务器上
  • 仅能转发TCP/IP协议、UDP协议、通常用来转发端口
  • 解决七层负载均衡模型端口限制问题
  • 大场景下通常会在七层负载模型前面添加四层负载模型
  • 功能
    • 解耦
    • NAT
    • 防攻击
  • 调度算法
    • RR轮询
    • 加权RR轮询
    • 最小连接
    • 五元组hash
    • 一致性hash
  • 大部分通过DPDK实现
  • 纯用户态协议栈,kernel bypass,消除协议瓶颈
  • 无缓存、零拷贝、大页内存
  • 针对四层数据包转发,小包转发可到限速

七层负载均衡

Nginx

  • 最灵活的高性能Web Server,应用最广的七层反向代理
  • 模块化设计,较好的扩展性和可靠性
  • 基于Master/worker架构设计
  • 支持热部署,在线升级
  • 不停机更新配置文件、日志文件、更新服务器二进制
  • 较低的内存消耗
  • 事件驱动
  • 一个进程/线程处理多个连接/请求异步非阻塞、减少OS进程切换
  • 调优
    • 优化内核网络参数
    • 提升cpu使用效率
      • 合适worker进程数=cpu核数
      • cpu亲和,每个worker程绑定一个cpu核,提升缓存命中率
      • 减少cpu消耗
    • 提升网络效率
      • 连接服用
      • 使用cache
      • gzip压缩
      • 开启proxy_buffering

这里主要是有关后端部署以及负载均衡的相关内容

大场景下通常会在七层负载模型前面添加四层负载模型