OpenStack网络指南(14)DNS集成
2016-12-28 17:14
330 查看
此页面作为如何使用网络服务的DNS集成功能的指南。 描述的功能从两个角度涵盖DNS:
网络服务提供的内部DNS功能及其与Compute服务的交互。
将计算服务和网络服务与外部DNSaaS(DNS即服务)集成。
用户可以使用与端口,网络和浮动IP相关联的两个属性来控制网络服务在DNS方面的行为。 下表显示了每个资源可用的属性:
1.编辑/etc/neutron/neutron.conf文件,并将与openstacklocal不同的值(其默认值)分配给[default]部分中的dns_domain参数。 举个例子:
2.在/etc/neutron/plugins/ml2/ml2_conf.ini的[ml2]部分的extension_drivers中添加dns。 以下是一个示例:
重新启动neutron服务器后,用户将能够为其端口分配一个dns_name属性。
启用此功能是启用与外部DNS服务的Networking服务集成的前提条件
以下说明了在其dns_name属性中创建具有my-port的端口。
网络服务内部DNS分配给端口的名称现在可在dns_assignment属性中的响应中显示。
启用此功能时,Compute服务在创建实例时利用它。 在引导期间为实例分配端口时,Compute服务使用实例的hostname属性填充这些端口的dns_name属性,该属性是其显示名称的DNS清理版本。 因此,在引导过程结束时,将通过其实例主机名在与其网络相关联的dnsmasq中知道分配的端口。
以下是实例创建的示例,显示其主机名如何填充分配的端口的dns_name属性:
在上面的例子中注意:
用户提供给实例的名称my_vm由Compute服务进行清理,并作为端口的dns_name变为my-vm。
端口的dns_assignment属性显示其FQDN为my-vm.example.org。 在网络服务内部DNS中,这是将端口的dns_name与neutron.conf中dns_domain参数中配置的值连接的结果,如前所述。
dns_assignment属性还显示网络服务内部DNS中的端口的主机名是my-vm。
而不是使Compute服务为实例创建端口,用户可能已创建它并为其dns_name属性分配了一个值。 在这种情况下,分配给dns_name属性的值必须等于Compute服务将分配给实例的主机名的值,在本例中为my-vm。 否则,实例引导将失败。
1.启用网络服务内部DNS解析中描述的功能。
2.配置外部DNS驱动程序。 网络服务提供基于OpenStack DNS服务的驱动程序参考实现。 预计第三方供应商将在未来提供其他实施。
一旦配置和重新启动neutron-server,用户将具有涵盖三个用例的功能,如以下各节所述。 在下面描述的每个使用情况中:
- 示例假定OpenStack DNS服务作为外部DNS。
- A,AAAA和PTR记录将在DNS服务中创建。
- 在执行任何用例之前,用户必须在其项目下的DNS服务中创建将创建A和AAAA记录的DNS区域。 对于下面的用例的描述,假设区域example.org。是先前创建的。
- PTR记录将在具有管理员权限的项目拥有的区域中创建。
1.为网络的dns_domain属性分配有效的域名。 此名称必须以句点(。)结尾。
2.引导指定外部可访问网络的实例。 或者,在外部可访问网络上创建一个端口,为其dns_name属性指定一个有效值。 如果端口将用于实例引导,则分配给dns_name的值必须等于Compute服务将分配给实例的主机名。 否则,引导将失败。
执行这些步骤后,端口的DNS数据将在外部DNS服务中发布。 这是一个例子:
在此示例中,端口由用户手动创建,然后用于引导实例。 注意端口的数据在DNS服务创建后立即可见。
以下是为此示例创建的PTR记录。 请注意,对于IPv4,ipv4_ptr_zone_prefix_size的值为24.在IPv6的情况下,ipv6_ptr_zone_prefix_size的值为116.有关详细信息,请参阅配置OpenStack Networking以与外部DNS服务集成:
为网络的dns_domain属性分配有效的域名。 此名称必须以句点(。)结尾。
引导实例,或者创建一个端口,为其dns_name属性指定有效的值。 如果端口将用于实例引导,则分配给dns_name的值必须等于Compute服务将分配给实例的主机名。 否则,引导将失败。
创建浮动IP并将其关联到端口。
以下是这些步骤的示例:
在此示例中,注意当浮动IP与端口关联时,数据在DNS服务中发布。
以下是为此示例创建的PTR记录。 请注意,对于IPv4,ipv4_ptr_zone_prefix_size的值为24.
用例3:浮动IP在外部DNS服务中发布
在此用例中,用户在创建浮动IP时将dns_name和dns_domain属性分配给浮动IP。 浮动IP数据在外部DNS服务创建后立即可见。 浮动IP可以与创建时或以后的端口关联。 以下示例显示用户引导实例,然后创建与为该实例分配的端口关联的浮动IP:
请注意,在此用例中:
必须在创建时一起指定浮动IP的dns_name和dns_domain属性。 它们不能单独分配给浮动IP。
为了在外部DNS服务中发布,浮动IP的dns_name和dns_domain优先于其关联端口的dns_name和端口网络的dns_domain(无论是否指定)。 只有浮动IP的dns_name和dns_domain在外部DNS服务中发布。
以下是为此示例创建的PTR记录。 请注意,对于IPv4,ipv4_ptr_zone_prefix_size的值为24.
1.编辑/etc/neutron/neutron.conf的[default]部分,并在参数external_dns_driver中指定要使用的外部DNS服务驱动程序。 有效选项在命名空间neutron.services.external_dns_drivers中定义。 以下示例显示如何设置OpenStack DNS服务的驱动程序:
2.如果OpenStack DNS服务是目标外部DNS,/etc/neutron/neutron.conf的[designated]部分必须定义以下参数:
url:OpenStack DNS服务公共端点URL。
allow_reverse_dns_lookup:一个布尔值,指定是否启用反向查找(PTR)记录的创建。
admin_auth_url:身份服务管理员授权端点url。网络服务将使用此端点作为管理用户进行身份验证,以创建和更新反向查找(PTR)区域。
admin_username:网络服务用于创建和更新反向查找(PTR)区域的admin用户。
admin_password:网络服务用于创建和更新反向查找(PTR)区域的admin用户的密码。
admin_tenant_name:网络服务用来创建和更新反向查找(PTR)区域的管理员用户的项目。
ipv4_ptr_zone_prefix_size:IPv4反向查找(PTR)区域的前缀的大小(以位为单位)。
ipv6_ptr_zone_prefix_size:IPv6反向查找(PTR)区域的前缀的大小(以位为单位)。
insecure:禁用SSL证书验证。默认情况下,验证证书。
ca_cert:有效证书颁发机构(CA)证书的路径。
以下是一个示例:
网络不能具有属性router:external设置为True。
网络类型可以是FLAT,VLAN,GRE,VXLAN或GENEVE。
对于网络类型VLAN,GRE,VXLAN或GENEVE,分段ID必须在分配给租户网络的范围之外。
网络服务提供的内部DNS功能及其与Compute服务的交互。
将计算服务和网络服务与外部DNSaaS(DNS即服务)集成。
用户可以使用与端口,网络和浮动IP相关联的两个属性来控制网络服务在DNS方面的行为。 下表显示了每个资源可用的属性:
资源 | dns_name | dns_domain |
---|---|---|
Ports | yes | no |
Networks | no | yes |
Floating ips | yes | yes |
网络服务内部DNS解析
网络服务使用户能够控制内部DNS分配给端口的名称。 要启用此功能,请执行以下操作:1.编辑/etc/neutron/neutron.conf文件,并将与openstacklocal不同的值(其默认值)分配给[default]部分中的dns_domain参数。 举个例子:
dns_domain = example.org.
2.在/etc/neutron/plugins/ml2/ml2_conf.ini的[ml2]部分的extension_drivers中添加dns。 以下是一个示例:
[ml2] extension_drivers = port_security,dns
重新启动neutron服务器后,用户将能够为其端口分配一个dns_name属性。
启用此功能是启用与外部DNS服务的Networking服务集成的前提条件
以下说明了在其dns_name属性中创建具有my-port的端口。
网络服务内部DNS分配给端口的名称现在可在dns_assignment属性中的响应中显示。
$ neutron port-create my-net --dns_name my-port Created a new port: +-----------------------+-----------------------------------------------------------------------------------+ | Field | Value | +-----------------------+-----------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:vnic_type | normal | | device_id | | | device_owner | | | dns_assignment | {"hostname": "my-port", "ip_address": "10.0.1.3", "fqdn": "my-port.example.org."} | | dns_name | my-port | | fixed_ips | {"subnet_id":"6141b474-56cd-430f-b731-71660bb79b79", "ip_address": "10.0.1.3"} | | id | fb3c10f4-017e-420c-9be1-8f8c557ae21f | | mac_address | fa:16:3e:aa:9b:e1 | | name | | | network_id | bf2802a0-99a0-4e8c-91e4-107d03f158ea | | port_security_enabled | True | | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | | status | DOWN | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +-----------------------+-----------------------------------------------------------------------------------+
启用此功能时,Compute服务在创建实例时利用它。 在引导期间为实例分配端口时,Compute服务使用实例的hostname属性填充这些端口的dns_name属性,该属性是其显示名称的DNS清理版本。 因此,在引导过程结束时,将通过其实例主机名在与其网络相关联的dnsmasq中知道分配的端口。
以下是实例创建的示例,显示其主机名如何填充分配的端口的dns_name属性:
$ nova boot --image cirros --flavor 42 \ --nic net-id=37aaff3a-6047-45ac-bf4f-a825e56fd2b3 my_vm +--------------------------------------+----------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | - | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | adminPass | dB45Zvo8Jpfe | | config_drive | | | created | 2016-02-05T21:35:04Z | | flavor | m1.nano (42) | | hostId | | | id | 66c13cb4-3002-4ab3-8400-7efc2659c363 | | image | cirros-0.3.4-x86_64-uec(b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | | key_name | - | | locked | False | | metadata | {} | | name | my_vm | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | security_groups | default | | status | BUILD | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | | updated | 2016-02-05T21:35:04Z | | user_id | 8bb6e578cba24e7db9d3810633124525 | +--------------------------------------+----------------------------------------------------------------+ $ neutron port-list --device_id 66c13cb4-3002-4ab3-8400-7efc2659c363 +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+ | b3ecc464-1263-44a7-8c38-2d8a52751773 | | fa:16:3e:a8:ce:b8 | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "172.24.5.8"} | | | | | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address":"2001:db8:10::8"} | +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+ $ neutron port-show b3ecc464-1263-44a7-8c38-2d8a52751773 +-----------------------+---------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+---------------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:vnic_type | normal | | device_id | 66c13cb4-3002-4ab3-8400-7efc2659c363 | | device_owner | compute:None | | dns_assignment | {"hostname": "my-vm", "ip_address": "172.24.5.8", "fqdn": "my-vm.example.org."} | | | {"hostname": "my-vm", "ip_address": "2001:db8:10::8", "fqdn": "my-vm.example.org."} | | dns_name | my-vm | | extra_dhcp_opts | | | fixed_ips | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "172.24.5.8"} | | | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::8"} | | id | b3ecc464-1263-44a7-8c38-2d8a52751773 | | mac_address | fa:16:3e:a8:ce:b8 | | name | | | network_id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | | port_security_enabled | True | | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | | status | ACTIVE | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +-----------------------+---------------------------------------------------------------------------------------+
在上面的例子中注意:
用户提供给实例的名称my_vm由Compute服务进行清理,并作为端口的dns_name变为my-vm。
端口的dns_assignment属性显示其FQDN为my-vm.example.org。 在网络服务内部DNS中,这是将端口的dns_name与neutron.conf中dns_domain参数中配置的值连接的结果,如前所述。
dns_assignment属性还显示网络服务内部DNS中的端口的主机名是my-vm。
而不是使Compute服务为实例创建端口,用户可能已创建它并为其dns_name属性分配了一个值。 在这种情况下,分配给dns_name属性的值必须等于Compute服务将分配给实例的主机名的值,在本例中为my-vm。 否则,实例引导将失败。
与外部DNS服务集成
用户还可以将网络和计算服务与外部DNS集成。 为了实现这一点,用户必须:1.启用网络服务内部DNS解析中描述的功能。
2.配置外部DNS驱动程序。 网络服务提供基于OpenStack DNS服务的驱动程序参考实现。 预计第三方供应商将在未来提供其他实施。
一旦配置和重新启动neutron-server,用户将具有涵盖三个用例的功能,如以下各节所述。 在下面描述的每个使用情况中:
- 示例假定OpenStack DNS服务作为外部DNS。
- A,AAAA和PTR记录将在DNS服务中创建。
- 在执行任何用例之前,用户必须在其项目下的DNS服务中创建将创建A和AAAA记录的DNS区域。 对于下面的用例的描述,假设区域example.org。是先前创建的。
- PTR记录将在具有管理员权限的项目拥有的区域中创建。
用例1:端口直接在外部DNS服务中发布
在这种情况下,用户正在外部可访问的网络上创建端口或引导实例。 在外部DNS服务中发布端口的步骤如下:1.为网络的dns_domain属性分配有效的域名。 此名称必须以句点(。)结尾。
2.引导指定外部可访问网络的实例。 或者,在外部可访问网络上创建一个端口,为其dns_name属性指定一个有效值。 如果端口将用于实例引导,则分配给dns_name的值必须等于Compute服务将分配给实例的主机名。 否则,引导将失败。
执行这些步骤后,端口的DNS数据将在外部DNS服务中发布。 这是一个例子:
$ neutron net-list +--------------------------------------+----------+---------------------- 15e50 ------------------------------------+ | id | name | subnets | +--------------------------------------+----------+----------------------------------------------------------+ | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | public | a67cfdf7-9d5d-406f-8a19-3f38e4fc3e74 | | | | cbd8c6dc-ca81-457e-9c5d-f8ece7ef67f8 | | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | external | 277eca5d-9869-474b-960e-6da5951d09f7 172.24.5.0/24 | | | | eab47748-3f0a-4775-a09f-b0c24bb64bc4 2001:db8:10::/64 | | bf2802a0-99a0-4e8c-91e4-107d03f158ea | my-net | 6141b474-56cd-430f-b731-71660bb79b79 10.0.1.0/24 | | 38c5e950-b450-4c30-83d4-ee181c28aad3 | private | 43414c53-62ae-49bc-aa6c-c9dd7705818a fda4:653e:71b0::/64 | | | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff 10.0.0.0/24 | +--------------------------------------+----------+----------------------------------------------------------+ $ neutron net-update 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_domain example.org. Updated network: 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 $ neutron net-show 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | availability_zone_hints | | | availability_zones | nova | | dns_domain | example.org. | | id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | | mtu | 1450 | | name | external | | port_security_enabled | True | | provider:network_type | vlan | | provider:physical_network | | | provider:segmentation_id | 2016 | | router:external | False | | shared | True | | status | ACTIVE | | subnets | eab47748-3f0a-4775-a09f-b0c24bb64bc4 | | | 277eca5d-9869-474b-960e-6da5951d09f7 | | tenant_id | 04fc2f83966245dba907efb783f8eab9 | +---------------------------+--------------------------------------+ $ designate record-list example.org. +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1454729414 3600 600 86400 3600 | | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ $ neutron port-create 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_name my-vm Created a new port: +-----------------------+---------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+---------------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:vnic_type | normal | | device_id | | | device_owner | | | dns_assignment | {"hostname": "my-vm", "ip_address": "172.24.5.9", "fqdn": "my-vm.example.org."} | | | {"hostname": "my-vm", "ip_address": "2001:db8:10::9", "fqdn": "my-vm.example.org."} | | dns_name | my-vm | | fixed_ips | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "172.24.5.9"} | | | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::9"} | | id | 04be331b-dc5e-410a-9103-9c8983aeb186 | | mac_address | fa:16:3e:0f:4b:e4 | | name | | | network_id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | | port_security_enabled | True | | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | | status | DOWN | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +-----------------------+---------------------------------------------------------------------------------------+ $ designate record-list example.org. +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455563035 3600 600 86400 3600 | | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | | 3593591b-181f-4beb-9ab7-67fad7413b37 | A | my-vm.example.org. | 172.24.5.9 | | 5649c68f-7a88-48f5-9f87-ccb1f6ae67ca | AAAA | my-vm.example.org. | 2001:db8:10::9 | +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ $ nova boot --image cirros --flavor 42 \ --nic port-id=04be331b-dc5e-410a-9103-9c8983aeb186 my_vm +--------------------------------------+----------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | - | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | adminPass | TDc9EpBT3B9W | | config_drive | | | created | 2016-02-15T19:10:43Z | | flavor | m1.nano (42) | | hostId | | | id | 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41 | | image | cirros-0.3.4-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | | key_name | - | | locked | False | | metadata | {} | | name | my_vm | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | security_groups | default | | status | BUILD | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | | updated | 2016-02-15T19:10:43Z | | user_id | 8bb6e578cba24e7db9d3810633124525 | +--------------------------------------+----------------------------------------------------------------+ $ nova list +--------------------------------------+-------+--------+------------+-------------+-------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+-------------------------------------+ | 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41 | my_vm | ACTIVE | - | Running | external=172.24.5.9, 2001:db8:10::9 | +--------------------------------------+-------+--------+------------+-------------+-------------------------------------+
在此示例中,端口由用户手动创建,然后用于引导实例。 注意端口的数据在DNS服务创建后立即可见。
以下是为此示例创建的PTR记录。 请注意,对于IPv4,ipv4_ptr_zone_prefix_size的值为24.在IPv6的情况下,ipv6_ptr_zone_prefix_size的值为116.有关详细信息,请参阅配置OpenStack Networking以与外部DNS服务集成:
$ designate record-list 5.24.172.in-addr.arpa. +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+ | ab7ada72-7e64-4bed-913e-04718a80fafc | NS | 5.24.172.in-addr.arpa. | ns1.devstack.org. | | 28346a94-790c-4ae1-9f7b-069d98d9efbd | SOA | 5.24.172.in-addr.arpa. | ns1.devstack.org. admin.example.org. 1455563035 3600 600 86400 3600 | | cfcaf537-844a-4c1b-9b5f-464ff07dca33 | PTR | 9.5.24.172.in-addr.arpa. | my-vm.example.org. | +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+ $ designate record-list 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. +--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+ | d8923354-13eb-4bd9-914a-0a2ae5f95989 | SOA | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | ns1.devstack.org. admin.example.org. 1455563036 3600 600 86400 3600 | | 72e60acd-098d-41ea-9771-5b6546c9c06f | NS | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | ns1.devstack.org. | | 877e0215-2ddf-4d01-a7da-47f1092dfd56 | PTR | 9.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | my-vm.example.org. | +--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+
用例2:使用关联的端口DNS属性发布浮动IP
在此用例中,浮动IP的地址在外部DNS服务中与其关联端口的dns_name和端口网络的dns_domain一起发布。 在此用例中执行的步骤如下:为网络的dns_domain属性分配有效的域名。 此名称必须以句点(。)结尾。
引导实例,或者创建一个端口,为其dns_name属性指定有效的值。 如果端口将用于实例引导,则分配给dns_name的值必须等于Compute服务将分配给实例的主机名。 否则,引导将失败。
创建浮动IP并将其关联到端口。
以下是这些步骤的示例:
$ neutron net-update 38c5e950-b450-4c30-83d4-ee181c28aad3 --dns_domain example.org. Updated network: 38c5e950-b450-4c30-83d4-ee181c28aad3 $ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3 +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | True | | availability_zone_hints | | | availability_zones | nova | | dns_domain | example.org. | | id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | | mtu | 1450 | | name | private | | port_security_enabled | True | | router:external | False | | shared | False | | status | ACTIVE | | subnets | 43414c53-62ae-49bc-aa6c-c9dd7705818a | | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +-------------------------+--------------------------------------+ $ nova boot --image cirros --flavor 42 \ --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm +--------------------------------------+----------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | - | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | adminPass | oTLQLR3Kezmt | | config_drive | | | created | 2016-02-15T19:27:34Z | | flavor | m1.nano (42) | | hostId | | | id | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | | image | cirros-0.3.4-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | | key_name | - | | locked | False | | metadata | {} | | name | my_vm | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | security_groups | default | | status | BUILD | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | | updated | 2016-02-15T19:27:34Z | | user_id | 8bb6e578cba24e7db9d3810633124525 | +--------------------------------------+----------------------------------------------------------------+ $ nova list +--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+ | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | my_vm | ACTIVE | - | Running | private=fda4:653e:71b0:0:f816:3eff:fe16:b5f2, 10.0.0.15 | +--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+ $ neutron port-list --device_id 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | | fa:16:3e:16:b5:f2 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.15"} | | | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ $ neutron port-show da0b1f75-c895-460f-9fc1-4d6ec84cf85f +-----------------------+-------------------------------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+-------------------------------------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:vnic_type | normal | | device_id | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | | device_owner | compute:None | | dns_assignment | {"hostname": "my-vm", "ip_address": "10.0.0.15", "fqdn": "my-vm.example.org."} | | | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2", "fqdn": "my-vm.example.org."} | | dns_name | my-vm | | extra_dhcp_opts | | | fixed_ips | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.15"} | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} | | id | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | | mac_address | fa:16:3e:16:b5:f2 | | name | | | network_id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | | port_security_enabled | True | | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | | status | ACTIVE | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +-----------------------+-------------------------------------------------------------------------------------------------------------+ $ designate record-list example.org. +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455563783 3600 600 86400 3600 | | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ $ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \ --port_id da0b1f75-c895-460f-9fc1-4d6ec84cf85f Created a new floatingip: +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | dns_domain | | | dns_name | | | fixed_ip_address | 10.0.0.15 | | floating_ip_address | 172.24.4.4 | | floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | | id | e78f6eb1-a35f-4a90-941d-87c888d5fcc7 | | port_id | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | | router_id | 970ebe83-c4a3-4642-810e-43ab7b0c2b5f | | status | DOWN | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +---------------------+--------------------------------------+ $ designate record-list example.org. +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455564861 3600 600 86400 3600 | | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | | 5ff53fd0-3746-48da-b9c9-77ed3004ec67 | A | my-vm.example.org. | 172.24.4.4 | +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+
在此示例中,注意当浮动IP与端口关联时,数据在DNS服务中发布。
以下是为此示例创建的PTR记录。 请注意,对于IPv4,ipv4_ptr_zone_prefix_size的值为24.
$ designate record-list 4.24.172.in-addr.arpa. +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+ | 2dd0b894-25fa-4563-9d32-9f13bd67f329 | NS | 4.24.172.in-addr.arpa. | ns1.devstack.org. | | 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | SOA | 4.24.172.in-addr.arpa. | ns1.devstack.org. admin.example.org. 1455564862 3600 600 86400 3600 | | fb1edf42-abba-410c-8397-831f45fd0cd7 | PTR | 4.4.24.172.in-addr.arpa. | my-vm.example.org. | +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
用例3:浮动IP在外部DNS服务中发布
在此用例中,用户在创建浮动IP时将dns_name和dns_domain属性分配给浮动IP。 浮动IP数据在外部DNS服务创建后立即可见。 浮动IP可以与创建时或以后的端口关联。 以下示例显示用户引导实例,然后创建与为该实例分配的端口关联的浮动IP:
$ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3 +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | True | | availability_zone_hints | | | availability_zones | nova | | dns_domain | example.org. | | id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | | mtu | 1450 | | name | private | | port_security_enabled | True | | router:external | False | | shared | False | | status | ACTIVE | | subnets | 43414c53-62ae-49bc-aa6c-c9dd7705818a | | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +-------------------------+--------------------------------------+ $ nova boot --image cirros --flavor 42 \ --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm +--------------------------------------+----------------------------------------------------------------+ | Property | Value | +--------------------------------------+----------------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | - | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | adminPass | HLXGznYqXM4J | | config_drive | | | created | 2016-02-15T19:42:44Z | | flavor | m1.nano (42) | | hostId | | | id | 71fb4ac8-eed8-4644-8113-0641962bb125 | | image | cirros-0.3.4-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | | key_name | - | | locked | False | | metadata | {} | | name | my_vm | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | security_groups | default | | status | BUILD | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | | updated | 2016-02-15T19:42:44Z | | user_id | 8bb6e578cba24e7db9d3810633124525 | +--------------------------------------+----------------------------------------------------------------+ $ nova list +--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+ | 71fb4ac8-eed8-4644-8113-0641962bb125 | my_vm | ACTIVE | - | Running | private=fda4:653e:71b0:0:f816:3eff:fe24:8614, 10.0.0.16 | +--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+ $ neutron port-list --device_id 71fb4ac8-eed8-4644-8113-0641962bb125 +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ | 1e7033fb-8e9d-458b-89ed-8312cafcfdcb | | fa:16:3e:24:86:14 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.16"} | | | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ $ neutron port-show 1e7033fb-8e9d-458b-89ed-8312cafcfdcb +-----------------------+-------------------------------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+-------------------------------------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:vnic_type | normal | | device_id | 71fb4ac8-eed8-4644-8113-0641962bb125 | | device_owner | compute:None | | dns_assignment | {"hostname": "my-vm", "ip_address": "10.0.0.16", "fqdn": "my-vm.example.org."} | | | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614", "fqdn": "my-vm.example.org."} | | dns_name | my-vm | | extra_dhcp_opts | | | fixed_ips | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.16"} | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} | | id | 1e7033fb-8e9d-458b-89ed-8312cafcfdcb | | mac_address | fa:16:3e:24:86:14 | | name | | | network_id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | | port_security_enabled | True | | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | | status | ACTIVE | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +-----------------------+-------------------------------------------------------------------------------------------------------------+ $ designate record-list example.org. +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455565110 3600 600 86400 3600 | | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ $ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \ --dns_domain example.org. --dns_name my-floatingip Created a new floatingip: +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | dns_domain | example.org. | | dns_name | my-floatingip | | fixed_ip_address | | | floating_ip_address | 172.24.4.5 | | floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | | id | 9f23a9c6-eceb-42eb-9f45-beb58c473728 | | port_id | | | router_id | | | status | DOWN | | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | +---------------------+--------------------------------------+ $ designate record-list example.org. +--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+ | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455566486 3600 600 86400 3600 | | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | | 8884c56f-3ef5-446e-ae4d-8053cc8bc2b4 | A | my-floatingip.example.org. | 172.24.4.5 | +--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+
请注意,在此用例中:
必须在创建时一起指定浮动IP的dns_name和dns_domain属性。 它们不能单独分配给浮动IP。
为了在外部DNS服务中发布,浮动IP的dns_name和dns_domain优先于其关联端口的dns_name和端口网络的dns_domain(无论是否指定)。 只有浮动IP的dns_name和dns_domain在外部DNS服务中发布。
以下是为此示例创建的PTR记录。 请注意,对于IPv4,ipv4_ptr_zone_prefix_size的值为24.
$ designate record-list 4.24.172.in-addr.arpa. +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+ | id | type | name | data | +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+ | 2dd0b894-25fa-4563-9d32-9f13bd67f329 | NS | 4.24.172.in-addr.arpa. | ns1.devstack.org. | | 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | SOA | 4.24.172.in-addr.arpa. | ns1.devstack.org. admin.example.org. 1455566487 3600 600 86400 3600 | | 589a0171-e77a-4ab6-ba6e-23114f2b9366 | PTR | 5.4.24.172.in-addr.arpa. | my-floatingip.example.org. | +--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
性能注意事项
仅适用于用例1:端口直接发布在外部DNS服务中,如果在网络服务中启用了端口绑定扩展,则在引导过程中为Compute分配端口时,Compute服务将执行一个额外的端口更新操作。 这可能对引导过程的性能具有显着的不利影响,在采用此用例之前必须对其进行评估。配置OpenStack Networking与外部DNS服务集成
配置与外部DNS服务集成的第一步是启用“网络服务”内部DNS解析中描述的功能。 一旦完成,用户必须采取以下步骤,并重新启动neutron-server。1.编辑/etc/neutron/neutron.conf的[default]部分,并在参数external_dns_driver中指定要使用的外部DNS服务驱动程序。 有效选项在命名空间neutron.services.external_dns_drivers中定义。 以下示例显示如何设置OpenStack DNS服务的驱动程序:
external_dns_driver = designate
2.如果OpenStack DNS服务是目标外部DNS,/etc/neutron/neutron.conf的[designated]部分必须定义以下参数:
url:OpenStack DNS服务公共端点URL。
allow_reverse_dns_lookup:一个布尔值,指定是否启用反向查找(PTR)记录的创建。
admin_auth_url:身份服务管理员授权端点url。网络服务将使用此端点作为管理用户进行身份验证,以创建和更新反向查找(PTR)区域。
admin_username:网络服务用于创建和更新反向查找(PTR)区域的admin用户。
admin_password:网络服务用于创建和更新反向查找(PTR)区域的admin用户的密码。
admin_tenant_name:网络服务用来创建和更新反向查找(PTR)区域的管理员用户的项目。
ipv4_ptr_zone_prefix_size:IPv4反向查找(PTR)区域的前缀的大小(以位为单位)。
ipv6_ptr_zone_prefix_size:IPv6反向查找(PTR)区域的前缀的大小(以位为单位)。
insecure:禁用SSL证书验证。默认情况下,验证证书。
ca_cert:有效证书颁发机构(CA)证书的路径。
以下是一个示例:
[designate] url = http://55.114.111.93:9001/v2 admin_auth_url = http://55.114.111.93:35357/v2.0 admin_username = neutron admin_password = x5G90074 admin_tenant_name = service allow_reverse_dns_lookup = True ipv4_ptr_zone_prefix_size = 24 ipv6_ptr_zone_prefix_size = 116 ca_cert = /etc/ssl/certs/my_ca_cert
用例1的外部可访问网络的配置
用例1:端口直接发布在外部DNS服务中,外部可访问网络必须满足以下要求:网络不能具有属性router:external设置为True。
网络类型可以是FLAT,VLAN,GRE,VXLAN或GENEVE。
对于网络类型VLAN,GRE,VXLAN或GENEVE,分段ID必须在分配给租户网络的范围之外。
相关文章推荐
- tcp协议分析
- 基于winpcap的简单网络编程配置
- Http 同步和异步的区别
- 交换机span功能配置
- Windows下使用IPV6 socket收发TCP,UDP数据
- TCP的那些事儿(下)
- TCP的那些事儿(上)
- Go语言TCP网络编程(详细)
- JSON.stringify 语法实例讲解+easyui data-options属性+expires【申明:来源于网络】
- HTTP和URL协议
- http://www.leiphone.com/news/201608/vhqwt5eWmUsLBcnv.html
- python的httplib、urllib和urllib2的区别及用
- 【转】fiddler-http协议调试代理工具
- http/1.0 calendar
- 使用FTP和HTTP配置网络安装的YUM存储库
- GAN:生成式对抗网络介绍和其优缺点以及研究现状
- TCP/IP、Http、Socket的区别
- nginx使用ssl模块配置HTTPS支持
- TCP连接的建立和释放
- Net中httpResponse和httpRequest的简单实用;