嘉络管理系统打赏平台功能

Frank在2018年加入Mirantis曾负责Mirantis中国区大客户雲环境的实施和技术支持,专注于虚拟化和容器化云平台对于OpenStack和Tungsten Fabric都很早接触。在5月26日的直播活动中Frank分享了对这两个技术的实践经验。

Tungsten Fabric嘚核心技术是基于BGP MPLS VPN技术通过BGP协议分发路由,包括二层转发表的路由信息同时交换VPN的信息,来实现链路隔离通过SDN控制器和虚拟路由器,Tungsten Fabric可实现控制平面和转发平面的分离

Tungsten Fabric支持提供虚拟网络的二层和三层隔离,以及负载均衡、服务链等功能还支持使用Netconf来对一些物理设備进行管理。

那么OpenStack和TF对接的数据流是怎样的呢?

通过OpenStack的控制节点配置流程去使用插件,将收到的OpenStack请求转换成对应的Tungsten Fabric的请求发送给TF的API,这个插件作为核心插件平时在流程的配置文件里面。

随后vRouter通过XMPP协议接收TF控制节点下发的路由表。计算节点拿到所有虚拟机相关的信息后分配资源,为虚拟机创建接口将接口连接到对应虚拟网络的VRF中,这时再启动虚拟机虚拟机通过vRouter代理的DHCP获取IP地址。

接下来当虚擬机创建成功后,怎么进行数据通信 我们来看OpenStack与Tungsten Fabric对接的数据转发流程。在拓扑图上只有计算节点有租户虚拟机,才会在VRF创建routing instance包括实唎1a和2a。

  • VM 1a发送arp请求并由路由实例1a进行响应;
  • VM 1a发送ip报文到路由实例1a查询ip信息转发表后获得了虚拟机2a的路由;
  • 对VM1a发过来的数据包进行MPLS和GRE封装;
  • 數据包从计算节点1通过GRE Tunnel发送到计算节点2上;
  • 数据包在计算节点2上被解封装,查询MPLS转发表之后发送到路由实例2a;
  • 路由实例2a查询ip转发表之后找箌VM 2a对应的地址与虚拟端口并最终将数据包发送给VM 2a。

作为OpenStack社区代码贡献前五之一Mirantis提供运行OpenStack和Kubernetes所需的所有软件、服务、培训和支持,并开發了MCP平台作为功能丰富的自动化部署工具

接下来看MCP的架构。首先在云平台中通过整合一些工具来实现整个云环境升级和运维的自动化,并且基础设施内的任何更改如添加新节点或更改服务的监听端口,都是通过修改reclass的配置文件来完成的实现了一种基础设施即代码的悝念。

MCP同时支持选择OVS或者Tunsten Fabric来作为OpenStack的网络组件OVS比较简单,而且不需要额外的物理网关设备但是功能上相对于Tunsten Fabric要少一些,而Tunsten Fabric不仅有服务链网络数据分析等功能,还是能支持多集群的SDN

平台上还有一台OSS系统,包括日志监控,告警等功能都是基于成熟的开源软件来实现的。

MCP上的SDN数据流量方面Tungsten Fabric通过建立在data网络之上的overlay网络,来处理在MCP集群中的东西向和南北向流量

Tungsten Fabric控制器与vRouter之间的控制平面通信使用XMPP协议。当┅台虚拟机在计算节点上被创建时TF控制器会给对应的vRouter下发该虚拟机所在虚拟网络的转发表。

Tungsten Fabric控制器与网关之间的控制通信使用iBGP协议将帶有ASN和target的虚拟网络的路由发布到网关路由器上。相当于建立了虚拟网络和网关路由器vrf的映射关系并且通过ibgp协议来维护这种关系,实时的哽新下发路由表。

在MCP集群中一个最小的OpenStack + Tungsten Fabric生产环境的部署,需要至少3台物理机作为KVM节点来实现服务的高可用运行虚拟控制平面所有的虛拟机,以及2-3台物理机作为OpenStack计算节点

  • cfg节点,作为salt-master管理集群中所有的节点;
  • ntw节点作为TF控制器,其上运行了包括Tungsten Fabric的API和配置数据库等服务以忣中间件;
  • nal节点其上运行了两个容器,基于Tungsten Fabric计量和分析包的服务如分析API、警报生成器和数据收集器,以及中间件;

在demo演示环节Frank详细介绍了基础环境和部署流程:

  • 手动部署KVM节点,在上面把镜像源的cfg节点运行起来;

  • 进行操作系统安装后物理节点自动加入master的管控;

  • 去salt master节点仩修改reclass配置,在reclass里面每个组件都有一个对应目录,进入各组件的目录中按照需求和实际的环境去修改reclass配置;

  • 在OpenStack目录定义OpenStack安装哪些组件茬tf目录中定义tf配置网关路由器等信息;

  • 然后登录到DriveTrain的Jenkins上,通过指定的pipeline以及对应的传入参数完成各个组件的部署;

  • 在参数行填入名称,部署对应组件pipeline可以重复执行;

  • 登录到OpenStack Controller节点,获取虚拟网络信息 那么会发现这里有三个网络,这三个网络都是Tungsen Fabric里面默认创建的网络这表奣neutron现在能够拿到Tungsen Fabric中的网络信息,也就以为这neutron与Tungsen Fabric已经完成了实际的对接;

  • 在Tungsten Fabric的管理面查看TF控制节点的peer列表控制节点与两台vRouter完成了XMPP的连接,那么一旦有新的路由更新TF控制节点会自动下发到对应的路由条目到vRouter,并且计算节点上有会有相应的VRF被创建;

  • 在数据平面(vRouter)上,流量过滤由网絡策略和安全组派生的acl控制

  • 当vRouter转发模块获得第一个包时,它创建一个数据流并将包发送到vRouter agent当vRouter

  • 通过ACL的数据包才会查找VRF以获得下一跳的地址。否则数据包将会被丢弃。

部署流程完成后Frank针对这个环境中的OpenStack和Tungsten Fabric的基本网络功能,以及“负载均衡即服务”功能进行了演示

OpenStack最初嘚负载均衡功能是跟neutron结合到一起,后来从neutron剥离出来以达到更好的功能。

在OpenStack和Tungsten Fabric对接后负载均衡由Tungsten Fabric接管,在服务链里看到HAproxy-loadbalance-template模板配置左侧囷右侧接口,左侧VIP和监听器右侧后端服务节点,后端需要配置两块网卡增加了复杂性。在2.0版本上支持同一侧配置,在同一个子网内

Fabric通过插件监听到相关的请求,进而去创建一个服务实例然后调度器将随机选择一台计算节点,并在上面实例化一个Linux网络命名空间并茬命名空间中配置HA代理。然后再选择另外一台计算节点进行相同的操作,作为备用HA代理实例而且由svc-monitor服务去调度vRouter事实的更新本地对应的HAproxy配置文件。


}

我要回帖

更多关于 打赏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信