问题描述
在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.100
和10.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