当前位置:职场发展 > Openstack入门指南

Openstack入门指南

  • 发布:2023-10-10 12:39

什么是云计算

概念

云计算是一种基于互联网的计算方式,通过它可以按需向计算机和其他设备提供共享的软硬件资源和信息。用户不需要了解“云”中基础设施的细节,具备相应的专业知识,也不需要直接控制。云计算描述了一种新的基于互联网的IT服务添加、使用和交付模式。

我们举个例子来了解一下云计算。云计算中的“云”可以理解为天上的云。天上的云可以变成雨,落到地上。落在地上的水蒸发了,又变成了云。这就形成了一个循环。

这里的雨代表计算资源,比如虚拟机、存储、网络等。
云变成水的过程代表获取资源的过程。
水变成云的过程,代表着资源循环利用的过程。

云计算就像云水的循环过程,按需分配,循环利用。

为什么需要云计算

云计算的本质是解决资源利用、算力不足和成本问题。

  1. 有效解决硬件单点故障问题
    • 单点故障会导致服务中断。为了解决单点故障,需要为每个硬件准备备用硬件,这不仅增加了硬件购置成本,而且增加了部署和维护成本。
  2. 根据需要增减资源
    这里的资源指的是硬件、带宽等,自己管理服务器会面临一个非常麻烦的问题,
    • 添加服务时,需要购买服务器,购买服务器需要时间;使用云服务器时,您可以随时添加素数驱动的结果:需求拉动和技术推动。以业务需求为驱动,希望解决业务应用问题。云计算本质上希望解决资源利用、算力不足和成本问题。技术发展的推动让云计算在技术上变得可行,技术发展推动了IT创新的商业价值。云计算的出现也有其必然性。
    • 当服务减少时,需要拆除购买的服务器,服务器将退回给厂家或闲置。云服务器不使用时,不续费即可(例如阿里云)
    • 在使用云服务器之前,我们需要一个低配置的服务器来运行服务。服务器需要空间来存储,每年的耗电量也不小。因此,我们使用一台服务器来运行多个服务,以降低成本。服务器的购买及维护费用;使用云服务器后,您可以直接购买所需的任何配置,分离了服务器的职责,减少了各个服务之间的相互影响,效率更高。
    • 托管服务器时,我们需要购买带宽。一般来说,我们需要在与ISP服务提供商签订合同之前确定带宽。当我们后来发现购买的带宽过多或过少时,我们无法减少或增加带宽。 ;使用云服务器后,您可以灵活增加或减少带宽,并且可以随时增加或减少带宽。例如,对于淘宝这样的电子商务网站,假设每年只有双11和双12期间需要大量带宽,其他时间网站流量很小。这时可以利用云服务器来增加双11、双12等时间的带宽。只要始终保持正常的交通流量即可。
  3. 更好的缴费方式
    • 一般IDC托管服务器时,合同按年签订,费用按季度一次缴纳;使用云服务器,可以按较短的时间付费,像阿里云,可以按月付费。进行付费,或者根据使用情况购买,比如根据网络流量付费。
  4. BGP解决南北线路问题
    • 宽带市场一直存在“南电信北联通”的问题(即联通的基础在北方市场,中国电信的基础在南方市场),所以我们需要考虑南北互联问题,即路由问题。例如,南方的联通用户访问上海电信机房的服务器时,必须先绕道联通北京主出口(假设在北京),然后再返回上海。虽然使用光纤的速度很快,但当联通主网口出现瓶颈,无法承受巨大的网络流量时,联通用户访问电信网络服务器时就会变慢。 BGP解决了南北互联时的绕行问题,优化了路由。

云计算服务模式

云计算具有三种模式:

  • IaaS:基础设施即服务 - 消费者消耗“底层计算资源”,例如处理能力、存储空间、网络组件或中间件。消费者可以控制操作系统、存储、部署的应用程序和网络组件(例如防火墙、负载平衡器等),但不能控制云基础设施。例如:亚马逊 AWS、Rackspace。
  • PasS:平台即服务 – 消费者使用主机操作应用程序。消费者控制应用程序运行的环境(并且对主机也有一定的控制权),但不控制操作系统、硬件或操作网络基础设施。平台通常是应用程序基础设施。例如:谷歌应用程序引擎。
  • SaaS:软件即服务 - 消费者使用应用程序,但无法控制其运行的操作系统、硬件或网络基础设施。它是服务理念的基础。软件服务提供商基于租赁而不是购买的概念来提供客户服务。更常见的模型是提供一组帐户密码。例如:Microsoft CRM 与 www.sychzs.cn。

云计算应用

  • 公有云——公有云服务可以通过互联网和第三方服务提供商向客户开放。 “公共”一词不一定意味着“免费”,但也可能意味着免费或相当便宜。公有云并不意味着用户数据可以被任何人查看。公共云提供商通常为用户实施访问控制机制。公共云是一种既灵活又经济高效的解决方案。
  • 私有云 - 私有云具有公共云环境的许多优点,例如弹性和适合提供服务。两者的区别在于,在私有云服务中,数据和程序在组织内部进行管理,并且与公共云服务不同,它们不会受到网络带宽、安全问题、监管限制的影响;此外,私有云服务允许提供商和用户对云基础设施有更多的控制权,提高安全性和弹性,因为用户和网络受到特殊限制。
  • 云物联网 - “物联网是万物互联的互联网。”这有两层含义:一是物联网的核心和基础仍然是互联网,是在互联网基础上延伸和扩展的网络;其次,其用户端延伸扩展至任意物品,承载物品之间的信息。交流与沟通。
  • 云存储——云存储是从云计算的概念延伸和发展起来的一个新概念。它是指利用集群应用、网格技术或分布式文件系统来集成网络中的大量数据。将各类存储设备集合在一起,通过应用软件协同工作,共同对外提供数据存储和业务访问功能的系统。当云计算系统计算和处理的核心是大量数据的存储和管理时,云计算系统中需要配置大量的存储设备。那么云计算系统就变成了云存储系统,所以云存储就是一个数据存储系统。和管理为核心的云计算系统。
  • 云游戏 - 云游戏是一种基于云计算的游戏方式。在云游戏的运行模式下,所有游​​戏都运行在服务器端,渲染的游戏画面经过压缩后通过网络传输给用户。 。在客户端,用户的游戏设备不需要任何高端处理器或显卡,只需要基本的视频解压缩功能。
    • 云安全——云安全(Cloud Security)是由“云计算”演变而来的新术语。云安全的战略理念是:用户越多,每个用户就越安全,因为如此庞大的用户基数足以覆盖互联网的每一个角落。只要一个网站挂了或者出现新的木马病毒,就会立即被拦截。 “云安全”通过网络中大量的客户端监控网络中的异常软件行为,获取互联网上木马、恶意程序的最新信息,推送到服务器进行自动分析处理,然后将解决方案分发给病毒和木马传播给每个客户端。
  • 混合云 - 混合云结合了公共云和私有云。在这种模式下,用户通常将非企业关键信息外包并在公有云上进行处理,但同时控制企业的关键服务和数据。

OpenStack

OpenStack 简介

OpenStack 是一个由 NASA(美国国家航空航天局)和 Rackspace 开发和发起的免费软件和开源项目,并在 Apache 许可证下获得许可。作为一个开源云计算管理平台项目,旨在提供用于公有云和私有云的构建和管理的软件,帮助服务提供商和企业实施类似于Amazon EC2和S3的云基础设施服务(Infrastruction as a Service)。 、IaaS)。

OpenStack 项目和组件

  1. Console
    服务名称:Dashboard
    项目名称:Horzon
    功能:提供Web前端控制台,展示OpenStack的功能。
  2. 计算
    服务名称:计算
    项目名称:Nova
    功能:一组控制器,用于管理单个用户或使用组的虚拟机实例的整个生命周期,根据 Provide基于用户需求的虚拟服务。负责虚拟机的创建、启动、关闭、挂起、暂停、调整、迁移、重启、销毁等操作,并配置CPU、内存等信息规格。
  3. 网络
    服务名称:网络与地址管理(网络)
    项目名称:Neutron
    功能:为云计算提供网络虚拟化技术,并为其他 OpenStack 服务提供网络连接服务。提供接口供用户定义网络、子网、路由器,配置DHCP、DNS、负载均衡、L3服务。网络支持GRE和VLAN。插件架构支持众多主流网络厂商和技术,例如OpenvSwitch。
  4. 对象存储
    服务名称:对象存储
    项目名称:Swift
    功能:在大规模可扩展系统中通过内置冗余和高容错机制实现对象存储的一组工具允许存储或检索文件的系统。它可以为Glance提供镜像存储,为Cinder提供卷备份服务。
  5. ?创建和管理,例如创建卷、删除卷、在实例上挂载和卸载卷。
  6. 身份验证服务
    服务名称:身份服务
    项目名称:Keystone
    功能:为其他 OpenStack 服务提供身份验证、服务规则和服务令牌功能,管理域和项目、用户、组、角色。
  7. 镜像服务
    服务名称:镜像服务
    项目名称:Glance
    功能:虚拟机镜像搜索检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2) 、Raw、VDI、VHD、VMDK),具有创建和上传镜像、删除镜像、编辑镜像基本信息等功能。
  8. 计费服务
    服务名称:计量
    项目名称:Ceilometer
    功能:可以收集 OpenStack 内部发生的几乎所有事件,然后提供计费和监控服务。其他服务提供数据支持。
  9. 编排服务
    服务名称:部署编排(Orchestration)
    项目名称:Heat
    功能:提供通过模板定义的协同部署方法,实现云基础设施软件运行环境(计算、存储)的自动化部署和网络资源)。
  10. 数据库服务
    服务名称:数据库服务
    项目名称:Trove
    功能:在OpenStack环境下为用户提供可扩展、可靠的关系型和非关系型数据库引擎服务。

OpenStack各组件详细讲解

  • 组件逻辑图

  • Openstack新云主机流程图
? =/}

虚拟机创建过程:

  1. 界面或命令行通过RESTful API从keystone获取认证信息。
  2. keystone 向用户请求认证信息,并生成 auth-token 返回对应的认证请求。
  3. 接口或命令行通过RESTful API向nova-api发送启动实例请求(携带auth-token)。
  4. nova-api 接受请求后,向 keystone 发送认证请求,检查 token 是否为有效用户和 token。
  5. Keystone 验证令牌是否有效。如果有效,则返回有效的认证和对应的角色(注:部分操作需要角色权限才能操作)。
  6. 认证通过后,nova-api与数据库进行通信。
  7. 初始化新创建的虚拟机的数据库记录。
  8. nova-api 使用 www.sychzs.cn 请求 nova-scheduler 是否有资源(Host ID)来创建虚拟机。
  9. nova-scheduler进程监听消息队列,获取nova-api请求。
  10. nova-scheduler查询nova数据库中的计算资源,利用调度算法计算出满足虚拟机创建需求的主机。
  11. 对于满足虚拟机创建要求的主机,nova-scheduler会更新数据库中该虚拟机对应的物理主机信息。
  12. nova-scheduler通过rpc.cast向nova-compute发送对应的虚拟机创建请求消息。
  13. nova-compute 会从对应的消息队列中获取请求创建虚拟机的消息。
  14. nova-compute 通过 www.sychzs.cn 请求 nova-conductor 获取虚拟机消息。 (味道)
  15. nova-conductor 从消息队列中获取 nova-compute 请求消息。
  16. nova-conductor根据消息查询虚拟机对应的信息。
  17. nova-conductor从数据库中获取虚拟机对应信息。
  18. nova-conductor 通过消息将虚拟机信息发送到消息队列。
  19. nova-compute 从对应的消息队列中获取虚拟机信息消息。
  20. nova-compute 通过 keystone 的 RESTfull API 获取认证 token,并通过 HTTP 请求glance-api 获取创建虚拟机所需的镜像。
  21. glance-api 向 keystone 验证 token 是否有效,并返回验证结果。
  22. token验证通过,nova-compute获取虚拟机镜像信息(URL)。
  23. nova-compute 通过 keystone 的 RESTfull API 获取用于认证 k 的 token,并通过 HTTP 请求 neutron-server 获取创建虚拟机所需的网络信息。
  24. neutron-server 向 keystone 验证 token 是否有效,并返回验证结果。
  25. token验证通过,nova-compute获取虚拟机网络信息。
  26. nova-compute 通过 keystone 的 RESTfull API 获取认证 token,并通过 HTTP 请求 cinder-api 获取创建虚拟机所需的持久存储信息。
  27. cinder-api 向 keystone 验证 token 是否有效,并返回验证结果。
  28. token验证通过,nova-compute获取虚拟机的持久化存储信息。
  29. nova-compute根据实例信息调用配置的虚拟化驱动来创建虚拟机。



梯形校正组件

  • 梯形图中的概念
    • 用户 - 使用 OpenStack 服务的对象称为用户。这里的用户可以是个人、服务或系统。
    • 角色 - 用于划分权限。为User分配Role的过程就是为User分配权限的过程。可以简单理解为公司内部职位与员工之间的关系。公司员工在不同岗位上拥有不同的权限。在OpenStack中,Keystone返回给用户的Token中包含Role列表。访问的服务将确定访问它的用户中的角色以及用户提供的令牌。系统默认使用的角色是admin(管理)和_member_(成员)。
    • 项目(租户)——可以理解为个人或服务拥有的资源集合。一个Project可以包含多个User,每个User可以根据分配的权限使用Project中的资源。例如,使用Nova创建的虚拟机必须分配给项目,而Cinder创建的卷也必须分配给项目。在用户可以访问项目中的资源之前,他或她需要与该项目关联并指定用户在项目中的位置。角色。
    • 策略 - 除了身份验证之外,Openstack 还需要验证用户是否具有某个服务的访问权限。策略用于定义哪些角色对应哪些权限。对于Keystone来说,Policy实际上是一个JSON文件,默认是/etc/keystone/policy.json。 Keystone 通过Policy 实现用户的权限管理。
    • Token - 令牌,由字符串表示。 Token包含在指定范围内、指定时间内可以访问的资源。代币一般由用户持有。
    • 凭证 – 用于确认用户身份的凭证。
    • 身份验证 – 确定用户身份的过程。
    • 服务 - 指在 Openstack 中运行的组件服务。
    • EndPoint - 可用于通过网络访问和定位 OpenStack 服务的地址,通常表示为 URL。 EndPoint 共有三种类型:
      • 管理员网址 - 对于管理员用户,端口:35357
      • 内部 Url - 由 OpenStack 内部服务使用,端口:5000
      • 公共Url - 对于其他用户,端口:5000
        需要注意的是,这里虽然有三种类型的URL,但使用EndPoint访问时,用户的权限与URL无关。只与Role相关,与用户访问哪个URL无关。
梯形校正与各组件之间的相互作用


Glance 组件
  glance负责提供镜像服务
V1:
一眼分为两部分
    lance-api :提供rest接口,接收其他组件的请求,并发送给glance-registry;到后端存储设备拉取镜像
    lance-registry:连接数据库并将道德图像查询的元数据发送到glance-api。
V2:改进
  glance-api 完成所有工作


煤渣
流程图:

cinder主要组件及功能:

Cinder-api是cinder服务的端点,提供Rest接口,负责处理客户端请求,并向cinder-scheduler组件发送RPC请求。

Cinder-scheduler 负责cinder请求调度。其核心部分是scheduler_driver。作为调度管理器的驱动,负责cinder-volume的具体调度处理,并向选定的cinder-volume发送cinder RPC请求。

Cinder-volume 负责具体的 Volume 请求处理,Volume 存储空间由不同后端存储提供。目前各大存储厂商都积极向cinder社区贡献存储产品的驱动

Openstack组件通过调用各组件api提供的rest接口来实现通信。组件内部的通信是基于rpc(远程过程调用)机制的,rpc机制是基于AMQP模型实现的。

从rpc使用角度来看,nova、neutron、cinder的流程是类似的。我们以cinder为例来讲解一下rpc机制。

Openstack组件内部RPC(远程生产者调用)机制的实现是基于AMQP(高级消息队列协议)作为通信模型,从而满足组件内部的松耦合。 AMQP是一种用于异步消息通信的消息中间件协议。 AMQP模型有四个重要作用:

 Exchange:根据Routing key将消息转发到对应的消息队列

​​​路由键:在Exchange中用于确定哪些消息需要发送到对应的消息队列

Publisher:消息发送者,发送消息的Exchange并指定Routing Key,以便消息队列能够正确接收消息

Consumer:消息接收者,从消息队列获取消息

消息发布者 Publisher 将消息发送到 Exchange 并指示 Routing Key。 Exchange负责根据Message的Routing Key进行路由,将Message正确转发到对应的消息队列。监听消息队列的消费者将从队列中读取消息。

Routing Key 是 Exchange 转发信息的基础,因此每条消息都有一个 Routing Key 指示可以接受该消息的目的地址,每个 Message Queue 都可以通过告诉 Exchange 想要接收的 Routing Key 来进行绑定。这样,Exchange就可以正确地将消息转发到相应的消息队列中。

发布者可分为4类:

Direct Publisher 发送点对点消息;

Topic Publisher 采用“发布-订阅”模型发送消息;

Fanout Publisher 发送广播消息;

Notify Publisher 与 Topic Publisher 相同,发送Notification相关消息。

交换可分为3类:

1. Direct Exchange 根据 Routing Key 进行精确匹配,只有对应的 Message Queue 才会收到消息;

2. Topic Exchange 根据 Routing Key 进行模式匹配。只要消息队列符合模式,就会收到消息;

3.Fanout Exchange 将消息转发到所有绑定的消息队列。

AMQP消息模型

RPC 发送请求

客户端发送RPC请求,发布者发送消息并声明消息地址。消费者接收消息并处理消息。如果需要消息响应,则返回处理请求的结果消息。

OpenStack RPC 模块提供了 www.sychzs.cn、rpc.cast 和 rpc.fanout_cast 三种 RPC 调用方法来发送和接收 RPC 请求。

www.sychzs.cn 发送RPC请求并返回请求处理结果。请求处理流程如图5所示,Topic Publisher发送消息,Topic Exchange根据消息地址将消息转发到对应的消息队列,Topic Consumer监听。消息队列,如果找到需要处理的消息,则处理该消息,同时Direct Publisher会请求处理结果消息,请求发送者创建一个Direct Consumer来监听消息的返回结果

2.rpc.cast 发送 RPC 请求,不返回。请求处理流程如图6所示,与www.sychzs.cn的区别在于不需要返回请求处理结果,因此没有Direct Publisher和Direct Consumer处理。

3.rpc.fanout_cast 用于发送RPC广播信息,无返回结果



Nova(机制与Cinder类似)
流程图:

nova主要组件及功能:

nova-api 收到休息请求

nova-scheduler 负责调度

nova-compute 负责调用虚拟化驱动、创建虚拟机等

nova-conductor 帮助 nova-compute 访问数据库并将查询结果返回给 nova-compute



中子

在网络方面,OpenStack经历了从nova-network(早期)到Quantum(F版本)再到Neutron(H版本)的演进过程。

流程图:

? }

neutron-server 接收请求 --> 将请求发送到 MQ --> neotron-plugins 接收请求 --> 将请求发送到 MQ --> neotron-agent 建立网络设备。

neutron包含组件及功能介绍:

neutron-server:对外提供rest api,接收请求并将请求分发到不同的neutron-plugins。

neutron-plugin:处理来自Neutron Server的请求,维护OpenStack逻辑网络的状态,并调用Agent处理请求。每个制造商都基于 Openstack 开发模拟自己硬件的软件。这个软件是一个插件。早期,各个厂商都开发自己的插件,其功能各自实现,存在大量代码重复;另外,不同厂家的开发标准不同,导致程序兼容性较差。针对这种情况,neutron-plugin分为两部分:Core-plugin和Service-plugin。

    - 核心插件:Neutron 是 ML2(模块化第 2 层),负责管理 L2 网络连接。 ML2主要包括三类核心资源:网络、子网、端口。对这三类资源进行操作的 REST API 被 neutron-server 视为 Core API,并且由 Neutron 原生支持。其中:

      - 网络:代表隔离的二层网段,是为创建租户而保留的广播域。子网和端口始终分配给特定网络。网络类型包括Flat、Vlan、VxLan、Gre等。

      - 子网:代表 IPv4/v6 CIDR 地址池及其相关配置,如网关、DNS 等。子网中的虚拟机实例将自动继承该配置。子网必须与网络关联。

      - 端口:代表虚拟交换机上的虚拟交换机端口。 VM的网卡连接到VIF并连接Port后,就会有一个MAC地址和一个IP地址。端口的IP地址是从子网地址池中分配的。

    - Service-plugin:除了core-plugin外,其他插件还包括l3路由器、防火墙、负载均衡器、VPN、计量等,主要实现L3-L7网络服务。这些插件运行需要的资源都比较丰富。操作这些资源的REST API被neutron-server视为Extension API,需要厂家进行扩展。

neutron-agent:处理Plugin请求,负责在网络提供者上实现各种网络功能。和插件一一对应,

在架构设计上,Neutron 遵循了 OpenStack 的全分布式思想。每个组件之间通过消息机制进行通信,这样Neutron中的每个组件甚至每个进程都可以运行在任意节点上,如前面的流程图所示。这种微内核架构可以让开发人员专注于网络服务的实现。目前Neutron提供了众多的插件和驱动,基本可以满足各种部署的需求。如果这些仍然难以支持实际所需的环境,可以在Neutron框架下轻松扩展插件或驱动程序。

Neutron对Quantum的插件机制进行了优化,将各个厂商L2插件中独立的数据库实现提取出来,作为公共的ML2插件存储租户的业务需求,使得厂商可以专注于L2设备驱动的实现,而ML2作为总控可以协调多厂商L2设备共同运行”。在Quantum中,厂家都是开发各自的Service-plugin,不能兼容而且开发重复度很高,于是在Neutron中就为设计了ML2机制,使得各厂家的L2插件完全变成了可插拔的,方便了L2中network资源扩展与使用。

ML2作为L2的总控,其实现包括Type和Mechanism两部分,每部分又分为Manager和Driver。Type指的是L2网络的类型(如Flat、VLAN、VxLAN等),与厂家实现无关。Mechanism则是各个厂家自己设备机制的实现,如下图所示。当然有ML2,对应的就可以有ML3,不过在Neutron中L3的实现只负责路由的功能,传统路由器中的其他功能(如Firewalls、LB、VPN)都被独立出来实现了,因此暂时还没有看到对ML3的实际需求。

 

一般而言,neutron-server和各neutron-plugin部署在控制节点或者网络节点上,而neutron agent则部署在网络节点上和计算节点上。我们先来简单地分析控制端neutron-server和neutron-plugin的工作,然后再分析设备端neutron-agent的工作。

(注意,以前厂商开发的L2 plugin跟ML2都存在于neutron/plugins目录下,而可插拔的ML2设备驱动则存在于neutron/plugins/ml2/drivers目录下) 

 

控制端的实现 —— 从neutron-server的启动开始说起。neutron-server时,主要就干了两件事,第一是启动wsgi服务器监听Neutron REST API,第二是启动rpc服务,用于core plugin与agent间的通信,两类服务作为绿色线程并发运行。从SDN的角度来看,wsgi负责Neutron的北向接口,而Neutron的南向通信机制主要依赖于rpc来实现(当然,不同厂家的plugin可能有其它的南向通信机制)。 

  • 北向方面,Neutron的wsgi通过Paste工具进行模板化部署,它接收Neutron REST API的业务请求,然后通过APIRouter将其分发给对应的plugin。
  • Neutron内部,plugin与数据库交互,获取业务的全局参数,然后通过rpc机制将操作与参数传给设备上的Agent(某些plugin和ML2 Mechanism Driver通过别的方式与Agent通信,比如REST API、NETCONF等)。
  • RPC机制就可以理解为Neutron的南向通信机制,Neutron的RPC实现基于AMPQ模型,plugins和agents之间通常采用“发布——订阅”模式传递消息,agents收到相应plugins的***NotifyApi后,会回调设备本地的***CallBack来操作设备,完成业务的底层部署。

设备端的实现 —— 控制端neutron-server通过wsgi接收北向REST API请求,neutron-plugin通过rpc与设备端进行南向通信。设备端agent则向上通过rpc与控制端进行通信,向下则直接在本地对网络设备进行配置。

 



 

 OSI七层:

 

数据单元典型设备功能
应用层 数据 计算机:应用程序 直接和应用程序连接并提供常见的网络应用服务
表示层 数据 计算机:编码方式 将数据按照网络能理解的方案进行格式化
会话层 数据 计算机:建立会话 负责在网络中的两节点之间建立、维持和终止通信
传输层 数据段 计算机:进程和端口 提供端到端的交换数据的机制,检查分组编号与次序
网络层 数据包 网络:路由器 将网络地址转化为对应的物理地址,并且决定如何将数据从发送方传到接收方
数据链路层 数据帧 网络:交换机、网桥 控制物理层和网络层之间的通讯
物理层 比特 网络:集线器、网线 产生并检测电压,以便发送和接收携带数据的信号,提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性

 

应用层:就是应用软件使用的协议,如邮箱使用的POP3,SMTP、远程登录使用的Telnet、获取IP地址的DHCP、域名解析的DNS、网页浏览的http协议等;这部分协议主要是规定应用软件如何去进行通信的。

表示层:决定数据的展现(编码)形式,如同一部电影可以采样、量化、编码为RMVB、AVI,一张图片能够是JPEG、BMP、PNG等。

会话层:为两端通信实体建立连接(会话),中间有认证鉴权以及检查点记录(供会话意外中断的时候可以继续,类似断点续传)。

传输层:将一个数据/文件斩件分成很多小段,标记顺序以被对端接收后可以按顺序重组数据,另外标记该应用程序使用的端口号及提供QOS。(不同的应用程序使用不同计算机的端口号,同样的应用程序需要使用一样的端口号才能正常通信)

网络层:路由选路,选择本次通信使用的协议(http、ftp等),指定路由策略及访问控制策略。(IP地址在这一层)

数据链路层:根据端口与MAC地址,做分组(VLAN)隔离、端口安全、访问控制。(MAC地址在这一层)处理VLAN内的数据帧转发,跨VLAN间的访问,需要上升到网络层。

物理层:将数据最终编码为用0、1表示的比特流,然后传输。

 



 

网络模式

 

根据创建网络的用户的权限,Neutron network 可以分为:

 

  • Provider network:管理员创建的和物理网络有直接映射关系的虚拟网络。

  • Tenant network:租户普通用户创建的网络,物理网络对创建者透明,其配置由 Neutorn 根据管理员在系统中的配置决定

  

根据网络的类型,Neutron network 可以分为:Local、Flat / Flat Dhcp 、VLan 、Gre 、VxLan

1. Local —— 所有的组件全部安装在一台机器上,多用于测试环境。

2. Flat / Flat Dhcp ——  Flat模型最为简单,所有的虚拟机共用一个私有IP网段,IP地址在虚拟机启动时完成注入,虚拟机间的通信直接通过HyperVisor中的网桥转发,公网流量在该网段的网关上进行NAT(Nova-network实现为开启nova-network主机内核的iptables,Neutron实现为网络节点上的l3-agent)。Flat DHCP模型与Flat区别在于网桥中开启了DHCP进程,虚拟机通过DHCP消息获得IP地址(Nova-network实现为nova-network主机中的dnsmaq,Neutron实现为网络节点上的dhcp-agent)。

  优点:结构简单,稳定

  缺点:全部租户都在一个水平面上,租户之间没有隔离,因为全部租户都在一个子网内,当大规模部署后,其广播风暴将会是不小的负面因素。

  

 

 3.  VLan

  LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接LAN 中的计算机。一般来说,当你将两台计算机连入同一个 Hub 或者 Switch 时,它们就在同一个 LAN 中。同样地,你连接两个 Switch 的话,它们也在一个 LAN 中。一个 LAN 表示一个广播域,它的意思是,LAN 中的所有成员都会收到 LAN 中一个成员发出的广播包。可见,LAN 的边界在路由器或者类似的3层设备。

  VLAN 表示 Virutal LAN。一个带有 VLAN 功能的switch 能够同时处于多个 LAN 中。最简单地说,VLAN 是一种将一个交换机分成多个交换机的一种方法。比方说,你有两组机器,group A 和 B,你想配置成组 A 中的机器可以相互访问,B 中的机器也可以相互访问,但是A组中的机器不能访问B组中的机器。你可以使用两个交换机,两个组分别接到一个交换机。如果你只有一个交换机,你可以使用 VLAN 达到同样的效果。你在交换机上分配配置连接组A和B的机器的端口为 VLAN access ports。这个交换机就会只在同一个 VLAN 的端口之间转发包。

  带 VLAN 的交换机的端口分为两类:

    • Access port:这些端口被打上了 VLAN Tag。离开交换机的 Access port 进入计算机的以太帧中没有 VLAN Tag,这意味着连接到 access ports 的机器不会觉察到 VLAN 的存在。离开计算机进入这些端口的数据帧被打上了 VLAN Tag。
    • Trunk port: 有多个交换机时,组A中的部分机器连接到 switch 1,另一部分机器连接到 switch 2。要使得这些机器能够相互访问,你需要连接两台交换机。 要避免使用一根电缆连接每个 VLAN 的两个端口,我们可以在每个交换机上配置一个 VLAN trunk port。Trunk port 发出和收到的数据包都带有 VLAN header,该 header 表明了该数据包属于那个 VLAN。因此,只需要分别连接两个交换机的一个 trunk port 就可以转发所有的数据包了。通常来讲,只使用 trunk port 连接两个交换机,而不是用来连接机器和交换机,因为机器不想看到它们收到的数据包带有 VLAN Header。

 

一个计算节点上的网络实例

它反映的网络配置如下:

  1. Neutron 使用 Open vSiwtch —— OVS。
  2. 一台物理服务器,网卡 eth1 接入物理交换机,预先配置了网桥 br-eth1。
  3. 创建了两个 neutron VLAN network,分别使用 VLAN ID 101 和 102。
  4. 该服务器上运行三个虚机,虚机1 和 2 分别有一个网卡接入 network 1;虚机2 和 3 分别有一个网卡接入 network 2.

Neutron 在该计算节点上做的事情:

  • 创建了 OVS Integration bridge br-int。它的四个 Access 端口中,两个打上了内部 Tag 1,连接接入 network 1 的两个网卡;另两个端口的 VLAN Tag 为 2。
  • 创建了一对 patch port,连接 br-int 和 br-eth1。
  • 设置 br-int 中的 flow rules。对从 access ports 进入的数据帧,加上相应的 VLAN Tag,转发到 patch port;从 patch port 进入的数据帧,将 VLAN ID 101 修改为 1, 102 修改为 2,再转发到相应的 Access ports。
  • 设置 br-eth1 中的 flow rules。从 patch port 进入的数据帧,将内部 VLAN ID 1 修改为 101,内部 VLAN ID 2 修改为 102,再从 eth1 端口发出。对从 eth1 进入的数据帧做相反的处理。

 

优点:租户有隔离

缺点:  1. VLAN 使用 12-bit 的 VLAN ID,所以 VLAN 的第一个不足之处就是它最多只支持 4096 个 VLAN 网络(当然这还要除去几个预留的),对于大型数据中心的来说,这个数量是远远不够的。

     2. VLAN 是基于 L2 的,所以很难跨越 L2 的边界,在很大程度上限制了网络的灵活性。

  •      3. VLAN 操作需手工介入较多,这对于管理成千上万台机器的管理员来说是难以接受的。

 

 更多具体内容参考:

http://www.sychzs.cn/sammyliu/p/4626419.html

 

gre与vxlan请参考

http://www.sychzs.cn/sammyliu/p/4622563.html

http://www.sychzs.cn/xingyun/p/4620727.html

 

相关文章