linuxbridge_agent.ini

linuxbridge_agent.ini,第1张

答:防火墙与安全组 安全组很像防火墙参考实现,它们都是使用IPTables规则来做包过滤。他们之间的区别在于: 1. 安全组由L2 Agent来实现,也就是说L2 Agent,...

Neutron 默认使用 ML2 作为 core plugin,配置文件 /etc/neutron/neutron.conf 中 core_plugin

计算节点和控制节点都需要在各自的 neutron.conf 中配置 core_plugin

然后配置 ML2 的配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中 mechanism_drivers

mechanism_drivers 可以同时指定多个。这里只指定了一个。

查看 linuxbridge 进程

控制节点:

计算节点:

在 Linux Bridge 环境中,一个数据包从 Instance 发送到物理网卡会经过下面几个类型的设备:

对于每个 local network,ML2 linux-bridge 会创建一个 bridge,Instance 的 tap 设备会连接到 bridge。位于同一个 local network 的 Instance 会连接到相同的 bridge,这样 Instance 之间就可以通讯了。

因为 local network 没有与物理网卡相连,所以 Instance 无法与宿主机之外的网络通信。

同时因为每个 local network 有自己的 bridge,bridge 之间是没有连通的,所以两个 local network 之间是不通的。

ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini

type_drivers ML2 加载网络类型。

tenant_network_types 普通用户在自己的 Tenant(Project)中创建网络时,默认创建哪种 type 的网络。

tenant_network_types = vlan, local 意思是当没有 vlan 可创建时,使用 local。

检测 Neutron Agent 是否正常 管理员 -->系统 -->系统信息 -->网络代理

从用户管理创建网络

创建网络 项目 -->网络 -->网络

填写网络名称

填写子网信息。 网关 IP 可以不用填写。默认为子网地址的第一个 IP。即:172.16.10.1

添加子网 IP 范围。

点击网络名称,进去相信信息,可以看到子网和端口信息等。

可以看到在端口中已经创建了一个 port,名为 “(c45b69e6-04ba)”,IP 为 172.16.10.2。连接设备为 "network:dhcp"。

打开控制节点终端,使用 brctl show 查看 linux bridge 的状态。

可以看到 bridge 设备 brqd2fd4378-9e 和 tap 设备 tapc45b69e6-04

创建 Instance 并选择刚刚创建的网络。

创建 Instance 成功后可以发现已经分配 IP 地址。

在底层中 Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 test。如下图

点进去可以看到详情

在宿主机上执行 brctl show 可以查看 bridge 的配置。

可以看到 bridge brqd2fd4378-9e 上连接了一个新的 tap 设备。

查看 Instance 信息。使用 virsh list 查看 Instance 运行中的列表。

使用 virsh edit 1 查看配置信息。

配置信息省略很多。重要的放在上面。

<mac address='fa:16:3e:19:e1:57'/> 是 Instance 网卡的 MAC 地址

<target dev='tapb337d11f-54'/> 是 Instance 虚拟网卡信息

ping test1 的 IP 地址发现是可以 ping 通。

查看 brctl show

发现 brqd2fd4378-9e 中又计入进来一个 VIF,因为两个 VIF 挂载在同一个 Linux Bridge 上,所以可以通讯。

结构如下:

如果新分的 Instance 在计算节点中。不在控制节点。他们之间将不在互通。

因为 DHCP agent 在控制节点上运行,test2 在计算节点的 local 网络上,两者位于不同物理节点。由于 local 网络的流量只能局限在本节点之内,发送的请求无法到达计算节点。

上图 物理网卡 eth1 桥接到 brqXXXX,为 Instance 提供 flat 网络。

下图 创建多个 flat Network,就要准备多个物理机网卡。

在 /etc/neutron/plugins/ml2/ml2.conf.ini 配置文件中,修改 tenant_network_types 参数为 flat

:这里是指定普通用户使用 flat。因为 flat 网络与物理网卡一一对应。一般情况下租户网络不采用 flat。

flat_networks 定义一个 flat 网络,label 为 “default”

通过 physical_interface_mappings 指名 default 对应的物理网卡为 ens35

例如:对于 label 为 “default” 的 flat network,节点 A 可能使用 ens35,配置为:

而 B 节点则可以使用 ens33,配置为:

创建 flat 网络

绑定子网

查看 控制节点网络状态

Neutron 自动新建了 flat_net 对应的网桥 brq9e3013c8-93,以及 dhcp 的 tap 设备 tap50802894-1a。

此时 tap50802894-1a 和物理网卡 ens35 都已经连接到网桥 brq9e3013c8-93 上。

可以看到 Instance 的 tap 设备 tapc1241c3f-cb 已经连接到网桥

配置文件 /etc/neutron/dhcp_agent.ini 中的 dhcp_driver 和 interface_driver

dnsmasq 是一个提供 DHCP 和 DNS 服务的开源软件。

在实现环境中使用 ps 命令可以查看到 dnsmasq 进程。

DHCP agent 会为每个 network 创建一个目录 /opt/stack/data/neutron/dhcp/xxxx 用于存放该 network 的 dnsmasq 配置文件。

在二层网络上,VLAN 可以将一个交换机分割成几个独立的虚拟交换机。

类似,在三层网络上,Linux Network Namespace 可以将一个物理三层网络分割成几个独立的虚拟三层网络。

每个 namespace 都有自己独立的网络栈,包括 route table,firewall rule,network interface device等

Neutron 通过 dnsmasq 为每个 Network 提供单独的 DHCP 和路由服务。

使用 ip 查看所有 namespcae

使用 neutron 查看 net-list

查看某个 namespace 的详细配置

3 个 Instance 通过 tap 设备连接到名为 “vrqXXXX” 的 Linux Bridge。

在物理网卡 eth1 上创建 eth1.100 的 valn interface,eth1.100 连接到 brqXXXX。

这样,Instance 通过 eth1.100 发送到 eth1 的数据包就会打上 vlan100 的 tag。

如果在创建个 network vlan101,eth1 上就会相应的创建多个 vlan interface eht1.101 并连接新的 Linux Bridge “brqYYYY”。

配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 tenant_network_types 的值为 vlan

配置 vlan 的范围

意思是:配置定义了 lable 为 “default” 的 valn network,valn id 的范围是 3001~4000。这里配置的是普通用户使用的范围。

admin 可以使用 1~4096 的 valn network

再次指定 vlan network 与物理网卡的对应关系

配置子网

查看系统网桥

这里可以看到:

vlan100 对应的网桥为 brq2b85ebb9-a。

vlan interface 是 ens35.100 (我是用的是 Ubuntu 16.04 默认网卡名 ens 开始的。)

DHCP 的 tap 设备是 tapf85d61d8-c3。

在 计算节点查看 网桥信息

可以发现创建的 Instance 已经连接到 vlan100 对应的网桥 brq2b85ebb9-a 上。因为计算节点没有 DHCP 服务所以没有相应的 tap 设备。

另外 网桥的名字与控制节点是一样的,都是 brq2b85ebb9-a6,表示是在同一个 network 上。

下图是我创建 VLAN 后 两台 Instance 分别在控制节点和计算机点的网络图

此时两台 Instance 在同一 valn100 下。相互之间是可以 ping 通的。

如果在创建一个 vlan101。如果两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。

如下图两个 vlan

两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。

因为 vlan 在二层是隔离的。如果想要互通,只能在三层通过路由转发。

你好,openstack创建实例报错状态错误、dashboard创建云主机报错状态错误、Exceeded maximum number of retries.、No valid host was found 原创

2022-02-24 17:01:06

3点赞

/*守护她的笑容

码龄4年

关注

文章目录

说明

报错内容及处理

报错Build of instance....note rescheduling.

报错No valid host was found. ...

报错Exceeded maximum number of retries...must note be all numeric. Neu].

查看所处项目以及项目所属计算节点

创建实例指定多张网卡孵化报错

创建windows实例报错linux正常

总结

说明

openstack的dashboard界面创建云主机、修改云主机规格、重建等 *** 作都会导致虚拟机状态错误,错误界面如下,并且这种状态是真实的错误,即使在底层把错误状态修复了,虚拟机依然是不能正常使用的。

在这里插入图片描述

我这遇到的报错分几种,因为我每处理一次,报错就会变化,下面依次展示不同报错的处理方式。

报错内容及处理

下面所有报错我均以创建实例为准,但只要创建实例正常了,其他功能也会正常。

报错Build of instance…note rescheduling.

具体报错如下图

在这里插入图片描述

此时在项目所属的所有计算节点重启了2个服务【我后面单独说 查看项目所属的计算节点哈】:

我这放历史命令

983 systemctl status openstack-nova-compute.service

984 systemctl restart openstack-nova-compute.service

985 systemctl status libvirtd.service

986 systemctl restart libvirtd.service

987 systemctl status libvirtd.service

1

2

3

4

5

1

2

3

4

5

上面执行后新建虚拟机报下面错误,继续往下看

报错No valid host was found. …

详细报错见下图

在这里插入图片描述

此时怀疑是这个项目空间的计算资源不足导致的,所以这里给这个项目空间新增了一个计算节点

如下:我现在在safe_domain域下 *** 作的,这个域之前只有2个计算节点【computer01,02】,我现在把computer29节点加入到这个域中了,查看方式如下图【dashboard也可以看】,查看和添加方式不会的自行百度。

在这里插入图片描述

然后再次创建虚拟机的 时候,有了新的报错,继续往下看

报错Exceeded maximum number of retries…must note be all numeric. Neu].

具体报错如下图

在这里插入图片描述

解决方法:

重启所在项目的所有所属计算节点的【是不是懵了? 下面我会单独说明的,别慌】 下面3个服务

ps:我放的是历史命令。

982 systemctl status openstack-nova-compute.service

983 systemctl restart openstack-nova-compute.service

984 systemctl status libvirtd.service

985 systemctl restart libvirtd.service

986 systemctl status libvirtd.service

987 exit

# 因为之前重启过上面2个服务,所以我现在之重启下面1个服务即可

988 systemctl | grep neu # 这个方法可以查服务哦

989 systemctl status neutron-linuxbridge-agent.service

990 systemctl restart neutron-linuxbridge-agent.service

991 systemctl status neutron-linuxbridge-agent.service

1

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

到此,问题解决,创建实例正常,报错消失。

查看所处项目以及项目所属计算节点

查看所处项目,dashboard中这显示的是即为所处项目空间。

在这里插入图片描述

查看所处项目空间计算节点有哪些

dashboard

切换到admin,系统-主机聚合里面即可看到

在这里插入图片描述

底层命令

可以通过group过滤的哈

在这里插入图片描述

创建实例指定多张网卡孵化报错

因为一个虚拟机有2张网卡的需求。

额,就是我创建实例的时候,指定了2个网络接口,创建的时候就报错了,报错内容和上面第一个一致,只是多了一个network什么的,没保存,也懒得再这么折腾一遍,反正就是,只要添加多个网卡接口创建实例报错和上面第一个一样,解决方法就是,创建实例的时候只指定一个网络接口,然后虚拟机创建好了再绑定新的接口就可以拉~~

创建windows实例报错linux正常

这个环境和上面的不是同一个,是我在后面的运维中发现的问题,一并归纳到这了而已。

问题:创建linux没有错,创建windows虚拟机就会报错,报错内容如下

在这里插入图片描述

在这里插入图片描述

原因

这个windows镜像创建系统卷时间太长,超过创建虚机的等待时间了。

解决方法

因为该云已经纳入云管了,再云管上创建并不会报错,底层创建报错是因为该套openstack是卷虚拟机,所以我们创建虚拟机的时候不要创建新卷就可以了,下面方法不是将镜像转为虚拟机,也不会导致镜像不在,放心使用。

在这里插入图片描述

报错消失,虚拟机正常创建。

在这里插入图片描述

总结

遇到这种报错呢,重启这个项目的所有计算节点的下面这3个服务即可,可能是啥消息排队了没有及时通信导致的错误,重启以后释放一下就好了。

如,我的这个safe项目有3个计算节点,那么我在3个计算节点都重启下面3个服务即可。

982 systemctl status openstack-nova-compute.service

983 systemctl restart openstack-nova-compute.service

984 systemctl status libvirtd.service

985 systemctl restart libvirtd.service

986 systemctl status libvirtd.service

987 exit

988 systemctl | grep neu # 这个方法可以查服务哦

989 systemctl status neutron-linuxbridge-agent.service

990 systemctl restart neutron-linuxbridge-agent.service

991 systemctl status neutron-linuxbridge-agent.service

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

文章知识点与官方知识档案匹配

云原生入门技能树首页概览

9938 人正在系统学习中


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7203116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存