- 项目介绍Openstack Networking(neutron)管理所有虚拟网络,包括网络基础设施(VNI)和访问层方面的物理网络(PNI)。它允许租户创建高级的虚拟网络拓扑结构,包括的服务有防火墙、负载均衡器、虚拟专用网络(VPNs)。Networking提供了以下对象的抽象:网络、子网、路由器。每个功能模拟其物理实现:网络包含子网,路由提供不同子网、网络之间的路由通信。每一个路由有一个网关连接网络,有很多接口连接子网。子网能够通过路由连接到其他子网的机器上。任何给定的网络至少要设置一个外部网络。这个网络不仅仅是一个虚拟网络。相反这个网络是用来访问互联网的,因为这个网络仅仅代表外部网络的一部分,这个网络在中的DHCP是禁用的。除了外部网络,任何网络设置有一个或者多个内部网络。这些软件定义的网络直接连接到云主机。然后虚拟机所在子网连接到一个路由器的接口上,该路由器的另一个接口连接到外部网络,这样云主机就可以直接连接到网络了。外部网络访问云主机,则需要把外部IP绑定到云主机。Networking也支持安全组,安全组通过管理员来定义防火墙规则。一台云主机可以属于一个或者多个安全组。Networking的每个插件都有它自己的概念。虽然操作Networking不是至关重要的,但是理解这些概念可以帮助你建立Networking。所有网络的安装使用一个核心插件和一个安全组插件;此外,Firewall-as-a-service(FWaaS)和Load-balancing-as-aservice(LBaaS)插件是可选用的。
- 服务组件neutron-server 是 OpenStack Networking 服务器的主要流程。它是一个 Python 后台进程,将用户请求从 OpenStack Networking API 中继到配置的插件中。OpenStack Networking 还包含 3 个代理,它们通过消息队列或标准 OpenStack Networking API 与主要 Neutron 进程交互:neutron-dhcp-agent 用于创建和管理虚拟DHCP Server,向所有租户网络提供动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 服务。neutron-l3-agent 用于创建和管理虚拟路由器,执行 L3/网络地址转换 (Network Address Translation) 转发,以支持外部网络访问租户网络上的 VM。 neutron-openvswitch-agent 用于创建虚拟的二层switch,在每个虚拟机管理程序上执行本地虚拟交换机配置。Neutron插件架构目前已有很多不同功能和性能参数的插件,而且插件数量仍在增长。目前包含以下插件:Openvswitch , linux bridge , NEC openflowNeutron API 向用户和其他服务公开虚拟网络服务接口,但这些网络服务的实际实现位于一个插件中,插件向租户和地址管理等其他服务提供了隔离的虚拟网络。任何人都应该能够通过 Internet 访问 API 网络,而且该网络实际上可能是外部网络的一个子网。前面已经提到过,Neutron API 公开了一个网络连接模型,其中包含网络、子网和端口,但它并不实际执行工作。Neutron 插件负责与底层基础架构交互,以便依据逻辑模型而传送流量。
- 网络服务的原理Neutron只负责实现网络抽象的API,真正的功能是采用插件来完成的。插件大致分为两类:核心插件(core plugin)和服务插件(service plugin)。其中核心插件实现了对网络二层和三层的抽象。二层插件是ML2,ML2中又通过实际的type(local,vlan,gre,vxlan,flat——负责对应类型网络的虚拟化)和Mechanism driver(openvswitch,linux bridge——实际的网络实现机制)来对二层网络进行模拟。三层插件L3-Agent,和DHCP-Agent来提供虚拟的三层网络服务。Service plugin则是基于core plugin提供的功能的基础上提供额外的服务,如LBaaS插件提供负载均衡服务、VPNaaS提供VPN服务等。
- 网络服务的搭建先配置控制节点(Controller Node),进行以下操作。
- 首先配置网络服务所需要的数据库首先在数据库中创建名为neutron的数据库:
然后授权neutron用户对neutron库拥有完全权限:

- 创建keystone认证加载admin的环境变量,source admin-openrc.sh创建keystone认证用户neutron、neutron服务实体,endpoint



- 安装网络服务软件包
- 修改neutron的配置文件/etc/neutron/neutron.confa、首先连接数据库:
b、配置消息队列


- 创建keystone认证:


d、在默认域中,添加ML2插件,路由服务以及允许IP重叠:

e、在默认区域中,配置计算节点的网络通知和计算节点的endpoint


- 修改ML2插件的配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
- 在ml2域中,设置租户网络类型为GRE
- 在ml2_type_gre区域,设置tunnel的ID范围
- 在安全组区域,开启安全组并指定驱动类型
- 在默认域中配置APIS和驱动



- 在neutron域配置访问参数
- 配置计算服务的配置文件/etc/nova/nova.conf

添加ml2插件的链接文件到/etc/neutron/plugin.ini

填充neutron的数据库

重启openstack-nova-api、openstack-nova-scheduler、openstack-nova-conductor

启动neutron服务并开机自启:

7、服务的验证
首先加载admin的环境变量source admin-openrc.sh

到此,控制节点的网络服务配置完毕。
接下来配置网络节点(Network Node),进行以下操作。因为当前环境只有2台虚拟机,所以network和controller node部署在同一台上。
在开始配置安装之前,首先修改节点的内核参数/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
然后刷新内核参数sysctl -p
- 安装网络节点的软件包
- 修改neutron的 配置文件/etc/neutron/neutron.confa、配置消息队列

b、配置keystone认证:


c、在默认域中,添加ML2插件,路由服务以及允许IP重叠:

- 修改ML2插件的配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
a、在[ml2]区域,修改租户网络类型为GRE

b、在[ml2_type_flat]中,配置flat_network

c、在[ml2_type_gre]中,配置tunnel的ID范围

d、在安全组区域,配置安全组,防火墙驱动等

e、在[ovs]区域,配置tunnel网络IP和桥接网络(默认没有需要手动添加)

f、在[agent]区域,配置tunnel的类型为GRE(默认没有需要添加)

4、修改L3的配置文件/etc/neutron/l3_agent.ini
a、在默认区域配置接口驱动,外部网桥

5、修改DHCP的配置文件/etc/neutron/dhcp_agent.ini
a、在默认区域配置接口驱动和DHCP驱动

6、(可选)
修改/etc/neutron/dhcp_agent.ini
在[default]中,

创建并修改/etc/neutron/dnsmasq-neutron.conf
Dhcp-option-force=26,1454
然后杀死所有已经存在的dnsmasq
pkill dnsmasq
7、配置metadata agent的配置文件/etc/neutron/metadata_agent.ini
a、在默认区域中,配置认证参数

b、配置元数据主机和通信密码

8、配置控制节点的/etc/nova/nova.conf下的元数据代理和通信密码

然后在controller节点上重启openstack-nova-api服务

启动openvswitch并开机自启

9、添加桥接网络br-ex,在本例中桥接控制节点的10.20.0.2,也就是与外部桥接的网卡。
ifcfg-br-ex

ifcfg-enp0s8

然后添加外网网桥br-ex
ovs-vsctl add-br br-ex
添加连接外网的网桥端口
ovs-vsctl add-port br-ex enp0s8
然后重启network服务。

注:有时候桥接完网络需要禁用generic receive offload
ethtool –K interface_name gro off
10、完成最后的操作
链接ml2的配置文件到/etc/neutron/pugin.ini

由于安装包的bug,还需要将neutron-openvswitch-agent中的路径修改

启动服务并开机自启


注:不要手动启动neutron-ovs-cleanup服务,启动完后查看以下neutron-openvswitch-agent的服务状态,因为这个服务容易出问题,出现问题后检查各个配置文件。配置完成后可以看见br-tun和br-int的网桥

11、验证配置
首先加载admin的环境变量source admin-openrc.sh
然后查看agent列表

接下来配置compute节点,compute节点控制实例的连通性和安全组
首先修改内核参数
net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1
刷新内核sysctl –p
1、安装网络服务的软件包

2、修改neutron的配置文件/etc/neutron/neutron.conf
a、配置消息队列


b、配置keystone授权


c、在默认域中,添加ML2插件,路由服务以及允许IP重叠

3、配置ML2插件的配置文件/etc/neutron/pugins/ml2/ml2_conf.ini
a、在[ml2]区域,修改租户网络类型为GRE

b、在[ml2_type_gre]中,配置tunnel的ID范围

c、在安全组区域,配置安全组,防火墙驱动等

d、在[ovs]区域中,指定本机的tunnel网络的IP

e、在[agent]域中,配置tunnel的类型为GRE

启动openvswitch服务并开机自启

4、配置计算服务的配置文件/etc/nova/nova.conf
a、在默认区域设置APIs和驱动




b、在[neutron]区域,配置认证参数

完成配置:
创建ml2插件的配置文件到/etc/neutron/pugin.ini

修改neutron-openvswitch-agent中的路径

重启启动计算服务openstack-nova-compute

启动OVS并开机自启

启动后查看网卡

5、验证配置(在controller节点上操作)
首先加载admin的环境变量source admin-openrc.sh
查看agent列表

五、初始化网络(在控制节点上操作)
1、创建外部网络
首先加载admin的环境变量source admin-openrc.sh
建立外部网络ext-net

建立外部网络的子网(用于设置实例对外的网段,需要与桥接网络在同一网段,且网关指定为虚拟机桥接的IP)

2、创建租户网络
首先加载demo用户的环境变量source demo-openrc.sh
建立租户网络demo-net

建立租户网络的子网

3、配置虚拟路由
创建虚拟路由

添加租户的子网到虚拟路由

添加外部网关到虚拟路由

六、网络服务的验证
在控制节点ping虚拟网络的外网网关:

到此neutron服务搭建完毕。
1210

被折叠的 条评论
为什么被折叠?



