CONTENTS

1、neutron网络介绍

2、neutron配置

2.1 安装并配置controller节点

2.2 安装并配置network节点

2.3 安装并配置compute节点

2.4 配置外部网络


1、neutron网络介绍

(1)neutron基本概念

  • 网络连接服务
  • 面向租户API接口,用于创建虚拟网络、路由器、负载均衡、关联网络接口至指定网络和路由
  • 通过API接口管理虚拟或物理交换机
  • 提供Plugin架构来支持不同的技术平台
  • Neutron Private Network——提供固定私网地址
  • Neutron Public Network——提供浮动IP 地址

(2)neutron关键概念

  • Network
  1. 一个L2网络单元
  2. 租户可通过Neutron API创建自己的网络
  • Subnet
  1. 一段IPV4/IPV6 地址段
  2. 为Instance提供私网或公网地址
  • Router
  1. 三层路由器
  2. 为租户的Instance 提供路由功能
  • Port
  1. 虛拟交换机上的端口
  2. 管理Instance 的网卡

(3)组件架构

openstack中neutron执行失败 openstack neutron详解_日志输出

(4)neutron plugin

  • Open vSwitch
  • Linux Bridge
  • Ciso NX1000
  • Nicira NVP
  • Ryu
  • NEC OpenFlow
  • Floodnight
     

(5)neutron+Nova架构

openstack中neutron执行失败 openstack neutron详解_linux_02

(6)neutron组件

openstack中neutron执行失败 openstack neutron详解_Network_03

组件沟通方式

openstack中neutron执行失败 openstack neutron详解_linux_04

(7)neutron常见的构建类型

  • Single FLAT Network
  • Multi FLAT Ne twork
  • Mixed FLAT and Private Network
  • Provider Router with Private Network
  • Per-tenant Routers with Private Network

openstack中neutron执行失败 openstack neutron详解_linux_05

 

2、neutron配置

2.1 安装并配置controller节点

(1)创建数据库,完成下列步骤:
 

#a.使用root用户连接mysql数据库
mysql -u root -p

#b.创建neutron数据库
CREATE DATABASE neutron;

#c.创建数据库用户neutron,并授予neutron用户对neutron数据库完全控制权限
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
d.退出数据库连接

(2)执行admin环境变量脚本并在认证服务中创建网络服务的认证信息,完成下列步骤:

source admin.sh
#a.创建neutron用户
keystone user-create --name neutron --pass NEUTRON_PASS
#b.连接neutron用户到serivce租户和admin角色
keystone user-role-add --user neutron --tenant service --role admin

#c.创建neutron服务
keystone service-create --name neutron --type network --description "OpenStackNetworking"

#d.创建neutron服务端点
keystone endpoint-create \
--service-id $(keystone service-list | awk '/ network / {print $2}') \
--publicurl http://controller.nice.com:9696 \
--adminurl http://controller.nice.com:9696 \
--internalurl http://controller.nice.com:9696 \
--region regionOne

(3)安装网络服务组件并配置

#安装
yum install openstack-neutron openstack-neutron-ml2 python-neutronclient which -y

#配置网络服务组件
#编辑/etc/neutron/neutron.conf文件,并完成下列操作:
#a.编辑[database]小节,配置数据库访问
[database]
...
connection=mysql://neutron:NEUTRON_DBPASS@controller.nice.com/neutron

#b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问:
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest

#c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS

#d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠IP地址功能:
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True

#e.编辑[DEFAULT]小节,配置当网络拓扑结构发生变化时通知计算服务:
[DEFAULT]
...
notify_nova_on_port_status_changes=True
notify_nova_on_port_data_changes=True
nova_url=http://controller.nice.com:8774/v2
nova_admin_auth_url=http://controller.nice.com:35357/v2.0
nova_region_name=regionOne
nova_admin_username=nova
nova_admin_password=NOVA_PASS

nova_admin_tenant_id=SERVICE_TENANT_ID
注:可通过keystone tenant-get service,获取service租户ID。

#f.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
verbose=True

(4)配置Modular Layer 2 (ML2) plug-in

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件,并完成下列操作:

#a.编辑[ml2]小节,启用flat和generic routing encapsulation (GRE)网络类型驱动,配置GRE租户网络和OVS驱动机制。

[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch

#b.编辑[ml2_type_gre]小节,配置隧道标识范围:
[ml2_type_gre]
...
tunnel_id_ranges=1:1000

#c.编辑[securitygroup]小节,启用安全组,启用ipset并配置OVS防火墙驱动:
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

(5)配置计算服务使用Neutron
默认情况下,计算服务使用传统网络,我们需要重新配置。
编辑/etc/nova/nova.conf文件,并完成下列操作:

#a.编辑[DEFAULT]小节,配置API接口和驱动程序:
[DEFAULT]
...
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver

#b.编辑[neutron]小节,配置访问参数:
[neutron]
...
url=http://controller.nice.com:9696
auth_strategy=keystone
admin_auth_url=http://controller.nice.com:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=NEUTRON_PASS

(6)完成配置

#1、为ML2插件配置文件创建连接文件。
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
#2、初始化数据库
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron
#3、重新启动计算服务
systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service
#4、启动网络服务并配置开机自动启动
systemctl enable neutron-server.service
systemctl start neutron-server.service

(7)验证

1、执行admin环境变量脚本

source admin.sh

2、列出加载的扩展模块,确认成功启动neutron-server进程。
# neutron ext-list

openstack中neutron执行失败 openstack neutron详解_Network_06

2.2 安装并配置network节点

(1)配置先决条件

#1、编辑/etc/sysctl.conf文件,包含下列参数:
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

#2、使更改生效
sysctl -p

(2)安装网络组件并配置

yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch

配置网络通用组件,网络通用组件配置包含认证机制,消息队列及插件。
编辑/etc/neutron/neutron.conf文件并完成下列操作:
a.编辑[database]小节,注释任何connection选项。因为network节点不能直接连接数据库
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问

[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest

c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:

[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS

d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠IP地址功能:

[DEFAULT]
...
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True

e.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错

[DEFAULT]
...
verbose=True

(3)配置Modular Layer 2 (ML2) plug-in
ML2插件使用Open vSwitch(OVS)机制为虚拟机实例提供网络框架。
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成下列操作:

#a.编辑[ml2]小节,启用flat和generic routing encapsulation (GRE)网络类型驱动,配置GRE租户网络和OVS驱动机制。
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch

#b.编辑[ml2_type_flat]小节,配置外部网络:
[ml2_type_flat]
...
flat_networks=external

#c.编辑[ml2_type_gre]小节,配置隧道标识范围:
[ml2_type_gre]
...
tunnel_id_ranges=1:1000

#d.编辑[securitygroup]小节,启用安全组,启用ipset并配置OVS防火墙驱动:
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver、

#e.编辑[ovs]小节,配置Open vSwitch(OVS) 代理
[ovs]
...
local_ip=172.16.0.11
tunnel_type=gre
enable_tunneling=True
bridge_mappings=external:br-ex

(4)配置Layer-3 (L3) agent
编辑/etc/neutron/l3_agent.ini文件并完成下列配置:

#a.编辑[DEFAULT]小节,配置驱动,启用网络命名空间,配置外部网络桥接
[DEFAULT]
...
interface_driver= neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces=True
external_network_bridge=br-ex

#b.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
verbose=True

(5)配置DHCP agent

#1、编辑/etc/neutron/dhcp_agent.ini文件并完成下列步骤:
#a.编辑[DEFAULT]小节,配置驱动和启用命名空间
[DEFAULT]
...
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq
use_namespaces=True

#b.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
debug=True

#2、(可选,在VMware虚拟机中可能是必要的!)配置DHCP选项,将MUT改为1454bytes,以改善网络性能。
#a.编辑/etc/neutron/dhcp_agent.ini文件,先编辑[DEFAULT]小节,启用dnsmasq配置:
[DEFAULT]
...
dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf

#b.创建并编辑/etc/neutron/dnsmasq-neutron.conf文件并完成下列配置:
启用DHCP MTU选项(26)并配置值为1454bytes
dhcp-option-force=26,1454
user=neutron
group=neutron

#c.终止任何已经存在的dnsmasq进行,shell中敲下面这个命令
pkill dnsmasq

(6)配置metadata agent

#1、编辑/etc/neutron/metadata_agent.ini文件并完成下列配置:
#a.编辑[DEFAULT]小节,配置访问参数:
[DEFAULT]
...
auth_url=http://controller.nice.com:5000/v2.0
auth_region=regionOne
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS

#b.编辑[DEFAULT]小节,配置元数据主机:
[DEFAULT]
...
nova_metadata_ip=controller.nice.com

#c.编辑[DEFAULT]小节,配置元数据代理共享机密暗号:
[DEFAULT]
...
metadata_proxy_shared_secret=METADATA_SECRET

#b.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
debug=True

(7)下面需要在controller节点配置

#编辑/etc/nova/nova.conf文件并完成下列配置
#编辑[neutron]小节,启用元数据代理并配置机密暗号:
[neutron]
...
service_metadata_proxy=True
metadata_proxy_shared_secret=METADATA_SECRET

#在controller节点,重新启动computeAPI服务
systemctl restart openstack-nova-api.service

(8)回到neutron节点上来,配置Open vSwitch(OVS)服务

#1、启动VOS服务并配置开机自动启动:
systemctl enable openvswitch.service
systemctl start openvswitch.service

#2、添加外部网桥(external birdge)
ovs-vsctl add-br br-ex

#3、添加一个端口到外部网桥,用于连接外部物理网络
ovs-vsctl add-port br-ex INTERFACE_NAME
注:将INTERFACE_NAME换成实际连接外部网卡接口名。如:eth2或eno50332208。

(9)完成安装

1、创建网络服务初始化脚本的符号连接

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
cp/usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig
sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agent.service

2、启动网络服务并设置开机自动启动

systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-ovs-cleanup.service
systemctl start neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-ovs-cleanup.service

(10)验证(在controller节点执行下列命令)

1、执行admin环境变量脚本

source admin.sh

2、列出neutron代理,确认启动neutron agents成功。

neutron agent-list

openstack中neutron执行失败 openstack neutron详解_linux_07

 

2.3 安装并配置compute节点

(1)配置先决条件

#1、编辑/etc/sysctl.conf文件,使其包含下列参数:
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

#2、使/etc/sysctl.conf文件中的更改生效:
sysctl -p

(2)安装网络组件并配置网络通用组件

yum install openstack-neutron-ml2 openstack-neutron-openvswitch

#编辑/etc/neutron/neutron.conf文件并完成下列操作:
#a.编辑[database]小节,注释左右connection配置项。因为计算节点不能直接连接数据库。

#b.编辑[DEFAULT]小节,配置RabbitMQ消息代理访问:
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest

#c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS

#d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠ip地址功能:
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True

#e.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
verbose=True

(3)配置Modular Layer 2 (ML2) plug-in

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成下列操作:

#a.编辑[ml2]小节,启用flat和generic routing encapsulation (GRE)网络类型驱动,GRE租户网络和OVS机制驱动:
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch

#b.编辑[ml2_type_gre]小节,配置隧道标识符(id)范围:
[ml2_type_gre]
...
tunnel_id_ranges=1:1000

#c.编辑[securitygroup]小节,启用安装组,ipset并配置OVS iptables防火墙驱动:
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

#d.编辑[ovs]小节,配置Open vSwitch(OVS) agent:
[ovs]
...
local_ip=172.16.0.10
tunnel_type=gre
enable_tunneling=True

(4)配置Open vSwitch(OVS) service

启动OVS服务并设置开机自动启动:

systemctl enable openvswitch.service
systemctl start openvswitch.service

(5)配置计算服务使用网络
编辑/etc/nova/nova.conf文件并完成下列操作:

#a.编辑[DEFAULT]小节,配置API接口和驱动:
[DEFAULT]
...
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver

#b.编辑[neutron]小节,配置访问参数:
[neutron]
...
url=http://controller.nice.com:9696
auth_strategy=keystone
admin_auth_url=http://controller.nice.com:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=NEUTRON_PASS

(6)完成安装

#1、创建网络服务初始化脚本的符号连接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
cp /usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig
sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agent.service

#2、重启计算服务:
systemctl restart openstack-nova-compute.service

#3、启动OVS代理服务并设置开机自动启动:
systemctl enable neutron-openvswitch-agent.service
systemctl start neutron-openvswitch-agent.service

(7)验证(在controller节点执行下列命令)
1、执行admin环境变量脚本

source admin-openrc.sh

2、列出neutron代理,确认启动neutron agents成功。

neutron agent-list

openstack中neutron执行失败 openstack neutron详解_linux_08

2.4 配置外部网络

(1)创建一个外部网络

#1、执行admin环境变量脚本
source admin.sh

#2、创建网络
neutron net-create ext-net --shared --router:external True --provider:physical_network external --provider:network_typeflat

 

openstack中neutron执行失败 openstack neutron详解_日志输出_09

(2)创建一个外部网络的子网:例如,外网网段为:100.100.100.0/24,浮动地址范围为:100.100.100.12~100.100.100.240,网关为:100.100.100.11

openstack中neutron执行失败 openstack neutron详解_Network_10

(3)配置租户网络(在controller节点执行后面的命令),先执行demo环境变量脚本
# source demo-openrc.sh

openstack中neutron执行失败 openstack neutron详解_linux_11

(4)创建一个租户网络的子网,例如,租户网的网段为192.168.2.0/24,网关为192.168.2.1(网关通常默认为.1)

openstack中neutron执行失败 openstack neutron详解_日志输出_12

 (5)在租户网络创建一个路由器,用来连接外部网和租户网

创建路由器:

openstack中neutron执行失败 openstack neutron详解_日志输出_13

附加路由器到demo租户的子网并通过设置网关,使路由器附加到外部网

openstack中neutron执行失败 openstack neutron详解_linux_14

(6)查看路由器获取到的IP。

openstack中neutron执行失败 openstack neutron详解_日志输出_15

(7)测试外网互通情况,查看100.100.100.0这个网络,修改vmnet3中的ip,测试与路由器互通情况。如下图,成功与路由器互通。

openstack中neutron执行失败 openstack neutron详解_Network_16

openstack中neutron执行失败 openstack neutron详解_日志输出_17