openstackkilo版本虚拟机无法ping通外网是什么情况
这篇文章将为大家详细讲解有关openstack kilo版本虚拟机无法ping通外网是什么情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的霍林郭勒网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
一、简介
第二次搭建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 Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | id | c05070a1-9a4a-40d7-aa53-f1e38c6616e8 | | mtu | 0 | | name | ext-net | | provider:network_type | flat | | provider:physical_network | external | | provider:segmentation_id | | | router:external | True | | shared | False | | status | ACTIVE | | subnets | | | tenant_id | df206060f35a48b78d06aa1a9ec9c10c | +---------------------------+--------------------------------------+
在外部网络上创建一个子网
# 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通外网是什么情况就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
网页名称:openstackkilo版本虚拟机无法ping通外网是什么情况
文章出自:http://azwzsj.com/article/jjsepj.html