自助服务网络¶
如果您选择了网络选项 2,您还可以创建一个自助服务(私有)网络,该网络通过 NAT 连接到物理网络基础设施。此网络包括一个 DHCP 服务器,为实例提供 IP 地址。此网络上的实例可以自动访问外部网络,例如互联网。但是,从外部网络(例如互联网)访问此网络上的实例需要一个 浮动 IP 地址。
demo 或其他非特权用户可以创建此网络,因为它仅提供对 demo 项目内实例的连接。
警告
您必须 创建提供商网络,然后才能创建自助服务网络。
注意
以下说明和图表使用示例 IP 地址范围。您必须根据您的特定环境进行调整。
网络选项 2:自助服务网络 - 概述¶
网络选项 2:自助服务网络 - 连接性¶
创建自助服务网络¶
在控制器节点上,激活
demo凭证以获得对用户专用 CLI 命令的访问权限$ . demo-openrc
创建网络
$ openstack network create selfservice Created a new network: +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-11-04T18:20:59Z | | description | | | headers | | | id | 7c6f9b37-76b4-463e-98d8-27e5686ed083 | | ipv4_address_scope | None | | ipv6_address_scope | None | | mtu | 1450 | | name | selfservice | | port_security_enabled | True | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | revision_number | 3 | | router:external | Internal | | shared | False | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2016-11-04T18:20:59Z | +-------------------------+--------------------------------------+
非特权用户通常无法为此命令提供其他参数。服务会自动使用以下文件中的信息选择参数
ml2_conf.ini:[ml2] tenant_network_types = vxlan [ml2_type_vxlan] vni_ranges = 1:1000
在网络上创建一个子网
$ openstack subnet create --network selfservice \ --dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY \ --subnet-range SELFSERVICE_NETWORK_CIDR selfservice
将
DNS_RESOLVER替换为 DNS 解析器的 IP 地址。在大多数情况下,您可以使用主机上的/etc/resolv.conf文件中的一个。将
SELFSERVICE_NETWORK_GATEWAY替换为您要在自助服务网络上使用的网关,通常是“.1” IP 地址。将
SELFSERVICE_NETWORK_CIDR替换为您要在自助服务网络上使用的子网。您可以选择任何任意值,但我们建议使用来自 RFC 1918 的网络。示例
自助服务网络使用 172.16.1.0/24,网关为 172.16.1.1。DHCP 服务器为每个实例分配一个从 172.16.1.2 到 172.16.1.254 的 IP 地址。所有实例都使用 8.8.4.4 作为 DNS 解析器。
$ openstack subnet create --network selfservice \ --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 \ --subnet-range 172.16.1.0/24 selfservice Created a new subnet: +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 172.16.1.2-172.16.1.254 | | cidr | 172.16.1.0/24 | | created_at | 2016-11-04T18:30:54Z | | description | | | dns_nameservers | 8.8.4.4 | | enable_dhcp | True | | gateway_ip | 172.16.1.1 | | headers | | | host_routes | | | id | 5c37348e-e7da-439b-8c23-2af47d93aee5 | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | selfservice | | network_id | b9273876-5946-4f02-a4da-838224a144e7 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | revision_number | 2 | | service_types | [] | | subnetpool_id | None | | updated_at | 2016-11-04T18:30:54Z | +-------------------+--------------------------------------+
创建路由器¶
自助服务网络使用虚拟路由器连接到提供商网络,该路由器通常执行双向 NAT。每个路由器至少包含一个自助服务网络上的接口和一个提供商网络上的网关。
提供商网络必须包含 router:external 选项,以启用自助服务路由器使用它连接到外部网络,例如互联网。 admin 或其他特权用户必须在网络创建期间包含此选项,或稍后添加。在这种情况下,通过在创建 provider 网络时使用 --external 参数设置了 router:external 选项。
在控制器节点上,激活
demo凭证以获得对用户专用 CLI 命令的访问权限$ . demo-openrc
创建路由器
$ openstack router create router Created a new router: +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-11-04T18:32:56Z | | description | | | external_gateway_info | null | | flavor_id | None | | headers | | | id | 67324374-396a-4db6-9443-c70be167a42b | | name | router | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | project_id | 3828e7c22c5546e585f27b9eb5453788 | | revision_number | 2 | | routes | | | status | ACTIVE | | updated_at | 2016-11-04T18:32:56Z | +-------------------------+--------------------------------------+
将自助服务网络子网作为路由器上的接口添加
$ openstack router add subnet router selfservice
在路由器上设置提供商网络上的网关
$ openstack router set router --external-gateway provider
验证操作¶
我们建议您在继续操作之前验证操作并修复任何问题。以下步骤使用网络和子网创建示例中的 IP 地址范围。
在控制器节点上,获取
admin凭据以访问仅限管理员的 CLI 命令$ . admin-openrc
列出网络命名空间。您应该看到一个
qrouter命名空间和两个qdhcp命名空间。$ ip netns qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083 qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
列出路由器上的端口,以确定提供商网络上的网关 IP 地址
$ openstack port list --router router +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+ | ID | Name | MAC Address | Fixed IP Addresses | Status | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+ | bff6605d-824c-41f9-b744-21d128fc86e1 | | fa:16:3e:2f:34:9b | ip_address='172.16.1.1', subnet_id='3482f524-8bff-4871-80d4-5774c2730728' | ACTIVE | | d6fe98db-ae01-42b0-a860-37b1661f5950 | | fa:16:3e:e8:c1:41 | ip_address='203.0.113.102', subnet_id='5cc70da8-4ee7-4565-be53-b9c011fca011' | ACTIVE | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
从控制器节点或物理提供商网络上的任何主机 ping 此 IP 地址
$ ping -c 4 203.0.113.102 PING 203.0.113.102 (203.0.113.102) 56(84) bytes of data. 64 bytes from 203.0.113.102: icmp_req=1 ttl=64 time=0.619 ms 64 bytes from 203.0.113.102: icmp_req=2 ttl=64 time=0.189 ms 64 bytes from 203.0.113.102: icmp_req=3 ttl=64 time=0.165 ms 64 bytes from 203.0.113.102: icmp_req=4 ttl=64 time=0.216 ms --- 203.0.113.102 ping statistics --- rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms
返回到 启动实例 - 创建虚拟网络。