一、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 网络可跨节点,是应用最广泛的网络类型。

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

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

  不同 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和配置控制器节点

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配置文件,配置以下文件时,请将配置文件备份,在创建一个同名到的配置文件,加入内容

[root@node1 ~]# cat /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层(桥接和交换)虚拟网络基础架构

[root@node1 ~]# cat /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层(桥接和交换)虚拟网络基础架构并处理安全组
[root@node1 ~]# cat /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服务
[root@node1 ~]# cat /etc/neutron/l3_agent.ini

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

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

[root@node1 ~]# cat /etc/neutron/dhcp_agent.ini

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

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

[root@node1 ~]# cat /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文件
[root@node2 ~]# cat /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桥代理

[root@node2 ~]# cat /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. SVN状态说明

    svn status查看工作副本中目录与文件的状态 命令格式:svn status [PATH](简写:svn st) 打印工作拷贝中文件和目录的状态. svn st|grep ^状态(获得某状态文件 ...

  2. DirectX11--深入理解与使用缓冲区资源

    前言 在Direct3D 11中,缓冲区属于其中一种资源类型,它在内存上的布局是一维线性的.根据HLSL支持的类型以及C++的使用情况,缓冲区可以分为下面这些类型: 顶点缓冲区(Vertex Buff ...

  3. web 框架

    一个实际的案例介绍Spring Boot + Vue 前后端分离 https://www.cnblogs.com/nele/p/7858581.html#_caption_7 https://www. ...

  4. python文本操作—读、写

    文本文件存储的数据有很多,我们需要把这些文本里的内容读出来,然后在浏览器上面显示. 1.读取整个文本文件 格式: with open(路径) as 变量: 变量.read() 关键字with作用:在不 ...

  5. /usr/bin/ld: warning: libavformat.so.57, needed by /home/camera.so, not found (try using -rpath or -rpath-link)

    ffmpeg中,使用libavformt.so.57时,查找不到. 解决方案: 修改ld.so.conf文件,添加路径. sudo gedit /etc/ld.so.conf 在文件末尾添加路径 /u ...

  6. 使用 DG Tweening

    在iphone上卡顿的话,使用application.frame更改刷新帧率

  7. 第一个 Python 程序

    ## 目标 * 第一个 `HelloPython` 程序* `Python 2.x` 与 `3​​.x` 版本简介* 执行 `Python` 程序的三种方式 * 解释器 —— `python` / ` ...

  8. iOS开发之Dictionary与NSData互转

    1.将NSData转换成Dictionary /** 将二进制数据转换成字典*/ + (NSDictionary *)dictionaryForJsonData:(NSData *)jsonData ...

  9. Linux 允许或者禁止ping

    Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping. 具体的配置方法如 ...

  10. Python 包管理(PYPA)

    Python包的管理可以通过Python 自带的管理 工具,例如:package-autoremove,package-list-packages, package-install 等,使用起来也非常 ...