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

119 阅读3分钟

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

Host管理

静态管理

/etc/host文件添加主机ip到域名的映射

域名系统管理

购买域名,进行域名备案,通过云产商的控制台添加解析记录

DNS查询

DNS查询过程:客户端向本机域名服务器发起请求(递归查询),本机域名服务器向根域名服务器发送请求(迭代查询),然后向顶级域名服务器发送请求,然后向权威级别域名服务器发送请求。

DNS记录类型

A/AAAA:ip指向记录,用于指向配置的IP,前者A记录是ipv4,后者AAAA记录是ipv6

CNAME:别名记录,配置别的域名或者别的主机名,根据这个别名继续发起请求

TXT:文本记录,购买证书时需要

MX:邮件交换记录,用于指向邮件交换服务器

NS:解析服务器记录,指定哪台服务器对该配置的域名进行解析

企业需要哪种DNS服务器

需要的是权威级别的DNS服务器

开源DNS:bind

HTTPS

非对称加密交换客户端密钥,然后使用对称加密通信

客户端收到服务端发来的证书,会校验证书的正确性和有效性

非对称加密:公钥加密,私钥解密

对称加密:加密解密都使用同一个密钥

在运营商租用的一个ip地址,怎么使用更合理?

现状:所有的服务都部署在一个物理机上

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

功能:解耦vip和rs、NAT、防syn攻击

四层负载均衡转发的算法(调度算法)

  1. RR轮询

  2. 加权RR轮询

  3. 最小连接:新的连接请求分配给当前连接数最小的服务器

  4. 五元组哈希:根据spi、sport、sproto、dip、dport(源ip、源端口、协议、目的ip、目的端口)对静态服务器散列取模

    缺点:一个服务器故障,所有连接重新计算,影响整个哈希环

  5. 一致性哈希:只影响故障服务器上连接的session,其余服务器上的连接的不影响

有一些七层相关的配置需求,该怎么配置?

四层负载均衡对某个ip只能bind一个80端口,而有多个外部站点需要使用,该如何解决?

需要支持:

SSL卸载:业务测试使用HTTP,用于请求使用HTTPS

请求重定向:浏览器访问 xxx.com 自动跳转 www.xxx.com

路由添加匹配策略

Header编辑

跨域支持

协议支持:websocket、grpc、quic

使用nginx

  • 模块化设计,较好的拓展性和可靠性
  • 支持热部署,可在线升级
  • 基于master/worker架构设计
  • 不停机更换配置文件、日志文件
  • 较低的内存消耗:1w个keepalive连接模式下的非活动连接只消耗2.5m的内存
  • 事件驱动模型:异步非阻塞模型、支持aio、mmap(内存映射)

传统的服务器:一个进程/线程处理一个连接/请求,阻塞模型、依赖os实现并发

Nginx:一个进程/线程可以处理多个连接/请求,异步非阻塞模型、较少os进程切换

四层负载均衡开源的解决方法

LVS+keepalived

LVS:linux虚拟机服务器地址,使用目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求转发

keepalived:LVS集群高可用,解决某个节点的故障问题