前言

openstack基于分布式架构以驱动方式加载服务,相应的增加了复杂度但是也便于理解了

分布式代表openstack的所有服务及服务组件都可以解耦安装,也就是每个服务或服务下组件都可以实现单独部署
驱动的方式好处就是以标准的api插件驱动接入任何厂商的服务,openstack提供标准插件,厂商只需要提供相应的驱动

neutron服务

提供虚拟化的openstack网络环境,包括二层交换、三层路由、四层以上应用

网络基础概念

  • L2二层交换
  • 工作在TCP\IP 数据链路层,解决的就是怎么物理的找到PC
  • VLAN:限定广播域范围
  • MAC:物理接口硬件地址
  • ARP:通过同时二层MAC地址找到其他PC对应的IP(为了跨设备或者跨广播域通讯)
  • 转发表:存储MAC和IP的对应关系
  • L3三层路由
  • 工作在TCP\IP 网络层,解决的就是我怎么跨物理设备的找到PC
  • IP:物理接口逻辑地址
  • NAT:解决公网地址短缺问题,实现内网地址上公网访问服务
  • 路由表:存储我怎么去往目标路
  • 四层以上应用
  • 负载均衡:为应用实现负债分担,实现应用的集群
  • DHCP:自动配置PC的IP相关信息
  • 防火墙:实现数据包安全的检测进出站
  • VPN:实现跨公网建立内网通讯

neutron架构

下图演示了一个neutron服务的生命周期

openstack neutron 连接外网 openstack neutron详解_IP

Neutron Server

  • 对外提供openstack网络api,接收请求,并调用 Plugin 处理请求

Queue

  • openstack部分服务采用队列技术来完成服务之间的通讯和调用

Plugin

  • 处理server请求,维护网络状态,调用Agent 处理请求

Agent

  • 处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能

network provider

  • 提供网络服务的虚拟或物理网络设备
  • 例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交换机

Database

  • 存放openstack网络状态信息,ip、端口、路由等

neutron平面架构

openstack neutron 连接外网 openstack neutron详解_IP_02

  • Neutron server下分Core Plugins(L2)和Service Plugins(L3)
  • ML2 Plugins是逻辑的统一接口,引入了 type driver 和 mechansim driver,进而解耦
    2.0 ML2的Plugins出现是为了解决传统Core Plugins带来的两个问题
    2.1 无法同时使用多种 network provider
    2.2 开发新的 core plugin 工作量大
  • Service Plugins提供三层以上的更高级服务
  • 所有Agent节点都是通过队列跟控制节点通讯
    4.0 引入队列对于openstack来说的用处
    4.1 解耦各个服务,便于服务的集中通讯和调用
    4.2 提高性能,队列好处就是能提供异步调用,调用者无需等待
    4.3 伸缩性,针对子程序出现性能问题随时可以加入新节点提供服务

open vswitch 和 linux bridge

linux bridge 内核实现的原生桥接功能

  • 技术属于最早,技术比较成熟
  • 结构简单,易于理解
  • 较高的稳定性,转发性能强
  • 支持的类型驱动有限,gre不支持

open vswitch(OVS)

基于软件的方式实现了硬件交换机的功能

  • 可扩展性网络
  • 很好的支持CDN网络
  • Open vSwitch结构复杂
  • 隧道协议的支持
  • 缺乏较高的转发和稳定性

openstack neutron 连接外网 openstack neutron详解_IP_03

neutron物理部署

网卡流量类型

  • 管理 网络:队列和数据库使用
  • API 网络:向用户暴露 API 服务,Keystone的endpoints 配置地址
  • VM 网络:虚拟机之间通讯使用
  • 外部 网络:虚拟机需要访问公网使用

组合使用是需要根据情况而定,MV网络其实是可以不用(因为对我虚拟机而言我内部的网络就是外部网络),管理网络和API为一个网卡

部署节点

  • 控制节点 + 计算节点
  • 控制节点+网络节点+计算节点

2种架构的理解

  • 网络节点主要是针对三层以上服务,所以针对这些需求大的选择部署三个节点
  • 对于服务器虚拟化而言(服务器内部使用),L3服务可以不需要部署,直接依赖物理设备,通过外部网卡通讯
  • 对于公有云环境,必然是全部要部署,才能满足租户自动化个性服务

问题1、控制节点需要neutron-Plugins-Agent 和MV网络

  • 在服务器虚拟化场景是可以不需要
  • Agent的所有计算节点属于同步创建删除(配置需要对应相关流量网卡),控制节点MV网络需要提供DHCP和L3功能的通讯

问题2、计算节点只会同步L2,不同步L3

  • 计算节点只安装L2 Agent,L3功能都是基于控制节点实现(或者网络节点)