技术流ken

运维拯救世界

openstack内网、外网和路由创建以及外部访问连接实例–技术流ken

技术流ken今日头条地址:

https://www.toutiao.com/c/user/5882683285/#mid=1626981393635339

 

前言

网络在openstack中应该算是一个大难点,很多同学因为网络原因在openstack项目中步履坎坷,举步维艰。

总结一下本人遇到openstack中常见的网络问题:

1.DHCP服务端点down状态

2.linuxbridge处于不健康状态

3.实例无法获取IP

4.实例之间无法通信

5.外部网络无法和实例进行通信

关于网络的问题很多,这里总结了几条经常遇到的问题,很多同学辛苦创建的实例,但是最后发现外部网络无法访问,以失败而告终。

本篇博客将详细说一下部署openstack中网络环境的准备,网络配置以及如何使用网络是的内外网都可以进行通信。

 

查看网络状态的命令

[root@controller ~]# openstack network agent list
+————————————–+——————–+————+——————-+——-+——-+—————————+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+————————————–+——————–+————+——————-+——-+——-+—————————+
| 0293a23c-1e94-4c55-9dd7-b6a67207fa9c | L3 agent | controller | nova | True | UP | neutron-l3-agent |
| 45386250-b55f-439a-b30b-1f344867ef87 | Linux bridge agent | compute1 | None | True | UP | neutron-linuxbridge-agent |
| 52494de4-12be-4144-a4b5-79f14f26819b | Linux bridge agent | controller | None | True | UP | neutron-linuxbridge-agent |
| edc8899e-2845-436e-a5a6-7e2970ce4191 | Metadata agent | controller | None | True | UP | neutron-metadata-agent |
| fc3cdd6b-bda3-41af-870f-83108fa56414 | DHCP agent | controller | nova | True | UP | neutron-dhcp-agent |
+————————————–+——————–+————+——————-+——-+——-+—————————+

实验网络环境准备

控制节点一台:添加另个网卡,eth0网卡为nat模式,eth1网卡为仅主机模式

eth0 : 192.168.64.15

eth1: 192.168.182.20

计算节点一台:添加另个网卡,eth0网卡为nat模式,eth1网卡为仅主机模式

eth0 : 192.168.64.16

eth1: 192.168.182.21

文件配置

控制节点

在控制节点/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件中,physical_interface_mappings后面填写的是提供外部网络访问的网卡,这里我们填写的是网卡eth1

local_ip这里填写的内部网络,及虚拟机之间通信的网卡地址,这里我们填写的是eth0的网卡地址

租户网络即内网选择的是vxlan类型

计算节点

配置和控制节点保持一致,在填写local_ip填写的是计算节点的eth0的网卡地址

内部网络创建

第一步:创建内部网络

第二步:填写相关信息

第三步:创建子网

第四步:填写相关信息

网络可以随意写一个网段

只需要激活DHCP即可,分配地址可不写,系统会自动使用该网段内的所有可以用的地址

至此我们的内部网络已经创建完毕

创建外部网络

因为只能创建一个flat网络,我已经创建好了一个flat类型的外部网络,我就演示下如何创建flat类型的外部网络。

第一步:创建外部网络

要注意这里的物理网络下面的名称需要和配置文件/etc/neutron/plugins/ml2/ml2_conf.ini定义的保持一致

第二步:创建子网

这个网络地址需要和你在/etc/neutron/plugins/ml2/linuxbridge_agent.ini中定义的网卡网段保持一致

子网详细

至此我们的外部网络也已经创建好了

创建实例

第一步:填写名称选择可用域

第二步:选择镜像

第三步:选择实例类型

第四步:选择我们创建的内部网络

第五步:查看实例

实例创建成功,并且分配了一个IP地址为10.1.0.3

第六步:同样的方式创建第二个实例

我们创建了一个实例test5并且分配的地址为10.1.0.8

验证内网的连通性并验证分析

我们登陆进test4控制台验证是否可以ping通test5的10.1.0.8地址

可以发现test4是可以和test5进行通信的,其实也很好理解,因为现在test4和test5都在同一个网段中,我们也可以去分析一下网桥信息

首先查看网络信息

在web界面查看网络端口信息

使用brctl查看网桥信息在控制节点

可以看到tap9791ea67-a8是dhcp的tap设备

tap633b4b9a-17是router的tap设备

接着在计算节点查看网桥信息

可以发现计算节点和控制节点连接在了一个网桥设备上,

tap01247c96-51是10.1.0.8的tap设备

tapba452ebd-64是10.1.0.13的tap设备

两个设备都连接在了同一个网桥上了,通信也是必然的了。

验证外网连通性

我们现在直接在物理机上ping两个主机的IP地址,发现网络都是不通的

创建路由

想要外网通信还需要创建路由

第一步:创建路由

选择外部网络

第二步:填写接口

绑定浮动IP

第一步:选择IP地址

第二步:分配IP

第三步:关联IP

第四步:查看

可以发现已经分配了外部IP

第五步:同样的操作给test5实例分配IP

再次测试外网连通性并分析

再次ping分配到的IP地址

可以发现外部网络可以访问虚拟机了

我们现在就可以使用xshell连接我们的虚拟机了

可以发现我们现在已经可以顺利连接到我们的虚拟机了

至此我们已经成功实现了外网访问虚拟机。

另外提一下,虚拟机之间不仅可以通过内网通信也是可以通过外网IP进行互相通信的

在test5中pingtest4的外网IP地址进行验证:

我们可以看一下目前的网络拓扑

在控制节点查看网桥信息

那这两个tap又是什么设备那?

我们可以去web界面进行查看

可以发现是提供IP地址分配的dhcp以及连接内外网路由的tap设备

发表评论

电子邮件地址不会被公开。