openstack kilo版本虚拟机无法ping通外网是什么情况

123次阅读
没有评论

共计 5183 个字符,预计需要花费 13 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 openstack kilo 版本虚拟机无法 ping 通外网是什么情况,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一、简介

第二次搭建 Openstack 环境,此次并非在自己的 VM 虚拟机上搭建,环境搭建过程中,出现各种错误,此处只为记录下:

二、测试环境

硬件:两台 X86 的服务器,6 块网卡

系统:Centos7.2 的系统,openstack 版本为 kilo

由于是两台机器,所以架构比较紧凑:

bdc217:controller、compute1

bdc218:network、compute2

三、网卡配置

两台机器一样都是 6 块网卡,具体配置如下

bdc217:

bond0: 两块网卡绑定

IPADDR=192.168.8.217
NETMASK=255.255.0.0
GATEWAY=192.168.5.2

bond2:三块网卡绑定作为存储网络

192.168.13.217

enp4s0f0:未作配置(本来想作为隧道网络)

bdc218:

bond0: 两块网卡绑定

IPADDR=192.168.8.218
NETMASK=255.255.0.0
GATEWAY=192.168.5.2

bond2:三块网卡绑定 作为存储网络

192.168.13.218

enp4s0f0:作为网络节点的外部网络

# cat /etc/sysconfig/network-scripts/ifcfg-enp4s0f0
TYPE=Ethernet
BOOTPROTO=none
NAME=enp4s0f0
DEVICE=enp4s0f0
ONBOOT=yes

说明:

(1)外部网络:为云主机提供上网业务和外界登陆 openstack 使用

(2)管理网络:三节点之间通信,比如 keystone、认证、RabbitMQ 消息队列等

(3)隧道网络:网络节点和计算节点之间的虚拟机数据通信,比如 DHCP、L2、L3

其实管理网络和隧道网络可以使用同一块网卡。

四、错误记录 1、虚拟机创建失败

新创建的虚拟机一直是 error 状态

解决思路:

多检查日志尤其是网络方面的日志

我的解决办法:检查 neutron 的配置文件,重新配置 neutron,重启 neutron 的服务(如 ovs 等)

2、虚拟机无法获取 IP

这种错误的表象就是启动云主机的时候,时间过长,因为一直在检查,查看云主机控制台日志,发现报如下错误,而且会有一连串似乎是 20 个 failed。

Starting network...
udhcpc (v1.18.5) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing
WARN: /etc/rc3.d/S40-network failed

解决思路:

由于我配置的时候用的是 GRE 网络方式,检查了多次 ml2_conf.ini 配置文件,一直在关注 local_ip,后来发现是自己粗心,在配置 IP 的时候,网卡配置时 ip 地址配置错误了,而配置文件并没有错,

因此 gre 隧道是通的,但是还是获取不到 ip,修改网卡的 ip 设置,问题就解决了。

3、虚拟机无法访问外网

虚拟机可以正常获取到 IP,也可以 ping 以及 ssh 连接制节点和网络节点,但是无法 ping 通外网

网络创建过程:

五、创建第一个网络创建外部网络

# source admin-openrc.sh
# neutron net-create ext-net --router:external \
 --provider:physical_network external --provider:network_type flat

+---------------------------+--------------------------------------+

在外部网络上创建一个子网

# neutron subnet-create ext-net 192.168.12.0/24 --name ext-subnet \
 --allocation-pool start=192.168.12.100,end=192.168.12.200 \
 --disable-dhcp --gateway 192.168.12.1
Created a new subnet:
+-------------------+------------------------------------------------------+
| Field | Value |
+-------------------+------------------------------------------------------+
| allocation_pools | {start :  192.168.12.100 ,  end :  192.168.12.200} |
| cidr | 192.168.12.0/24 |
| dns_nameservers | |
| enable_dhcp | False |
| gateway_ip | 192.168.12.1 |
| host_routes | |
| id | d9a05de1-4c7d-4c05-b324-a65cbd182b83 |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | ext-subnet |
| network_id | cbd0e9ab-07d4-49bf-b1ef-67914fbaaf20 |
| subnetpool_id | |
| tenant_id | df206060f35a48b78d06aa1a9ec9c10c |
+-------------------+------------------------------------------------------+

创建租户网络

# source demo-openrc.sh
# neutron net-create demo-net
Created a new network:
+-----------------+--------------------------------------+
| Field | Value |
+-----------------+--------------------------------------+
| admin_state_up | True |
| id | dc14ee5b-4bb6-4773-89f3-c1c4c064315a |
| mtu | 0 |
| name | demo-net |
| router:external | False |
| shared | False |
| status | ACTIVE |
| subnets | |
| tenant_id | 23652ebf5833435aa243e1a7665cb9dc |
+-----------------+--------------------------------------+

在租户网络下创建子网

# neutron subnet-create demo-net 10.10.1.0/24 \
 --name demo-subnet --dns-nameserver 8.8.4.4 --gateway 10.10.1.1
Created a new subnet:
+-------------------+----------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------+
| allocation_pools | {start :  10.10.1.2 ,  end :  10.10.1.254} |
| cidr | 10.10.1.0/24 |
| dns_nameservers | 8.8.4.4 |
| enable_dhcp | True |
| gateway_ip | 10.10.1.1 |
| host_routes | |
| id | f4758b79-5a53-4f9d-9838-5e372802da3f |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | demo-subnet |
| network_id | dc14ee5b-4bb6-4773-89f3-c1c4c064315a |
| subnetpool_id | |
| tenant_id | 23652ebf5833435aa243e1a7665cb9dc |
+-------------------+----------------------------------------------+

为租户网络创建路由,并将外部网络以及租户网络添加进去

创建路由

# neutron router-create demo-router
Created a new router:
+-----------------------+--------------------------------------+
| Field | Value |
+-----------------------+--------------------------------------+
| admin_state_up | True |
| external_gateway_info | |
| id | fbb96045-517d-4956-990a-01668151a70e |
| name | demo-router |
| routes | |
| status | ACTIVE |
| tenant_id | 23652ebf5833435aa243e1a7665cb9dc |
+-----------------------+--------------------------------------+

添加路由到 demo 租户的子网

# neutron router-interface-add demo-router demo-subnet
Added interface b5153ea2-4ed5-4c68-b599-29fc48d251b7 to router demo-router.

添加路由到外部网络并将其作为网关

# neutron router-gateway-set demo-router ext-net
Set gateway for router demo-router

整个网络的配置过程完全按照官方文档的步骤,但是创建实例后依旧无法 ping 通外网,最后检查发现为网卡的配置问题,因为默认网关是 192.168.5.2,只有配了该网关才能连接到外网上,但是 在外部网络上创建一个子网 步骤使用的是

# neutron subnet-create ext-net 192.168.12.0/24 –name ext-subnet \

  –allocation-pool start=192.168.12.100,end=192.168.12.200 \

  –disable-dhcp –gateway 192.168.12.1

网关只能选择 12 网段的 ip,不能改成 5.2,最后将外部网络的子网修改为 5 网段的,网关也修改成了 5.2,发现可以 ping 通外网。

另外,子网掩码也需要注意,/24 表示 255.255.255.0 是三个 255,而测试环境的子网掩码是 255.255.0.0,这就导致非 12 网段不能 ping 通浮动 IP,最终创建子网的语句修改为

# neutron subnet-create ext-net 192.168.5.0/16 –name ext-subnet \

  –allocation-pool start=192.168.5.100,end=192.168.5.200 \

  –disable-dhcp –gateway 192.168.5.2

这样创建新实例,绑定浮动 IP 后,云主机既可以访问外网,自己的 PC 也可以访问云主机。

关于 openstack kilo 版本虚拟机无法 ping 通外网是什么情况就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计5183字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)