目录
一、接入链路示例
-
DNS 解析域名:当用户在浏览器中输入域名时,首先会发送 DNS 查询请求到 DNS 服务器。DNS 服务器负责解析域名并返回对应的 IP 地址。
-
Nginx 作为反向代理:一旦 DNS 解析返回了 IP 地址,用户的请求将被发送到该 IP 地址。在这个 IP 地址上,通常会配置 Nginx 作为反向代理服务器。
-
Ingress Controller 配置规则:Nginx 反向代理服务器通过配置文件或动态配置与 Ingress Controller 进行通信。Ingress Controller 监听 Kubernetes API Server 中的 Ingress 资源变化,并根据规则配置 Nginx 反向代理的负载均衡和路由规则。
-
转发请求到 Pod:当外部请求到达 Nginx 反向代理服务器时,根据 Ingress Controller 配置的规则,Nginx 将请求转发到相应的 Pod。Pod 是 Kubernetes 中运行应用程序的最小单元,可以包含一个或多个容器。
二、域名解析过程
1、相关概念
1.1、域的结构
1.2、DNS是什么?
DNS(Domain Name System),DNS 是一个分布式的命名系统,用于将域名(如www.example.com)转换为对应的IP 地址。它充当了互联网上的"电话簿",帮助用户通过易记的域名访问网站,而不需要记住复杂的 IP 地址。
1.3、DNS根域名服务器
根域名服务器(Root DNS Servers)是全球DNS系统的顶层服务器,它们存储了顶级域名服务器的地址。根域名服务器的数量非常有限,目前共有13组根域名服务器,分布在全球不同的地理位置。每个根域名服务器都有自己的标识符,通常用字母A到M表示。
1.4、顶级域名服务器
顶级域名服务器(Top-Level Domain DNS Servers)是负责管理特定顶级域名的域名服务器。例如,.com域名的顶级域名服务器负责管理所有以.com结尾的域名的解析服务。每个顶级域名都有自己的一组域名服务器,用于处理与该顶级域名相关的域名解析请求。
1.5、权威域名服务器
权威域名服务器(Authoritative Name Server)是负责管理特定域名的DNS服务器。每个域名都有一个或多个权威域名服务器,它们存储着该域名的DNS记录,包括该域名对应的IP地址、子域名、邮件服务器等信息。
权威域名服务器通常由域名所有者或托管服务提供商管理和维护。它们负责更新和维护域名的DNS记录,并确保域名解析的准确性和可用性。
需要注意的是,权威域名服务器只负责管理特定域名的解析,而不处理其他域名的解析请求。因此,在域名解析过程中,需要经过多级的域名服务器层级查询,从根域名服务器到顶级域名服务器,最终到达权威域名服务器,以获取所需的域名解析结果。
2、域名解析过程
2.1、检查Hosts文件
当计算机进行域名解析时,首先会检查hosts文件中是否存在与要解析的域名对应的条目。如果存在匹配的条目,计算机将使用hosts文件中指定的IP地址来解析域名;
2.2、检查本地DNS缓存
如果hosts文件中没有匹配的条目,计算机会继续检查本地DNS缓存中是否存在该域名的解析结果。如果存在缓存,计算机会直接使用缓存中的结果,而不会向DNS服务器发送查询请求。
2.3、DNS解析--本地DNS服务器
如果hosts文件和本地DNS缓存都没有匹配的结果,计算机会向DNS服务器发送查询请求,获取域名对应的IP地址,并将结果存储到本地DNS缓存中,以备将来使用。
浏览器会向本地 DNS 服务器发送一个 DNS 查询请求。本地 DNS 服务器首先查看自己的缓存,如果有对应的域名解析结果,则直接返回给浏览器。
本地DNS服务器:
2.4、DNS解析--根域名服务器
如果本地 DNS 服务器没有缓存记录,它会向根域名服务器发送查询请求。根域名服务器告诉本地 DNS 服务器负责该域名的顶级域名服务器的地址;
需要注意的是,根域服务器并不直接提供特定域名的IP地址,它们只提供指向下一级域服务器的信息。这种分层结构使得域名解析过程更加高效和可扩展,并确保全球范围内的域名解析一致性。
2.5、DNS解析--顶级域名服务器
然后本地 DNS 服务器再向顶级域名服务器发送查询请求。这个过程逐步向下迭代,直到找到负责该域名的 DNS 服务器,并获取到域名对应的 IP 地址。
2.6、DNS解析--本地DNS服务器返回IP地址
最后,本地 DNS 服务器将 IP 地址返回给浏览器,浏览器使用该 IP 地址与服务器建立连接。
三、Nginx
Nginx 是一个开源的高性能 Web 服务器和反向代理服务器。它具有轻量级、高并发处理能力和低内存消耗等特点,广泛用于构建高性能的 Web 服务器集群和负载均衡环境。
在 Web 服务器方面,Nginx 接收客户端的 HTTP 请求,并将请求转发给后端的应用服务器,如 Tomcat、Node.js 等。它可以处理静态文件的请求,提供负载均衡、反向代理、缓存、SSL 加密等功能。
当客户端发送一个 HTTP 请求到 Nginx 服务器时,Nginx 首先根据配置文件中的规则进行请求的匹配和处理。根据配置的反向代理规则,Nginx 可以将请求转发给后端的应用服务器。它还可以根据负载均衡算法将请求分发给多个后端服务器,实现请求的分流和高可用性。
Nginx 的高性能和高并发处理能力使得它成为构建高可用、高性能的 Web 服务器架构的重要组件。
1、什么是反向代理?
正向代理是代理客户端的(想一下电脑上安装的VPN,帮你请求外部资源);
反向代理是代理服务器的,反向代理是一种服务器架构模式,它将客户端的请求转发给后端服务器,并将后端服务器的响应返回给客户端,客户端并不直接与后端服务器通信。
2、什么是负载均衡?
Nginx 可以将客户端请求分发给多个后端服务器,以实现负载均衡。通过合理配置负载均衡算法,可以根据服务器的性能和负载情况,将请求均匀地分发到后端服务器上,提高系统的性能和可扩展性。
轮询--加权轮询
3、什么是动静分离?
可以将动态请求转发给后端应用服务器(如 Tomcat、Node.js、Django 等),而将静态资源直接由 Nginx 服务器处理和返回,从而提高系统的整体性能。