代码改变世界

Openstack组件部署 — Netwotking service组件介绍与网络基本概念

2016-07-09 02:56  云物互联  阅读(274)  评论(0编辑  收藏  举报

目录

前文列表

Openstack组件部署 — Overview和前期环境准备
Openstack组建部署 — Environment of Controller Node
Openstack组件部署 — Keystone功能介绍与认证实现流程
Openstack组件部署 — Keystone Install & Create service entity and API endpoints
Openstack组件部署 — keystone(domain, projects, users, and roles)
Openstack组件实现原理 — Keystone认证功能
Openstack组建部署 — Glance Install
Openstack组件实现原理 — Glance架构(V1/V2)
Openstack组件部署 — Nova overview
Openstack组件部署 — Nova_安装和配置Controller Node
Openstack组件部署 — Nova_Install and configure a compute node
Openstack组件实现原理 — Nova 体系结构

Openstack Networking serivce

OpenStack Networking (neutron) allows you to create and attach interface devices managed by other OpenStack services to networks. Plug-ins can be implemented to accommodate different networking equipment and software, providing flexibility to OpenStack architecture and deployment.

OpenStack Networking service,项目代号Neutron,能够让我们创建、插入接口设备,这些接口设备由其他的OpenStack service来管理。Plug-ins(插件式)的实现可以容纳多种不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。

Neutron包含有以下组件

  • neutron-server:接收和路由API request到合适的OpenStack Network Plug-ins,以达到预想的目的。

  • OpenStack Networking plug-ins and agents(网络插件和代理):创建网络和子网、提供IP地址、插拔端口,这些Plug-ins和agents都根据不同的供应商和技术而不同。基于Plug-ins和agents的OpenStack network,为Cisco虚拟交换机或物理交换机、NEC OpenFlow产品、Open vSwitch、Linux bridging以及VMware NSX产品创造了关联的可能性。

  • Messaging queue消息队列:大多数的OpenStack Networking安装都会应用消息队列的功能,用于在neutron-server和各种各样的agents进程之间进行信息的路由。也为某些特定的插件扮演临时数据库的角色,以此来存储网络状态。

OpenStack networking service主要和OpenStack compute service进行交互,以提供compute service连接到虚拟机实例所需要的网络条件。

Neutron体系结构图
这里写图片描述

  • neutron-server能够接受并通过Message-queue来转发APIs给对应的Plug-ins
  • neutron-server还能够应用软件定义的网络服务(Software Defined Networking Service)将REST风格的APIs转发给Plug-ins。

基本的Neutron概念

Neutron用于管理OpenStack云计算平台中所有网络方面的虚拟网络基础设施(VNI)物理网络基础设施(PNI)的接入层。它允许Tenant创建包括Firewall(防火墙)、Load Balancer(负载均衡)、virtual private network(VPN)等高级网络拓扑。还为Openstack Networking提供了networks、subnets、routers等抽象对象的概念。每个抽象对象都拥有自己独特的功能,可以模拟各自对应的物理网络设备。

Neutron的抽象对象

其中networks包含了subnets,routers负责在不同的networks和subnets之间实现路由转发功能。每个router都有一个连接到network的Getway,router还有很多连接到subnet中的interface。所以一个subnet下的虚拟机可以访问连接到同一个router中的其他subnet下的虚拟机。

网络networks

Neutron networks目的是为了让OpenStack更灵活地划分物理网络,在多租户环境下能够为每个租户提供独立的网络环境。另外,Neutron还提供API来实现这个目标。Neutron networks是一个可以被用户创建的抽象对象,如果要和物理网络环境的概念进行映射的话,这个抽象对象相当于一个巨大的交换机,可以拥有无数个动态可创建和销毁的虚拟端口。而这些端点都会连接到networks中的subnets。

子网subnets

简单地说,subnets是由一组相同网段的IP地址组成的地址池。不同subnet间的通信需要routers的支持。Neutron中的subnets隶属于networks。

路由器routers

和物理网络环境下的路由器类似,Neutron中的routers也是一个路由选择和转发功能组件。只不过在Neutron中,routers是可以创建和销毁的软件组件。

端口

在物理网络环境中,端口是用于连接设备进入网络的地方。Neutron中的端口起着类似的功能,它是routers和虚拟机挂接网络的着附点。

Neutron的Public外部网络和Private内部网络

任何给定的Networking都需要设置至少有一个Public外部网络,Public外部网络与其他的网络不同,它不仅仅是一个虚拟网络。更重要的是它表示了OpenStack Netowrking能被外部物理网络接入并访问的视图。
注意:Public外部网络的IP地址只能被外部接入的物理网络所访问。因为Public外部网络仅仅代表了进入Internet的一个视图,实际上它的DHCP是关闭的。

Public外部网络之上,拥有一个或多个Private内部网络。这些由软件定义的Private内部网络能够直接连接到虚拟机。但只能是Private内部网络自身所包含的虚拟机或者是那些在通过Interface连接到同一个router的subnet上的虚拟机才能够被连接。即,不相连的Private内部网络之间是互相隔离的。

Neutron的security groups安全组

Neutron同样也支持 security groups(安全组)。安全组允许管理员实现防火墙规则的定义。一个虚拟机可以属于一个或多个安全组,Neutron为这个虚拟机配置这些安全组中的规则,例如:阻止或者开启端口,端口范围或者通信类型。

虚拟机如何连接到Internet外网

如果希望从Internet外网访问虚拟机,那么Openstack Networking中必须至少存在一个虚拟路由器。而且每个路由器至少配有一个能够连接到networks和Interface的Getway,而且这些Interface必须连接着subnet。通过这样一连串的网络配置,才能够保证能成功从外网连接到一个虚拟机。反之亦然。

如同物理路由器一样,subnet中的虚拟机可以访问连接到同一个路由器中的其他subnet的虚拟机,虚拟机也可以通过该路由器的网关访问外网。

Public、Private、路由器、虚拟机的关系示例图:
这里写图片描述

另外,你可以将Public外部网络的IP地址分配给Private内部网络的端口。这样的话一旦有什么连接到subnet,那么这个连接就叫做一个端口。你可以通过这个端口把外部网络IP地址分给虚拟机。