OpenStack中的FQDN是否需要有解析器?

47次阅读
没有评论

问题描述

在OpenStack中,我看到一些FQDN(全限定域名)的示例,比如:
host-10-2-67-96.openstacklocal.
host-2620-0-28a4-4140-f816-3eff-fefd-6381.openstacklocal.

我在端口和NOVA实例中都看到这种情况。这是否意味着在OpenStack中存在能够解析这些FQDN的资源?如果没有任何解析这些FQDN的资源,那这些FQDN究竟有什么作用?它们有何用途?

我尝试过在“网络拓扑”→“网络”→“(唯一选项)”→“子网”选项卡→“ipv4”中查找,其中列出了两个不同的DNS服务器(10.0.18.10010.0.18.200),但它们都无法解析这些FQDN。我尝试过使用dig <fqdn> @ip,其中ip是上述的每个地址,并且我尝试过设置我的resolve.conf为:

domain openstacklocalsearch openstacklocal
nameserver 10.0.18.100
nameserver 10.0.18.200

但似乎这两个IP并没有获取FQDN的解析条目。

此外,我可以看到我的主机连接的子网,但似乎我找不到有关关联项目的更多信息。

(openstack) subnet show 2fa15774-4724-4796-9a84-813f7a4079d3
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                | Value                                                                                                                                            |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| allocation_pools     | 10.2.64.11-10.2.95.254                                                                                                                           |
| cidr                 | 10.2.64.0/19                                                                                                                                     |
| created_at           | 2021-02-25T16:39:29Z                                                                                                                             |
| description          |                                                                                                                                                  |
| dns_nameservers      | 10.0.18.100, 10.0.18.200                                                                                                                         |
| dns_publish_fixed_ip | None                                                                                                                                             |
| enable_dhcp          | True                                                                                                                                             |
| gateway_ip           | 10.2.64.1                                                                                                                                        |
| host_routes          |                                                                                                                                                  |
| id                   | 2fa15774-4724-4796-9a84-813f7a4079d3                                                                                                             |
| ip_version           | 4                                                                                                                                                |
| ipv6_address_mode    | None                                                                                                                                             |
| ipv6_ra_mode         | None                                                                                                                                             |
| location             | cloud='', project.domain_id=, project.domain_name=, project.id='0fd8601348b7412da9347a19d49fc4be', project.name=, region_name='RegionOne', zone= |
| name                 | hou-prod-external-ipv4                                                                                                                           |
| network_id           | 990d1b13-88b2-453e-975c-d757b0ed99fb                                                                                                             |
| prefix_length        | None                                                                                                                                             |
| project_id           | 0fd8601348b7412da9347a19d49fc4be                                                                                                                 |
| revision_number      | 0                                                                                                                                                |
| segment_id           | None                                                                                                                                             |
| service_types        |                                                                                                                                                  |
| subnetpool_id        | None                                                                                                                                             |
| tags                 |                                                                                                                                                  |
| updated_at           | 2021-02-25T16:39:29Z                                                                                                                             |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+

但当我尝试获取更多有关该子网的信息时,我得到了以下错误:

(openstack) project show 0fd8601348b7412da9347a19d49fc4be
You are not authorized to find project with the name '0fd8601348b7412da9347a19d49fc4be'.

因此,似乎我的nova实例的默认子网位于一个我找不到更多信息的项目中。而且,该子网的DNS服务器为“10.0.18.100, 10.0.18.200”,似乎这两个服务器都无法解析该子网上机器的主机名。为什么会出现这种情况?

解决方案

在OpenStack中,FQDN的解析与网络配置和DNS服务器的设置有关。以下是解决该问题的几种方法:

请注意以下操作注意版本差异及修改前做好备份。

方案1

通常,根据云的配置方式,OpenStack应该允许您解析内部DNS名称(位于openstacklocal域内)。为此,您需要:
1. 在一个私有内部网络中创建一个虚拟机(VM)。
2. 配置一个私有网络,使其使用内部的dnsmasq代理作为DHCP(而不是任何外部服务器)。

在您的情况下,您的DNS服务器似乎位于与分配给您的服务器IP不同的子网中,这可能导致解析问题。要解决这个问题,确保您的服务器IP和DNS服务器位于同一个子网中。

方案2

使用脚本或工具来管理容器的启动顺序可能会增加复杂性,并且需要确保容器A和容器B之间的依赖关系正确设置。
另一种方法是编写脚本或使用工具来控制容器的运行顺序。你可以使用docker run命令来手动控制容器的启动顺序,或者使用一些第三方工具来管理容器的依赖关系。

以下是一个简单的bash脚本示例,可以在容器A启动后启动容器B:

“`bash

!/bin/bash

启动容器A

docker run -d –name container_a your_image_a

等待容器A完全启动

while ! docker exec container_a echo “Container A is ready”; do
sleep 1
done

启动容器B

docker run -d –name container_b your_image_b

正文完