Neutron 概念:

  传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备;而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建、修改和删除网络,网络的连通性和隔离不已经太可能通过手工配置来保证了。

  如何快速响应业务的需求对网络管理提出了更高的要求。传统的网络管理方式已经很难胜任这项工作,而“软件定义网络(software-defined networking, SDN)”所具有的灵活性和自动化优势使其成为云时代网络管理的主流。

的设计目标是实现“网络即服务(Networking as a Service)”。为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。

模式服务— NeutronSDN( 软件定义网络 ), 通过使用它,网络管理员和云计算操作员可以通过程序来动态定义虚拟网络设备。Openstack 网络中的 SDN 组件就是 Quantum.但因为版权问题而改名为Neutron 。

Neutron  架构 :

 

OpenStack SDN对接 openstack和sdn的关系_mysql

Neutron 由如下组件构成:

Neutron Server

对外提供 OpenStack 网络 API,接收请求,并调用 Plugin 处理请求。

Plugin

处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络状态, 并调用 Agent 处理请求。

Agent

处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。

network provider

提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交换机。

Queue

Neutron Server,Plugin 和 Agent 之间通过 Messaging Queue 通信和调用。

Database

存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router 等。

Neutron 架构非常灵活,层次较多,目的是:

为了支持各种现有或者将来会出现的优秀网络技术。

支持分布式部署,获得足够的扩展性。Neutron 架构非常灵活,层次较多。

Neutron 架构框架总结:

 

OpenStack SDN对接 openstack和sdn的关系_SDN_02

通过 plugin 和 agent 提供的网络服务。

位于 Neutron server,包括 core plugin 和 service plugin。

位于各个节点,负责实现网络服务。

提供 L2 功能,ML2 是推荐的 plugin。

使用最广泛的 L2 agent 是 linux bridage 和 open vswitch。

和 agent 提供扩展功能,包括 dhcp, routing, load balance, firewall, vpn 等。

环境准备

1、三台机器:主机名:lichaohost1      (控制节点)集群网ip:192.168.206.137  租户网ip: 192.168.206.142  外网ip:192.168.206.143

主机名:lichaohost2        (计算节点)集群网ip:192.168.206.138   租户网ip: 192.168.206.144

主机名:lichaohost3        (储存节点)   集群网ip :192.168.206.139

2、控制节点端三块网卡:

ens33: 集群网 (组件相互通信)

ens37:租户网  (实例相互通信)

ens38:外网

3、计算节点两块网卡

ens33:集群网

ens37:租户网

4、储存节点一块网卡

ens33:集群网

5、每台机器最少4G内存

6、静态域名解析

7、免密登录

openstacke ocata版 官方网站:https://docs.openstack.org/ocata/index.html

部署方案

控制节点:部署的服务包括:neutron server, core plugin 的 agent 和 service plugin 的 agent。

计算节点:部署 core plugin 的agent,负责提供二层网络功能。

OpenStack SDN对接 openstack和sdn的关系_mysql_03

#Open vSwitch: 网络拓扑图

 

OpenStack SDN对接 openstack和sdn的关系_SDN_04

Open vSwitch 中的网络设备:

br-ex:连接外部(external)网络的网桥。

br-int:集成(integration)网桥,所有 instance 的虚拟网卡和其他虚拟网络设备都将连接到该网桥。

br-tun:隧道(tunnel)网桥,基于隧道技术的 VxLAN 和 GRE 网络将使用该网桥进行通信。

tap interface:命名为 tapXXXX。

linux bridge:命名为 qbrXXXX。

veth pair:命名为 qvbXXXX, qvoXXXX

OVS integration bridge:命名为 br-int。

OVS patch ports:命名为 int-br-ethX 和 phy-br-ethX(X 为 interface 的序号)。

OVS provider bridge:命名为 br-ethX(X 为 interface 的序号)。

物理 interface:命名为 ethX(X 为 interface 的序号)。

OVS tunnel bridge:命名为 br-tun。

开始部署Neutron网络服务

1、 控制节点:登录数据库并创建数据库

mysql -u root -p
CREATE DATABASE neutron;

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_05

2、控制节点:授予对neutron数据库的正确访问权

#    GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost'  IDENTIFIED BY 'NEUTRON_DBPASS';
#    GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%'   IDENTIFIED BY 'NEUTRON_DBPASS';

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_06

 

3、控制节点:宣告环境变量

. openrc  或者  source openrc

OpenStack SDN对接 openstack和sdn的关系_mysql_07

 

4、控制节点:添加neutron 用户

openstack user create --domain default --password=neutron neutron

OpenStack SDN对接 openstack和sdn的关系_网络管理_08

5、控制节点:将admin角色添加到server项目的neutron用户中

openstack role add --project service --user neutron admin

OpenStack SDN对接 openstack和sdn的关系_mysql_09

、控制节点:创建neutron服务实体

openstack service create --name neutron  --description "OpenStack Networking" network

OpenStack SDN对接 openstack和sdn的关系_网络管理_10

7、控制节点:创建服务API端点

#   openstack endpoint create --region RegionOne  network public http://lichaohost1:9696

OpenStack SDN对接 openstack和sdn的关系_网络管理_11

#  openstack endpoint create --region RegionOne network internal http://lichaohost1:9696

OpenStack SDN对接 openstack和sdn的关系_SDN_12

#   openstack endpoint create --region RegionOne   network admin http://lichaohost1:9696

OpenStack SDN对接 openstack和sdn的关系_网络管理_13

8、控制节点:安装服务

yum install openstack-neutron openstack-neutron-ml2 openvswitch openstack-neutron-openvswitch ebtables -y

OpenStack SDN对接 openstack和sdn的关系_SDN_14

9、控制节点:编辑 /etc/neutron/neutron.conf

# 备份

 

OpenStack SDN对接 openstack和sdn的关系_SDN_15

#编辑内容如下:

OpenStack SDN对接 openstack和sdn的关系_SDN_16

OpenStack SDN对接 openstack和sdn的关系_mysql_17

[DEFAULT]

state_path = /var/lib/neutron
auth_strategy = keystone
core_plugin = ml2
service_plugins = router
dhcp_agent_notification = true
allow_overlapping_ips = True
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
transport_url = rabbit://openstack:admin@lichaohost1

[agent]

[cors]

[cors.subdomain]

[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@lichaohost1/neutron          

[keystone_authtoken]
auth_uri = http://lichaohost1:5000
auth_url = http://lichaohost1:35357
memcached_servers = lichaohost1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

[matchmaker_redis]

[nova]
region_name = RegionOne
auth_url = http://lichaohost1:35357
auth_type = password
project_domain_name = default
project_name = service
user_domain_name = default
username = nova
password = nova


[oslo_concurrency]
lock_path = $state_path/lock

[oslo_messaging_amqp]

[oslo_messaging_kafka]

[oslo_messaging_notifications]

[oslo_messaging_rabbit]

[oslo_messaging_zmq]

[oslo_middleware]

[oslo_policy]

[qos]

[quotas]

[ssl]

View Code

OpenStack SDN对接 openstack和sdn的关系_mysql_18

#

 

OpenStack SDN对接 openstack和sdn的关系_网络管理_19

10、控制节点:编辑 /etc/neutron/plugins/ml2/ml2_conf.ini

#备份

OpenStack SDN对接 openstack和sdn的关系_网络管理_20

#编辑内容如下

[DEFAULT]

[ml2]
type_drivers = flat,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security

[ml2_type_flat]

[ml2_type_geneve]

[ml2_type_gre]

[ml2_type_vlan]

[ml2_type_vxlan]
vni_ranges = 1:1000

[securitygroup]
enable_ipset = true

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_21

11、控制节点:编辑 /etc/neutron/plugins/ml2/openvswitch_agent.ini

#备份

OpenStack SDN对接 openstack和sdn的关系_SDN_22

#编辑内容如下

[DEFAULT]

[agent]
tunnel_types = vxlan
l2_population = True

 

[ovs]
tunnel_bridge = br-tun
local_ip = 192.168.206.142
bridge_mappings =

 

[securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true


[xenapi]

OpenStack SDN对接 openstack和sdn的关系_mysql_23

 

12、控制节点:编辑 /etc/neutron/l3_agent.ini

#备份

OpenStack SDN对接 openstack和sdn的关系_SDN_24

 

#编辑内容如下:

[DEFAULT]
interface_driver = openvswitch
external_network_bridge = br-ex

[agent]

[ovs]

OpenStack SDN对接 openstack和sdn的关系_网络管理_25

13、控制节点:编辑 /etc/neutron/dhcp_agent.ini

#备份

OpenStack SDN对接 openstack和sdn的关系_网络管理_26

#编辑内容如下:

[DEFAULT]

interface_driver = openvswitch
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

[agent]

[ovs]

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_27

14、控制节点:编辑 /etc/neutron/metadata_agent.ini

#备份

OpenStack SDN对接 openstack和sdn的关系_mysql_28

#编辑内容如下

[DEFAULT]
nova_metadata_ip = lichaohost1
metadata_proxy_shared_secret = METADATA_SECRET

[agent]

[cache]

OpenStack SDN对接 openstack和sdn的关系_SDN_29

、控制节点 计算节点:编辑 /etc/nova/nova.conf      

添加以下内容

[neutron]
url = http://lichaohost1:9696
auth_url = http://lichaohost1:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET

OpenStack SDN对接 openstack和sdn的关系_mysql_30

# 计算节点:

 

OpenStack SDN对接 openstack和sdn的关系_SDN_31

16、控制节点:创建软连接

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_32

 

17、控制节点:同步数据库

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf  --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

OpenStack SDN对接 openstack和sdn的关系_SDN_33

18、控制节点:重新启动openstack-nova-api.service

systemctl restart openstack-nova-api.service

OpenStack SDN对接 openstack和sdn的关系_SDN_34

19、控制节点:启动neutron 相关服务并设置开机自启

#   systemctl start neutron-server.service neutron-dhcp-agent.service openvswitch neutron-openvswitch-agent neutron-metadata-agent.service

OpenStack SDN对接 openstack和sdn的关系_mysql_35

#   systemctl enable neutron-server.service neutron-dhcp-agent.service openvswitch neutron-openvswitch-agent neutron-metadata-agent.service

OpenStack SDN对接 openstack和sdn的关系_SDN_36

20、控制节点:添加 br-ex网桥

ovs-vsctl add-br br-ex

OpenStack SDN对接 openstack和sdn的关系_SDN_37

21、控制节点:网桥关联外网网卡 (添加个端口)

ovs-vsctl add-port br-ex ens38

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_38

 

22、控制节点:查看网桥

ovs-vsctl   show

OpenStack SDN对接 openstack和sdn的关系_SDN_39

23、控制节点:开启 neutron-l3-agent.service 并设置开机自启

#   systemctl start neutron-l3-agent.service

OpenStack SDN对接 openstack和sdn的关系_mysql_40

 

#    systemctl enable neutron-l3-agent.service

OpenStack SDN对接 openstack和sdn的关系_mysql_41

24、控制节点: 查看网络服务状态

openstack  network  agent  list

OpenStack SDN对接 openstack和sdn的关系_SDN_42

25、计算节点: 安装相关服务

yum install openvswitch openstack-neutron-openvswitch ebtables ipset -y

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_43

 

26、计算节点: 编辑 /etc/neutron/neutron.conf

#备份

OpenStack SDN对接 openstack和sdn的关系_mysql_44

#编辑内容如下

[DEFAULT]
#state_path = /var/lib/neutron
auth_strategy = keystone
#core_plugin = ml2
#service_plugins = router
#dhcp_agent_notification = true
#allow_overlapping_ips = True
#notify_nova_on_port_status_changes = true
#notify_nova_on_port_data_changes = true
transport_url = rabbit://openstack:admin@lichaohost1

[agent]

[cors]
 
[cors.subdomain]
 
[database]
#connection = mysql+pymysql://neutron:NEUTRON_DBPASS@lichaohost1/neutron



[keystone_authtoken]
auth_uri = http://lichaohost1:5000
auth_url = http://lichaohost1:35357
memcached_servers = lichaohost1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

[matchmaker_redis]

[nova]
region_name = RegionOne
auth_url = http://lichaohost1:35357
auth_type = password
project_domain_name = default
project_name = service
user_domain_name = default
username = nova
password = nova

[oslo_concurrency]
lock_path = $state_path/lock

[oslo_messaging_amqp]

[oslo_messaging_kafka]

[oslo_messaging_notifications]

[oslo_messaging_rabbit]

[oslo_messaging_zmq]

[oslo_middleware]

[oslo_policy]

[qos]

OpenStack SDN对接 openstack和sdn的关系_网络管理_45

27、计算节点:编辑  /etc/neutron/plugins/ml2/openvswitch_agent.ini

#备份

OpenStack SDN对接 openstack和sdn的关系_SDN_46

 

#编辑内容如下

[DEFAULT]

[agent]
tunnel_types = vxlan
l2_population = True

 

[ovs]
tunnel_bridge = br-tun
local_ip = 192.168.206.144
bridge_mappings =

[securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true

[xenapi]

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_47

 

28、计算节点:编辑 /etc/nova/nova.conf

 

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_48

29、计算节点: 启动nova 服务

systemctl restart openstack-nova-compute.service

OpenStack SDN对接 openstack和sdn的关系_mysql_49

30、计算节点:启动neutron 服务并设置开机自启

systemctl start openvswitch neutron-openvswitch-agent

OpenStack SDN对接 openstack和sdn的关系_OpenStack SDN对接_50

systemctl enable openvswitch neutron-openvswitch-agent

OpenStack SDN对接 openstack和sdn的关系_SDN_51

 

31、控制节点:查看网络服务状态

openstack  network  agent  list

OpenStack SDN对接 openstack和sdn的关系_SDN_52

第二个计算节点Neutron 服务配置完成