如何配置Openstack Packstack Juno以在Centos 7上使用外部网络

时间:2015-03-02 19:41:25

标签: openstack openstack-neutron

我首先在Centos 7 x86_64最小安装上禁用了NetworkManager和selinux。

我已按照Red Hat的说明在此部署Openstack with Packstack: https://openstack.redhat.com/Running_an_instance_with_Neutron

在启动Cirros实例后,我的浮动IP与我设置的DHCP池匹配,但是默认情况下它没有分配给eth0。

我登录了虚拟机,并配置了eth0以匹配浮动IP,但它仍然无法访问,即使我使用路由设置默认网关也是如此。

安全组在0.0.0.0/0上有tcp和IMCP的入口规则,所以我的理解是我应该能够访问它,如果它已经配置的话。

我已经发布了Centos7图像,但我怀疑它有同样的问题,因为我无法连接。

有人可以告诉我如何调试这个吗?我在这台服务器上使用neutron并按照指示进行了T

我的网络是192.168.1.0/24

# neutron net-show public
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | cfe5a8cc-1ece-4d63-85ea-6bd8803f2997 |
| name                      | public                               |
| provider:network_type     | vxlan                                |
| provider:physical_network |                                      |
| provider:segmentation_id  | 10                                   |
| router:external           | True                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   | 9b14aa61-eea9-43e0-b03c-7767adc4cd62 |
| tenant_id                 | 75505125ed474a3a8e904f6ea8638cf0     |
+---------------------------+--------------------------------------+
# neutron subnet-show public_subnet
+-------------------+----------------------------------------------------+
| Field             | Value                                              |
+-------------------+----------------------------------------------------+
| allocation_pools  | {"start": "192.168.1.100", "end": "192.168.1.220"} |
| cidr              | 192.168.1.0/24                                     |
| dns_nameservers   |                                                    |
| enable_dhcp       | False                                              |
| gateway_ip        | 192.168.1.1                                        |
| host_routes       |                                                    |
| id                | 9b14aa61-eea9-43e0-b03c-7767adc4cd62               |
| ip_version        | 4                                                  |
| ipv6_address_mode |                                                    |
| ipv6_ra_mode      |                                                    |
| name              | public_subnet                                      |
| network_id        | cfe5a8cc-1ece-4d63-85ea-6bd8803f2997               |
| tenant_id         | 75505125ed474a3a8e904f6ea8638cf0                   |
+-------------------+----------------------------------------------------+
# neutron router-show router1
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                                                                                                                     |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                                                                                                                      |
| distributed           | False                                                                                                                                                                                     |
| external_gateway_info | {"network_id": "cfe5a8cc-1ece-4d63-85ea-6bd8803f2997", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.100"}]} |
| ha                    | False                                                                                                                                                                                     |
| id                    | ce896a71-3d7a-4849-bf67-0e61f96740d9                                                                                                                                                      |
| name                  | router1                                                                                                                                                                                   |
| routes                |                                                                                                                                                                                           |
| status                | ACTIVE                                                                                                                                                                                    |
| tenant_id             |                                                                                                                                                                                           |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
# neutron port-list
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                            |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| 5dddaf6c-7aa3-4b59-943c-65c7f05f8597 |      | fa:16:3e:b0:8b:29 | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.101"} |
| 6ce2580c-4967-488b-a803-a0f9289fe096 |      | fa:16:3e:50:2f:de | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.100"} |
| 920a7b64-76c0-48a0-a682-5a0051271252 |      | fa:16:3e:85:33:9a | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.102"} |
| 9636c04a-c3b0-4dde-936d-4a9470c9fd53 |      | fa:16:3e:8b:f2:0b | {"subnet_id": "892beeef-0e1c-4b61-94ac-e8e94943d485", "ip_address": "10.0.0.2"}      |
| 982f6394-c188-4eab-87ea-954345ede0a3 |      | fa:16:3e:de:7e:dd | {"subnet_id": "9b14aa61-eea9-43e0-b03c-7767adc4cd62", "ip_address": "192.168.1.103"} |
| d88af8b3-bf39-4304-aeae-59cc39589ed9 |      | fa:16:3e:23:b8:c5 | {"subnet_id": "892beeef-0e1c-4b61-94ac-e8e94943d485", "ip_address": "10.0.0.1"}      |

我可以在我的本地网络上ping Neutron创建的网关:

# ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.063 ms

但是,当我在来宾虚拟机中配置时,我无法ping此网关。

使用ovsctl,我看到网桥在那里并且在我的第二个网卡上正确设置了它的外部端口:

[root@server neutron]# ovs-vsctl list-br
br-ex
br-int
br-tun
[root@server neutron]# ovs-vsctl list-ports br-ex
enp6s0f1

1 个答案:

答案 0 :(得分:2)

首先,您可能误解了这应该如何运作:

  

在启动Cirros实例后,我的浮动ip是与DHCP匹配的一个>我设置了池,但默认情况下它没有分配给eth0。

永远不会将浮动IP地址直接分配给您的实例。您的实例会从内部网络(您使用neutron net-createneutron subnet-create等创建的地址)收到地址。

将浮动IP与实例关联时:

nova floating-ip-create <external_network_name>
nova floating-ip-associate <instance_name_or_id> <ip_address>

此地址在中子路由器内配置,neutron创建NAT规则,将该地址映射到实例的内部地址。

考虑到这一点:

默认packstack中介设置将在中子配置的两个网络中生成结果,名为publicprivate。实例应附加到private网络;如果您使用的是admin用户的凭据,则需要将--nic net-id=nnnnn传递给nova boot命令,以使其明确。

如果您以demo用户身份启动实例,则会自动执行此操作,因为private网络归demo租户所有,并且是唯一可见的非外部网络那个房客。

您的实例应该从private网络接收IP地址,默认的packstack配置将是10.0.0.0/24网络。

如果您的实例未收到IP地址

某个地方存在一个配置问题,即阻止源自您的实例的dhcp请求到达您的专用网络的dhcp服务器,该专用网络在您的控制器上运行在名为dhcp-nnnn的网络命名空间中,其中{{1} }是nnnn网络的UUID。在从实例到dhcp命名空间的路径上的各个点处应用private是此时诊断事物的好方法。

This article(免责声明:我在作者中)详细介绍了各种组件在Neutron环境中的连接方式。它的长度有点长(例如,它不包括像DVR或HA路由器这样的新功能),但它仍然可以很好地概述连接到什么内容。

如果您的实例收到IP地址

如果您的实例确实从tcpdump网络收到了IP地址,那么您需要将注意力集中在中子路由器和外部网络的配置上。

中子路由器被实现为名为private的网络命名空间,其中qrouter-nnnn是相关中子路由器的UUID。您可以使用nnnn命令检查此命名空间。例如,给定:

ip netns

你可以运行:

$ neutron router-list
+--------------------------------------+------------+...
| id                                   | name       |...
+--------------------------------------+------------+...
| 92a5e69a-8dcf-400a-a2c2-46c775aee06b | router-nat |...
+--------------------------------------+------------+...

并查看路由器的接口配置:

# ip netns exec qrouter-92a5e69a-8dcf-400a-a2c2-46c775aee06b ip addr

您也可以使用1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 10: qr-416ca0b2-c8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default link/ether fa:16:3e:54:51:50 brd ff:ff:ff:ff:ff:ff inet 10.0.0.1/24 brd 10.0.0.255 scope global qr-416ca0b2-c8 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe54:5150/64 scope link valid_lft forever preferred_lft forever 13: qg-2cad0370-bb: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default link/ether fa:16:3e:f8:f4:c4 brd ff:ff:ff:ff:ff:ff inet 192.168.200.10/24 brd 192.168.200.255 scope global qg-2cad0370-bb valid_lft forever preferred_lft forever inet 192.168.200.2/32 brd 192.168.200.2 scope global qg-2cad0370-bb valid_lft forever preferred_lft forever inet 192.168.200.202/32 brd 192.168.200.202 scope global qg-2cad0370-bb valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fef8:f4c4/64 scope link valid_lft forever preferred_lft forever 来执行ip netns内部的操作 router namespace以验证与外部地址的连接。这个 是一个很好的起点,实际上 - 确保你有功能 您之前从路由器命名空间内的出站连接 开始尝试从Nova实例中测试一些东西。

您应该在ping界面上看到一个或多个地址 在您的浮动IP网络的CIDR范围内。如果在命名空间内运行qg-nnnn

ip
route

您应该使用适当的网关地址查看默认路由 为您的浮动IP网络。

我要暂停在这里。如果您经历了其中一些诊断并发现问题或有疑问,请告诉我们,我会尝试更新。