这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记
网络接入
路由发包
- 同网段:端到端直接发包
- 跨网段:配置网关路由,获取网段mac发送
ARP协议
- ARP广播/应答:协议原理
- 免费ARP:主动广播告知MAC地址
- ARP代理:虚拟网络/伪造MAC地址
IP协议
- IPv4:互联网终端节点的唯一标识
- IPv6:不仅仅是IP地址长度的增加
NAT
- 通过端口号,扩展了ip,使得一个公网ip可以指向多个机器
网络传输
DNS
DNS会把用户输入的url解析成ip地址
- 查找hosts文件
- 查看本地DNS缓存
- 请求DNS服务器
可以通过bind等工具构建权威DNS服务器
HTTP
- HTTP比TCP好在哪里:方便
- HTTP1.1的优化:长连接是重点
HTTPS
HTTP协议使用明文传输,容易被攻击
加密算法:
-
非对称加密:使用公钥和密钥(如rsa)
-
对称加密,双方使用同一个密钥
访问ip可能出现的问题
- 服务器容量小,并发量高时容易崩溃
- 链路自选,可能链路太长,时间久
解决方法
- 静态资源:CDN缓存
- 动态资源:寻找最好路径
四层负载均衡
-
四层负载均衡是基于传输层协议包来封装的(如:TCP/IP)
-
应用场景
-
四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性;nginx就无法保证自己的服务高可用,需要依赖LVS或者keepalive。
-
tcp协议的负载均衡,有些请求是TCP协议的(mysql、ssh),或者说这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载均衡。
-
数据库读写分离负载
-
跳板机端口映射
- 四层负载均衡特点
1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;
2、四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)
3、四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同时的使用)
4、四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议;
5、通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。
- LVS优缺点:
优点
高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。
稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。
成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。
配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。
支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用
支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。
应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等
缺点:
工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。
工作流程 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
POSTROUTING链通过选路,将数据包发送给Real Server
Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
Director Server 把RS来到响应包,通过FORWORD 转发给client 在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP
七层负载均衡
七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征, 比如同一个 Web 服务器的负载均衡,除了根据 VIP 加 80 端口辨别是否需要处理的流量, 还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。
网络提速
- http2.0
- 并发访问多个资源
2. http3.0
- 优化多路复用,解决对头阻塞