应用的主机名、IP寻址与扩展策略
发布时间: 2025-08-13 01:36:39 阅读量: 5 订阅数: 7 


OpenStack云应用开发实战指南
### 应用的主机名、IP 寻址与扩展策略
#### 1. 时间同步问题及解决方法
时间同步问题可能会导致应用程序出现错误,如报告错误时间。为解决这些问题,可将实例配置为指向多个可靠的 NTP 服务器。若时间同步对应用程序的运行至关重要,还需配置监控以捕捉这些问题,从而采取适当的措施。
#### 2. 主机名和 IP 寻址
应用程序通常很复杂,由多个功能单元组成,各单元之间相互通信。为了让用户能够使用应用程序,需要为应用程序的各个部分分配主机名和 IP 地址。以一个简单的应用程序为例,一个 Web 服务器与后端数据库通信,Web 服务器有一个供用户连接的 IP 地址,数据库有一个供 Web 服务器连接的 IP 地址。
当 Web 服务是多个实例,或者数据库后端是一个由多个服务器组成的集群时,为所有实例分配公共 IP 地址是可行的,但这不是一个好的做法,因为这会让用户选择连接的 IP 地址变得困难。
#### 3. 单点入口
通常,应用程序为用户提供一个单点入口。对于 Web 应用程序,这个入口是用户在浏览器中输入的 URL;对于客户端/服务器类型的应用程序,客户端会配置为连接特定的服务器地址。
当 Web 应用程序是多个实例,或者数据库后端是多个服务器组成的集群时,需要一些技术来处理应用程序的连接和功能单元之间的通信。大多数应用程序的连接入口通常是一个主机名,当使用主机名连接应用程序时,DNS 服务会将主机名转换为 IP 地址。DNS 查找在后台进行,对连接应用程序的用户或服务是透明的。DNS 服务可能返回单个 IP 地址或一个 IP 地址列表,然后选择一个 IP 地址并建立与应用程序的连接。
#### 4. 轮询 DNS
为单个主机名分配多个 IP 地址时,可以使用轮询 DNS 技术。这种技术通过 DNS 为主机名分配多个“A 记录”,每个 A 记录本质上是一个 IP 地址分配。当进行 DNS 查找且该主机名有多个 A 记录时,DNS 服务器会返回所有分配给该主机名的 IP 地址。每次查询 DNS 服务器时,列表会旋转一次,使得列表中的第一个 IP 地址总是不同的,这就是“轮询”。
| 查询次数 | 返回的 IP 地址列表 |
| ---- | ---- |
| 第一次 | 1.1.1.1, 2.2.2.2, 3.3.3.3 |
| 第二次 | 2.2.2.2, 3.3.3.3, 1.1.1.1 |
| 第三次 | 3.3.3.3, 1.1.1.1, 2.2.2.2 |
| 第四次 | 1.1.1.1, 2.2.2.2, 3.3.3.3 |
客户端进行 DNS 查询时会得到一个 IP 地址列表,通常会选择列表中的第一个 IP 地址。然而,轮询 DNS 有一个缺点,如果 IP 地址列表中的某个服务器没有响应,客户端并不知道,仍然会尝试连接。而且,管理员可能难以及时对服务器不可用或性能问题做出反应。如果服务器需要进行长时间维护,可以将不良 IP 地址从列表中移除,但由于 DNS 服务器通常会缓存 IP 地址信息一段时间,移除 IP 地址可能需要一天或更长时间才能在客户端的 DNS 查询中反映出来。为了解决这个问题,可以在维护前将缓存时间缩短到较短的时间,如 1 分钟,维护开始时移除 IP 地址,维护完成后再将其添加回列表,并将缓存时间调整回原来的设置。
#### 5. 全局服务器负载均衡(GSLB)
轮询 DNS 是一种简单且成本较低的方法,可让用户访问为应用程序提供重要功能的多个实例。但它存在一些局限性,例如无法根据性能或实例与客户端的距离来引导客户端选择合适的 IP 地址。
全局服务器负载均衡(GSLB)结合了 DNS 和负载均衡功能。它的设置方式与轮询 DNS 类似,一个主机名可以分配多个 IP 地址。但 GSLB 会根据客户端的 DNS 查询返回最适合的 IP 地址列表。如果 IP 列表中的某个实例不可用,GSLB 会将该 IP 地址从列表中移除,直到实例恢复正常。IP 地址通常按地理位置排序,使第一个 IP 地址离进行查找的客户端最近,也可以根据性能或连接数进行排序。
企业可以将 GSLB 与轮询 DNS 结合使用,这在应用程序托管在多个站点时非常有用。例如,一个应用程序同时在美国和欧洲托管,当北美客户端进行 DNS 查询时,GSLB 可以只提供与美国相关的 IP 地址列表,并且该列表可以像标准轮询 DNS 一样旋转。由于 GSLB 了解服务器的运行时间和性能,当服务器不可用时,仍然可以移除 IP 地址。
```mermaid
graph LR
A[客户端 DNS 查询] --> B{GSLB}
B --> C[返回合适的 IP 列表]
C --> D[客户端选择 IP 连接]
```
#### 6. 固定和浮动 IP 地址
OpenStack 为其实例使用两种类型的 IP 地址:固定 IP 地址和浮动 IP 地址。固定 IP 地址在实例首次启动时由 OpenStack 自动分配,根据环境配置,它可以是公共地址或私有地址。公共地址允许外部连接直接访问实例,私有地址不允许外部连接,但通常允许同一环境中的其他实例之间进行连接。
浮动 IP 地址在实例首次启动时不会自动分配。当 OpenStack 配置为使用浮动 IP 时,会设置一个全局浮动 IP 池,其中包含所有允许用作浮动 IP 的地址。用户可以从全局池中提取 IP 地址到其租户池,并将这些 IP
0
0
相关推荐









