OpenStack—neutron组件介绍与安装
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组件介绍与安装的更多相关文章
- 六、OpenStack—neutron组件介绍与安装
一.neutron介绍 Neutron 概述:传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修 ...
- 二、OpenStack—keystone组件介绍与安装
一.Keystone介绍 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等 ...
- 五、OpenStack—nova组件介绍与安装
一.nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...
- 四、OpenStack—glance组件介绍与安装
一.glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata及 ...
- openstack各组件介绍
Nova:计算服务,通过虚拟化技术,实现虚拟机的创建,管理,删除,是openstack中最核心的服务. Neutron:网络服务,为虚拟机提供网络连接服务,就像物理机的交换机和路由器一样 Glance ...
- openstack 之~openstack各组件关系
认识openstack 第一:openstack是什么? OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项 ...
- openstack neutron中涉及的网络设备
一.openstack neutron网络设备介绍 Bridge(网桥) 用于将两个LAN连接起来,主要靠的MAC地址学习机制.当网桥的Port收到包时会将包的源mac和port ID关联起来记入ma ...
- 云计算OpenStack:云计算介绍及组件安装(一)--技术流ken
云计算介绍 当用户能够通过互联网方便的获取到计算.存储等服务时,我们比喻自己使用到了“云计算”,云计算并不能被称为是一种计算技术,而更像是一种服务模式.每个运维人员心里都有一个对云计算的理解,而最普遍 ...
- openstack项目【day23】:openstack组件介绍
本节内容 openstack介绍 openstack项目(服务名是项目名的别名) openstack运行流程 openstack各组件详解 一:openstack介绍 open ...
随机推荐
- bugku web 变量1
flag In the variable ! <?php error_reporting(0);include "flag1.php";highlight_file(__fi ...
- Markdown基础语法小结
一.前言 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. --摘自百度百科 没想到一向不太靠谱的百度百科这次竟有了如此精辟的解释. ...
- [洛谷P1006] 传纸条
双线程DP的常识:DP的阶段问题:多阶段决策问题 传送门:$>here<$ 题意 n*m的矩阵里,从左上角走到右下角(只能往右或往下),再从右下角走回左上角(只能往左或往上).其中不能重复 ...
- 自动化测试框架【linux版】:JMeter + Ant + Jenkins
前提条件:linux安装了jmeter.ant.jenkins 安装方法参考汇总目录中对应的博文 截图看不清的,可以调大浏览器倍数看 jenkins驱动ant执行,ant驱动jmeter执行 ant调 ...
- Miller_Rabbin&&Pollard_Rho 学习笔记
占坑,待填 I Intro 首先我们考虑这样一个问题 给定一个正整数\(p(p<=1e8)\),请判断它是不是质数 妈妈我会试除法! 于是,我们枚举$ \sqrt p$ 以内的所有数,就可以非常 ...
- 利用java内部静态类实现懒汉式单例
/** * @Description: 利用键值模式控制service * @Author: zhanglifeng * @Date: 2019年 04月 28日 14:41 **/ public c ...
- html中设置锚点定位
1.使用id定位: (这样的定位可以针对任何标签来定位. ) <a name="1F" href="#1F">锚点1</a> <d ...
- 路径分隔符不一致,导致windows下不能开发
最近想要基于YAPI扩展开发一个自己的API管理平台,但是发现在windows下直接跑会报错,在Mac跑就没事 报的错是: Uncaught TypeError: $export is not a f ...
- 1x1的卷积核有什么作用
信道压缩~跨~信~减 一.1 X 1的卷积核作用 所谓信道压缩,Network in Network是怎么做到的? 对于如下的二维矩阵,做卷积,相当于直接乘以2,貌似看上去没什么意义: 但是,对于下面 ...
- 针对缓存在Redis中的聊天消息的持久化方案分析
选型依据 数据库的选型主要考虑一下几个方面: 数据库本身是否收费 数据库后期维护成本 是否支持水平及垂直扩展,及扩展的容易程度 业务数据本身特性 使用此数据库的开发成本 由于此数据库主要用来存储缓存在 ...