neutron介绍

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

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

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

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

Neutron网络基本概念:

  1)neutwork
  network 是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。

  local
  local 网络与其他网络和节点隔离。local 网络中的 instance 只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测试。

  flat
  flat 网络是无 vlan tagging 的网络。flat 网络中的 instance 能与位于同一网络的 instance 通信,并且可以跨多个节点。

  vlan
  vlan 网络是具有 802.1q tagging 的网络。vlan 是一个二层的广播域,同一 vlan 中的 instance 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可跨节点,是应用最广泛的网络类型。

flat与vlan 的区别:都可以跨多个节点,flat 在同一网络地址通信。vlan 打了vlan的标记,可以在不同网络地址通信。

  vxlan
  vxlan 是基于隧道技术的 overlay 网络。vxlan 网络通过唯一的 segmentation ID(也叫 VNI)与其他 vxlan 网络区分。vxlan 中数据包会通过 VNI 封装成 UDP 包进行传输。因为二层的包通过封装在三层传输,能够克服 vlan 和物理网络基础设施的限制。

  gre
  gre 是与 vxlan 类似的一种 overlay 网络。主要区别在于使用 IP 包而非 UDP 进行封装。

vxlan 与 gre的区别:都是二层封装,三层传输,vxlan 使用UDP, gre 使用IP包

  不同 network 之间在二层上是隔离的。
  以 vlan 网络为例,network A 和 network B 会分配不同的 VLAN ID,这样就保证了 network A 中的广播包不会跑到 network B 中。当然,这里的隔离是指二层上的隔离,借助路由器不同 network 是可能在三层上通信的。

  

network 必须属于某个 Project( Tenant 租户),Project 中可以创建多个 network。 network 与 Project 之间是 1对多 关系。

  2)subnet
  subnet 是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。

network 与 subnet 是 1对多 关系。一个 subnet 只能属于某个 network;一个 network 可以有多个 subnet,这些 subnet 可以是不同的 IP 段,但不能重叠。

  

  3)port
  port 可以看做虚拟交换机上的一个端口。port 上定义了 MAC 地址和 IP 地址,当 instance 的虚拟网卡 VIF(Virtual Interface) 绑定到 port 时,port 会将 MAC 和 IP 分配给 VIF。

subnet 与 port 是 1对多 关系。一个 port 必须属于某个 subnet;一个 subnet 可以有多个 port。

  Neutron 功能
  Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 VPN 等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

neutron 的部署方案:

          方案一,控制节点+计算节点

            方案二,控制节点+网络节点+计算节点

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

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

          2,支持分布部署,获得足够的扩展性

安装neutron和配置控制器节点

1、先决条件:
  1)登录数据库,创建数据库和服务凭据和API接口
  # mysql -uroot -proot
  2)创建neutron数据库
  MariaDB [(none)] CREATE DATABASE neutron;
  3)授予对neutron数据库的适当访问权限,替换 NEUTRON_DBPASS为合适的密码

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';

  4)创建neutron用户

  # openstack user create --domain default --password=neutron neutron
  5)将neutron用户添加到admin角色
  # openstack role add --project service --user neutron admin
  6)创建neutron服务
  # openstack service create --name neutron --description "OpenStack Networking" network
  7)创建网络服务API端点

# openstack endpoint create --region RegionOne network public http://node1:9696
# openstack endpoint create --region RegionOne network internal http://node1:9696
# openstack endpoint create --region RegionOne network admin http://node1:9696

2、配置网络选项

  1)这里我们选择自助服务网络
  2)下载安装包

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

  3)配置neutron配置文件,配置以下文件时,请将配置文件备份,在创建一个同名到的配置文件,加入内容

vim /etc/neutron/neutron.conf

[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@node1 [agent] [cors] [cors.subdomain] [database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@node1/neutron [keystone_authtoken]
auth_uri = http://node1:5000
auth_url = http://node1:35357
memcached_servers = node1:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron#openstack用户
password = neutron#openstack中neutron用户密码 [matchmaker_redis] [nova]
region_name = RegionOne#地址域
auth_url = http://node1: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]

  4)配置构建第2层(桥接和交换)虚拟网络基础架构

vim /etc/neutron/plugins/ml2/ml2_conf.ini

[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 = : [securitygroup]
enable_ipset = true

  5)配置Linux桥代理,为实例构建第2层(桥接和交换)虚拟网络基础架构并处理安全组

vim /etc/neutron/plugins/ml2/openvswitch_agent.ini

[DEFAULT]

[agent]
tunnel_types = vxlan
l2_population = True [ovs]
tunnel_bridge = br-tun
local_ip = 192.168.83.10#主机的第二块网卡
bridge_mappings =#等号后面没内容 [securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true [xenapi]

  6)配置第3层代理,提供路由和NAT服务

vim /etc/neutron/l3_agent.ini

[DEFAULT]
interface_driver = openvswitch
external_network_bridge = br-ex [agent] [ovs]

  7)配置DHCP代理为虚拟网络提供DHCP服务

vim /etc/neutron/dhcp_agent.ini

[DEFAULT]
interface_driver = openvswitch
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true [agent] [ovs]

3、配置元数据代理,提供配置信息的诸如凭据实例

vim /etc/neutron/metadata_agent.ini

[DEFAULT]
nova_metadata_ip = node1
metadata_proxy_shared_secret = METADATA_SECRET
#和/etc/nova/nova.conf中的密码需要一致,可以自己设置
[agent] [cache]

4、配置Compute服务以使用Networking服务,在/etc/nova/nova.conf加入以下内容

[neutron] 

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

5、完成安装

  1)创建软连接
  # 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 head" neutron

  

  3)重新启动Compute API服务

  # systemctl restart openstack-nova-api.service
  4)启动网络服务并开机启动

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

  

  5)创建网桥,并将网口绑定网桥

  # ovs-vsctl add-br br-ex
  # ovs-vsctl add-port br-ex ens37
  6)启动第3层服务
  # systemctl enable neutron-l3-agent.service     

  # systemctl start neutron-l3-agent.service

三、计算节点安装和配合neutron

1、下载安装包
# yum install openvswitch openstack-neutron-openvswitch ebtables ipset

2、配置公共组件
编辑/etc/neutron/neutron.conf文件
vim /etc/neutron/neutron.conf

[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@node1 [agent] [cors] [cors.subdomain] [database]
#connection = mysql+pymysql://neutron:NEUTRON_DBPASS@node1/neutron [keystone_authtoken]
auth_uri = http://node1:5000
auth_url = http://node1:35357
memcached_servers = node1:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron [matchmaker_redis] [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]

3、配置Linux桥代理

vim /etc/neutron/plugins/ml2/openvswitch_agent.ini

[DEFAULT]

[agent]
tunnel_types = vxlan
l2_population = True [ovs]
tunnel_bridge = br-tun
local_ip = 192.168.83.20#本机的第二块网卡ip
bridge_mappings = [securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true [xenapi]

3、完成安装

1)重新启动Compute服务
# systemctl restart openstack-nova-compute.service
2)启动Linux网桥代理并将其开机启动

# systemctl restart openstack-nova-compute.service
# systemctl enable openvswitch neutron-openvswitch-agent
# systemctl start openvswitch neutron-openvswitch-agent

四、验证操作

# openstack network agent list

[root@node1 ~]# openstack network agent list
+----------------------+--------------------+-------+-------------------+-------+-------+------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+----------------------+--------------------+-------+-------------------+-------+-------+------------------------+
| 4307db4f-527a-441e-b | Open vSwitch agent | node2 | None | True | UP | neutron-openvswitch- |
| -3842c2c23521 | | | | | | agent |
| 4e7445c0-7a53-423d- | Metadata agent | node1 | None | True | UP | neutron-metadata-agent |
| bc23-a26a26cc9d6d | | | | | | |
| 9c38108c-74ea-48c7- | Open vSwitch agent | node1 | None | True | UP | neutron-openvswitch- |
| -7abd5a1ecf90 | | | | | | agent |
| a5b22961-bf50-46ec- | DHCP agent | node1 | nova | True | UP | neutron-dhcp-agent |
| 88b4-a1c98740441e | | | | | | |
| c68858cd-6d03-457f- | L3 agent | node1 | nova | True | UP | neutron-l3-agent |
| bbbf-0fb5528223ab | | | | | | |
+----------------------+--------------------+-------+-------------------+-------+-------+------------------------+

OpenStack—neutron组件介绍与安装的更多相关文章

  1. 六、OpenStack—neutron组件介绍与安装

    一.neutron介绍 Neutron 概述:传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修 ...

  2. 二、OpenStack—keystone组件介绍与安装

    一.Keystone介绍 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等 ...

  3. 五、OpenStack—nova组件介绍与安装

    一.nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...

  4. 四、OpenStack—glance组件介绍与安装

    一.glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata及 ...

  5. openstack各组件介绍

    Nova:计算服务,通过虚拟化技术,实现虚拟机的创建,管理,删除,是openstack中最核心的服务. Neutron:网络服务,为虚拟机提供网络连接服务,就像物理机的交换机和路由器一样 Glance ...

  6. openstack 之~openstack各组件关系

    认识openstack 第一:openstack是什么? OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项 ...

  7. openstack neutron中涉及的网络设备

    一.openstack neutron网络设备介绍 Bridge(网桥) 用于将两个LAN连接起来,主要靠的MAC地址学习机制.当网桥的Port收到包时会将包的源mac和port ID关联起来记入ma ...

  8. 云计算OpenStack:云计算介绍及组件安装(一)--技术流ken

    云计算介绍 当用户能够通过互联网方便的获取到计算.存储等服务时,我们比喻自己使用到了“云计算”,云计算并不能被称为是一种计算技术,而更像是一种服务模式.每个运维人员心里都有一个对云计算的理解,而最普遍 ...

  9. openstack项目【day23】:openstack组件介绍

    本节内容 openstack介绍 openstack项目(服务名是项目名的别名) openstack运行流程 openstack各组件详解 一:openstack介绍             open ...

随机推荐

  1. 回温js算法

    ---恢复内容开始--- 一,冒泡排序. 具体算法描述如下: <1>.比较相邻的元素.如果第一个比第二个大,就交换它们两个: <2>.对每一对相邻元素作同样的工作,从开始第一对 ...

  2. react-navigation使用之嵌套和跳转

    1. 新版react-native已经将react-navigation作为官方版本发布,基础Demo可以从官方网站获得,比较困扰的问题是组件的嵌套和第二.第三页面的跳转. 2. 组件嵌套问题: 要在 ...

  3. python学习day15 模块(重点)

    模块(重点) python2,与py3的区别 py2:range() 在内存中立即把所有的值都创建,xrange() 不会再内存中立即创建,而是在循环时边环边创建. py3:range() 不会再内存 ...

  4. 关于SDK_JDK_JRE_JVM的关系

    SDK JDK JRE JVM 四者的关系 一:SDK与JDK的关系(可以认为jdk只是sdk的一种子集) SDK是Software Development Kit的缩写,中文意思是“软件开发工具包” ...

  5. 【asp.net】asp.net实现上传Excel文件并读取数据

    #前台代码:使用服务端控件实现上传 <form id="form1" runat="server"> <div> <asp:Fil ...

  6. jQuery实现搜索框插件+豆瓣音乐接口实现豆瓣搜索框

    jQuery实现搜索框插件 豆瓣音乐接口实现豆瓣搜索框 豆瓣接口有时不稳定,网络请求会报400,不要惊慌.我主要是练习一下jQuery的JSONP和封装插件. <div class=" ...

  7. Mysql查询库、表存储量(Size)

    Mysql查询库.表存储量(Size) 1.要查询表所占的容量,就是把表的数据和索引加起来就可以了. SELECT SUM(DATA_LENGTH) + SUM(INDEX_LENGTH) FROM ...

  8. Python——使用第三方库Pillow生成图片缩略图

    流程如下: 1.首先确认是否安装了pip 在命令提示符窗口下输入pip,如果Windows提示未找到命令,可以重新运行安装程序添加pip. 2.在命令提示符窗口下输入pip install Pillo ...

  9. 一些C语言基础知识

    位运算 // 按位与&: 2 & 3 = 2: 010 & 011 = 010   两个1才为1 // 按位或|: 2 | 3 = 3: 010 | 011 = 011   只 ...

  10. 解析中国天气网页面获取七日天气 (Java, Python)

    说明 解析中国天气网的页面,获取七日天气. 使用 htmlparser .这是它的 API 文档. 代码 SevenDayWeather.java import java.io.BufferedRea ...