`
lynnkong
  • 浏览: 303558 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Grizzly中的LoadBalancer初步分析

阅读更多

Grizzly中的LoadBalancer初步分析

 

本博客欢迎转发,但请保留原作者信息(@孔令贤HW)!内容系本人学习、研究和总结,如有雷同,实属荣幸!
 

Grizzly版本中,Quantum组件引入了一个新的网络服务:LoadBalancerLBaaS),服务的架构遵从Service Insertion框架(也是G版引入)。LoadBalancer为租户提供到一组虚拟机的流量的负载均衡,类似于AmazonELB。昨天(2013.1.20Grizzly_2放出,实现10个BP,修复82个bug。大致过了下代码,目前我能识别到的更新如下:
1.
增加servicetype扩展(service insertion实现的前提条件),表示一种网络服务类型(LBFWVPN等),为了向后兼容,载入时会创建默认的servicetype
2.
安全组功能从Nova移植到了Quantum
3.
增加portbinding扩展,给port增加了三个属性:binding:vif_typebinding:host_idbinding:profile(这个属性是Cisco专用)
4. Ryu
插件支持provider扩展
5.
增加loadbalancer扩展以实现负载均衡功能
6.
新增一个Quantum插件(Big Switch

 

1.       基本流程

租户创建一个pool,初始时的member个数为0
租户在该pool内创建一个或多个member
租户创建一个或多个
health monitor
租户将health monitorspool关联

租户使用pool创建vip

2.       概念

l  VIP
可以把一个VIP看做是具有一个虚拟IP地址和指定端口的负载均衡器,当然还有其他的属性,比如均衡算法,协议等。

l  Pool
一个pool代表一组逻辑设备(通常是同质设备),比如web服务器。负载均衡算法会选择pool中的某一member接收进入系统的流量或连接。目前一个VIP对应一个Pool

l  Pool member
代表了后端的一个应用服务器。

l  Health monitor
一个health monitor用来检测poolmember的状态。一个pool可对应多个health monitor。有四种类型:

PING
TCPHTTPHTTPS。每种类型就是使用相应的协议对member进行检测。

l  Session Persistence
也就是一般我们听到的“Session粘滞”,是规定session相同的连接或请求转发的行为。目前支持三种类型:

SOURCE_IP
:指从同一个IP发来的连接请求被某个member接收处理;
HTTP_COOKIE
:该模式下,loadbalancer为客户端的第一次连接生成cookie,后续携带该cookie的请求会被某个member处理
APP_COOKIE
:该模式下,依靠后端应用服务器生成的cookie决定被某个member处理

l  Connection Limits
这个特性主要用来抵御DoS攻击

对象关系模型:

 

3.       架构图


 
截止到2013.1.22号,Grizzly_2版本仅实现了LBaaS Plugin部分,LBaaS AgentScheduler/Device Management正在开发。
如上图,可见LBaaSQuantumPlugin的架构基本一致,将上层的逻辑概念与底层的实现分离。主要模块如下:
1. LBaaS Quantum Extension
:处理REST API调用
2. LBaaS Quantum AdvSvc Plugin
:核心Plugin之一。QuantumFolsom版本仅支持一个Plugin,但在实现了Service Insertion之后可以运行多个服务的不同Plugin共存。
3. LBaaS Agent
:同Quantum Agent一样,是部署在各个计算节点的独立进程
4. Driver
:与实际的设备打交道,实现逻辑模型

4.       Scheduler/Device Management

Scheduler/Device Management是一个单独的Quantum组件,其功能主要有两个方面:
1.
实现服务的逻辑模型
2.
为了实现高级服务(Advanced Service),比如load balancers, firewalls, vpn gateways等而提供面向租户的扩展API

以创建Pool为例,流程图如下:


LBaaS Plugin
收到创建pool的请求;
LBaaS Plugin
DB中新增记录,返回pool_id
LBaaS Plugin
调用Scheduler,传递service_type, pool_id, pool等参数;
Scheduler
选择满足条件的device,保存devicepool的映射,将device_info返回;
Agent
调用DriverDriverdevice接入租户网络,实现逻辑模型;
Agent
LBaaS通知,更新PoolDB中的状态;

 

 本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!

  • 大小: 70.1 KB
  • 大小: 48.8 KB
  • 大小: 86.3 KB
分享到:
评论

相关推荐

    grizzly

    标签中包含“源码”和“工具”,这表明讨论的内容可能涉及到Grizzly的源代码分析,以及如何将Grizzly用作开发工具。源码分析对于理解框架的工作原理、进行定制化开发或调试至关重要。而作为工具,Grizzly可以方便...

    grizzly-framework-monitoring-2.3.14.zip

    《Grizzly 框架监控:深入理解 JMXUtils 及其在开源项目中的应用》 Grizzly 是一个由 Sun Microsystems 开发并维护的开源框架,主要用于构建高性能、灵活的网络应用服务器。它提供了一组丰富的组件和服务,使得...

    grizzly-websockets-2.3.4.zip

    Grizzly WebSockets 2.3.4 和 Riak PB(Protocol Buffers)是两个在开源社区中广泛使用的工具,它们各自扮演着关键的角色,共同构建出高性能的数据交互解决方案。 首先,我们来深入理解Grizzly WebSockets。Grizzly...

    Grizzly_Architecture

    该框架基于Java NIO技术,旨在为开发者提供易于使用的API,同时隐藏了NIO编程中的复杂性。Grizzly最初作为GlassFish应用服务器的一部分而被开发出来,用于处理前端Web请求。随着项目的成熟和发展,Grizzly也被广泛...

    Ubuntu13.04安装Grizzly版本的OpenStack

    在本文中,我们将详细介绍如何在Ubuntu 13.04上安装Grizzly版本的OpenStack。OpenStack是一个开源云计算平台,用于构建公共云和私有云。Grizzly是OpenStack的一个重要版本,提供了多种服务,如计算、存储和网络管理...

    Grizzly 2.3.17 API文档CHM版

    2014年10月24日最新Grizzly 2.3.17 API文档CHM版

    grizzly-http-webserver-1.9.59.zip

    通过分析这些代码,开发者可以学习如何将Atmosphere集成到Grizzly中,创建实时Web应用。同时,这个版本可能修复了一些已知问题,提升了整体的稳定性和兼容性。 总的来说,`grizzly-http-webserver-1.9.59.zip`和...

    grizzly-http-server-monitoring-2.3.9.zip

    监控组件允许开发者实时查看和分析服务器的运行状态,如请求处理速度、资源消耗等,从而优化系统性能和稳定性。 【描述】"Play2框架的Play Velocity插件" Play2是一个现代化的、基于Java和Scala的Web开发框架,以...

    grizzly-websockets-chat-2.3.zip

    标题 "grizzly-websockets-chat-2.3.zip" 暗示了这是一个使用Grizzly框架实现的WebSocket聊天应用的版本2.3。Grizzly是Java的一个开源网络应用框架,特别适用于构建高性能、轻量级的服务器端应用。WebSocket协议则是...

    在Glassfish v2ur1 中测试grizzly comet chat demo

    【标题】"在Glassfish v2ur1 中测试grizzly comet chat demo"涉及的主要知识点是Grizzly框架、Comet技术以及Glassfish应用服务器的使用。Grizzly是一个开源的网络应用框架,由Java开发,用于构建高性能、可扩展的...

    grizzly-http-samples-2.3.13.zip

    了解这些内容后,开发者不仅可以学习到Grizzly HTTP服务器和Lift Web框架的基本用法,还能深入理解如何将jQuery库集成到Scala的Web应用中,以及如何参与和贡献开源项目。这对于提升Java和Scala开发者的技能,尤其是...

    grizzly-http-servlet-extras-2.3.8-beta1.zip

    在IT行业中,单元测试作为软件开发的重要环节,确保了代码的质量和稳定性。本文将深入探讨两个关键的开源项目,分别是“grizzly-http-servlet-extras-2.3.8-beta1”和“portlettester”,它们分别在Servlet和Portlet...

    grizzly-http-ajp-2.3.10.zip

    Grizzly 是一个开源的网络应用框架,由 Oracle 公司开发,主要用于构建高性能、轻量级的网络服务器和客户端。AJP(Apache JServ Protocol)是 Apache 服务器与应用服务器之间通信的一种协议,常用于负载均衡和反向...

    grizzly-core-2.1.4.jar 下载

    Dubbo的核心jar包,grizzly-core-2.1.4.jar 下载,源码版本为2.5.4开发版

    grizzly-http-server-2.2.21.zip

    开源项目意味着Grizzly HTTP Server和MessageServiceClient的源代码都是公开的,可以在社区中自由分发、修改和使用。这种开放性鼓励了开发者之间的协作,促进了项目的持续改进和创新。用户可以查看源代码,了解其...

    grizzly初探

    通过分析 `grizzlyDemo` 中的代码,我们可以进一步了解 Grizzly 如何工作,以及如何自定义和扩展其功能。 总之,Grizzly 是一个强大且灵活的框架,利用 Java NIO 实现高效的网络服务。对于需要处理大量并发连接的...

    Go-Grizzly允许您在GO中使用集合而不用泛型

    Grizzly是一个专门为Go语言设计的集合库,它提供了类似Java或其他支持泛型的语言中的功能,如Map、Filter、Find等,使开发者能在不依赖泛型的情况下更方便地操作数据。 Grizzly库的核心理念是提供一种类型安全的...

Global site tag (gtag.js) - Google Analytics