Neutron LBaaS Service(1)—— Neutron LBaaS Service基本知识

在OpenStack Grizzly版本中,Quantum组件引入了一个新的网络服务:LoadBalancer(LBaaS),服务的架构遵从Service Insertion框架。LoadBalancer为租户提供到一组虚拟机的流量的负载均衡,其基本实现为:在neutron-lbaas-agent中生成Haproxy的配置文件然后启动Haproxy。

Neutron LBaaS Service Architecture

LBaaS主要由以下几个模块构成,如下图所示

  • Loadbalancer 处理Restful API
  • LoadBalancerPlugin,This class manages the workflow of LBaaS request/response. Most DB related works are implemented in class loadbalancer_db.LoadBalancerPluginDb
  • Scheduler: loadbalancer_pool_scheduler_driver = neutron.services.loadbalancer.agent_scheduler.ChanceScheduler 负责为vip分配相应的agent
  • lbaas-agent 接收plugin消息,并将请求转发给device_driver(HaproxyNSDriver)执行
  • HaproxyNSDriver 实现负载均衡的device driver,生成Haproxy的配置文件然后启动Haproxy

LBaaS数据模型

如上图所示,数据模型主要由Pool,VIP,Member,HealthMonitor等四个对象组成。

  • 处在核心位置的是Pool(我倾向于把它命名成loadballancer), 它代表一个负载均衡器。
  • 一个负载均衡器拥有一个VIP,也就是虚拟IP。虚拟IP中的虚拟其实是相对后面的Member而言,也就是说这个VIP不固定在任何一个Member上。用户访问这个VIP,有时由这个成员提供服务,有时由那个成员提供服务。
  • Member是后台提供服务的服务器。
  • HealthMonitor用来监控和检查后台服务器的联通情况。当检查到某个服务器不能使用时,负载均衡器就不会用它来向用户提供服务。一个pool可对应多个health monitor。有四种类型:PING、TCP、HTTP、HTTPS。每种类型就是使用相应的协议对member进行检测。

除了以上四个对象,Session Persistence和Connection Limits这两个特性也比较重要:

  • Session Persistence规定session相同的连接或请求转发的行为。目前支持三种类型:
    • SOURCE_IP:指从同一个IP发来的连接请求被某个member接收处理;
    • HTTP_COOKIE:该模式下,loadbalancer为客户端的第一次连接生成cookie,后续携带该cookie的请求会被某个member处理
    • APP_COOKIE:该模式下,依靠后端应用服务器生成的cookie决定被某个member处理
  • Connection Limits 这个特性主要用来抵御DDoS攻击

LBaaS部署方法

1. DevStack中,增加 ENABLED_SERVICES+=,q-lbaas 选项即可;

2. RDO部署: packstack --allinone --neutron-lbaas-hosts=192.168.1.10 (具体步骤参考:http://openstack.redhat.com/LBaaS)

3. 也可以使用Openstack Heat来部署LBaaS,具体见http://blog.csdn.net/lin_victor/article/details/23060467

For LBaaS to be configured properly, various configuration files must have the following changes.

The service_provider parameter should be set in /usr/share/neutron/neutron-dist.conf:

service_provider = LOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default

The service_plugin should be set in /etc/neutron/neutron.conf:

service_plugins = neutron.services.loadbalancer.plugin.LoadBalancerPlugin

The interface_driver and device_driver should be set in /etc/neutron/lbaas_agent.ini. Since the load balancer will be haproxy, set the device_driver accordingly:

device_driver = neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver

The interface_driver will depend on the core L2 plugin being used.

For OpenVSwitch:

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver

For linuxbridge:

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

If the above configuration files were changed manually, restart the neutron-server service and neutron-lbaas-agent service.

LBaaS使用方法

基本的使用步骤为:

  • 租户创建一个pool,初始时的member个数为0;
  • 租户在该pool内创建一个或多个member
  • 租户创建一个或多个health monitor
  • 租户将health monitors与pool关联
  • 租户使用pool创建vip

UnitedStack博客中整理一个详细的使用步骤:https://www.ustack.com/2013/10/08/neutron_loadbalance/

参考文献

https://wiki.openstack.org/wiki/Neutron_LBaaS_Arch

https://wiki.openstack.org/wiki/Neutron/LBaaS/Architecture/Scheduler

http://openstack.redhat.com/LBaaS

https://www.ustack.com/2013/10/08/neutron_loadbalance/

http://blog.csdn.net/matt_mao/article/details/12982963

http://blog.csdn.net/lynn_kong/article/details/8528512

Neutron LBaaS Service(1)—— Neutron LBaaS Service基本知识

时间: 2024-08-28 22:18:41

Neutron LBaaS Service(1)—— Neutron LBaaS Service基本知识的相关文章

How to Remove A Service Entry From Win10 Service List

.warnbanner { width: 600px; background-color: #FFEFCE } .warnbanner.border { border: 0px } .warnbanner .title { position: relative; height: 24px; line-height: 24px; background-color: #FF9900; text-align: center; vertical-align: middle } .warnbanner .

svcs (service status) 和 svcadm (service administration) 使用

1. svcs  显示服务实例的状态信息 svcs - report service status  显示服务状态命令 DESCRIPTION The svcs command displays information about service instances as recorded in the service configuration repository. 该命令显示记录在服务配置库中的服务实例信息 The first form of this command prints one

Web Service(1):用Web Service实现客户端图片上传到网站

由于项目需要,通过本地客户端,把图片上传到网站.通过webservice. 这是客户端代码: 1 private void btnimg_Click(object sender, EventArgs e) 2 { 3 this.yanzheng(); 4 mylocalhost.MySoapHeader myheader = new mylocalhost.MySoapHeader();///这是soapheader 5 mylocalhost.MyWebService myService =

WCF Failed to invoke the service. Possible causes: The service is offline or inaccessible

今天写WCf 时遇到如下报错: 调试过程发现,各个过程都无异常,但是返回给调用端数据时出现如下错误. Failed to invoke the service. Possible causes: The service is offline or inaccessible; the client-side configuration does not match the proxy; the existing proxy is invalid. Refer to the stack trace

【起航计划 033】2015 起航计划 Android APIDemo的魔鬼步伐 32 App->Service->Foreground Service Controller service使用,共享service,前台服务,onStartCommand

Android系统也提供了一种称为“Service”的组件通常在后台运行.Activity 可以用来启动一个Service,Service启动后可以保持在后台一直运行,即使启动它的Activity退出或是切换到别的应用Service也能保持运行状态. Service 可以以两种形式存在: Started 当一个如Activity使用startService()来启动一个Service,一旦Service启动后,就不受启动它的Activity控制, 可以在后台长期运行,通常这种Service在后台

Web Service(0):用Web Service实现两个整数运算

最近,项目开发中需要用到Web Service.自己在网上搜集资料.自己做了一个小例子,用来加深自己对Web Service理解. 概念:Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信.共享而提出的一种接口. Web Service所使用的是Internet上统一.开放的标准,如HTTP.XML.SOAP(简单对象访问协议).WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用.注:SOAP协议(Simple Objec

com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.254.7.50 access service com.qingmu.core.service.ContentService from registry 192.168.200.128:2181 use dubbo version 2.8.4

Could not complete request com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.254.7.50 access service com.qingmu.core.service.ContentService from registry 192.168.200.128:2181 use dubbo version 2.8.4, Please check registry access list (whitelist/

关于dubbo调度时出现Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method insertTestTb in the service cn.cuibusi.core.service.TestTbService.的解决办法

在用dubbo跨项目调度service时出现如下错误: 错误原因:pojo没有实现序列化 今天刚好复习了序列化,在分布式环境下,当进行远程通信时,无论是何种类型的数据,都会以二进制的形式在网络上进行传送.序列化是一种将对象,以一连串的字节描述的过程,用于解决在对对象流进行读写时所引发的问题. 解决方法:在pojo实现序列化接口即可

Service概述 二使用Service的示例

一.Service概述 API中关于Service的描述如下: A Service is an application component that can perform long-running operations in the background and does not provide a http://brand.yoka.com/cosmetics/boss/commentreply19139863.htm http://brand.yoka.com/cosmetics/boss

Android Bound Service(一) ----- Extending Binder Service(进程内绑定Service的简单例子)

ref:http://developer.android.com/guide/components/bound-services.html? 前言 重新学习这一项技术,主要的原因,是因为以前没有好好的学,那时总觉得作品能动,能完成工作就好了,而这种得过且过的想法,大大地影响了我的技术程度,也因此,在这个这个博客里,有许多的复习心得.有幸得到一位前辈的指导,指出,若只是学习,而无实际应用,这样进步会较少,因此,最好要多看源码,并且自己多尝试多实践,这样学习一万小时,应该能有小进步,因此开始了 Bo