lbaas分析笔记

栏目: 编程工具 · 发布时间: 5年前

内容简介:今年的云网方案,涉及很多lb的需求,大多数是客户亟需的而社区目前不支持的。针对类似需求,我们首要考虑能否通过其它方式去满足而不改动社区原有实现,其次才是考虑如何扩展并兼容社区实现。当然有的方案也会考虑能否向社区提交,话说回来了,搞开源本来就要结合实际需求来做,过于私有化的方案也就违背了开源的初心。说回lbaas,目前社区已经将其独立出neutron,成立新的项目当然还需要配置相应的service_provider(neutron里对理解provider这个概念很重要)。比如f5的配置:我们看到,这里的pr

前言

今年的云网方案,涉及很多lb的需求,大多数是客户亟需的而社区目前不支持的。针对类似需求,我们首要考虑能否通过其它方式去满足而不改动社区原有实现,其次才是考虑如何扩展并兼容社区实现。当然有的方案也会考虑能否向社区提交,话说回来了,搞开源本来就要结合实际需求来做,过于私有化的方案也就违背了开源的初心。说回lbaas,目前社区已经将其独立出neutron,成立新的项目 octavia 。即便如此,当前很多云厂商,依然还是沿用的lbaas v1或v2。很多lb厂商如f5,a10还是以lbaas的插件为主,所以本文简要分析lbaas相关知识点。

lbaas plugin

lbaas的功能入口是它的restAPI。厂商们针对api开发相应的lbaas plugin,并且要对应到设备上的具体功能。简单阐述以下lbaas的几个组件的关系:

lbaas分析笔记

api和lbaas plugin服务是随neutron-server一起跑在控制节点上;agent是跑在网络节点上的。neutron-server接收到restapi的请求后,会触发lb的插件处理body,插件会选取lb的agent,将相应的请求通过rpc发送给agent,agent处理消息时会调用设备的driver。而device driver就是具体与设备打交道的组件。插件部分没什么好说的,接触的几个厂商都是沿用的lb社区的插件。配置在/etc/neutron/neutron.conf:

service_plugins = [already defined plugins],neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2 

当然还需要配置相应的service_provider(neutron里对理解provider这个概念很重要)。比如f5的配置:

service_provider = LOADBALANCERV2:F5Networks:neutron_lbaas.drivers.f5.driver_v2.F5LBaaSV2Driver:default

我们看到,这里的provider路径指向的是 F5LBaaSV2Driver 。这个 driver 可以理解是调用f5-agent服务的插件驱动service driver,注意区别前文提到的 device driver 。我们也可以看lb的代码里,插件在创建资源的时候,是调的 self._call_driver_operation 这个方法,从方法名看出,调的是driver,也就是刚刚讲的这个driver。

lbaas agent

这部分分析agent的处理流程。在此之前还是先分析一下前文提到的service_provider。参照f5的社区代码,他们的service driver在处理创建lb的开始阶段,会通过 _schedule_agent_create_service 选取一个agent,因此是支持多agent的(有个可用域的概念)。除此之外,还做了一个特殊处理,那就是将vip的端口类型改为了裸金属 baremetal 。对于这样的处理,第三方的ml2处理port需要特别注意,建议增加判断 device_owner 为f5的特殊流程。

lbaas agent的处理主要就是调用device driver进行资源的增删改,以及同步资源的状态status。配置device driver的地方在/etc/neutron/lbaas_agent.ini:

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver 

类似f5的配置在/etc/neutron/services/f5/f5-openstack-agent.ini:

f5_bigip_lbaas_device_driver = f5_openstack_agent.lbaasv2.drivers.bigip.icontrol_driver.iControlDriver 

可以看得出来,社区的方案里,agent与plugin的处理是异步进行的。driver的处理流程就不分析了,各家厂商的处理都不同。

lbaas方案

这里就不说设备的组网方案了,单臂双臂等等。针对lb的纳管方案,目前就是两种,分别是云平台纳管和sdn控制器纳管。云平台纳管的情况,lb的插件和agent的部署就直接对应为设备的,类似f5,那么这种情况下,lb做不到的引流等相关操作的话,就需要其它方案补齐,比如额外的网络规划;sdn纳管lb设备的情况,插件与agent都对应sdn的,这种情况下,云上就不关心具体的引流情况了,这时候sdn就需要做到自动化部署lb资源。而实际部署的时候,真正复杂的地方在于,往往会涉及到sdn与云和lb插件三者的交互。所以,每部分摊开来都看似容易,但是融合在一起形成方案的时候,一定要考虑到各种细节。

个人分析,欢迎指正,若转载请注明出处!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP Hacks

PHP Hacks

Jack Herrington D. / O'Reilly Media / 2005-12-19 / USD 29.95

Programmers love its flexibility and speed; designers love its accessibility and convenience. When it comes to creating web sites, the PHP scripting language is truly a red-hot property. In fact, PH......一起来看看 《PHP Hacks》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码