Grizzly中的LoadBalancer初步分析
本博客欢迎转发,但请保留原作者信息(@孔令贤HW)!内容系本人学习、研究和总结,如有雷同,实属荣幸!
在Grizzly版本中,Quantum组件引入了一个新的网络服务:LoadBalancer(LBaaS),服务的架构遵从Service Insertion框架(也是G版引入)。LoadBalancer为租户提供到一组虚拟机的流量的负载均衡,类似于Amazon的ELB。昨天(2013.1.20)Grizzly_2放出,实现10个BP,修复82个bug。大致过了下代码,目前我能识别到的更新如下:
1. 增加servicetype扩展(service insertion实现的前提条件),表示一种网络服务类型(LB,FW,VPN等),为了向后兼容,载入时会创建默认的servicetype
2. 安全组功能从Nova移植到了Quantum
3. 增加portbinding扩展,给port增加了三个属性:binding:vif_type,binding:host_id,binding:profile(这个属性是Cisco专用)
4. Ryu插件支持provider扩展
5. 增加loadbalancer扩展以实现负载均衡功能
6. 新增一个Quantum插件(Big Switch)
1. 基本流程
租户创建一个pool,初始时的member个数为0;
租户在该pool内创建一个或多个member
租户创建一个或多个health monitor
租户将health monitors与pool关联
租户使用pool创建vip
2. 概念
l VIP
可以把一个VIP看做是具有一个虚拟IP地址和指定端口的负载均衡器,当然还有其他的属性,比如均衡算法,协议等。
l Pool
一个pool代表一组逻辑设备(通常是同质设备),比如web服务器。负载均衡算法会选择pool中的某一member接收进入系统的流量或连接。目前一个VIP对应一个Pool。
l Pool member
代表了后端的一个应用服务器。
l Health monitor
一个health monitor用来检测pool内member的状态。一个pool可对应多个health monitor。有四种类型:
PING、TCP、HTTP、HTTPS。每种类型就是使用相应的协议对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 Agent和Scheduler/Device Management正在开发。
如上图,可见LBaaS与QuantumPlugin的架构基本一致,将上层的逻辑概念与底层的实现分离。主要模块如下:
1. LBaaS Quantum Extension:处理REST API调用
2. LBaaS Quantum AdvSvc Plugin:核心Plugin之一。Quantum在Folsom版本仅支持一个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,保存device和pool的映射,将device_info返回;
Agent调用Driver,Driver将device接入租户网络,实现逻辑模型;
Agent向LBaaS通知,更新Pool在DB中的状态;
本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
相关推荐
sunoAI确实厉害
12-7平面光栅衍射
黄昏失焦7话 完结+番外.dzip
您可以按照以下步骤下载、配置和使用Elasticsearch数据库: 下载Elasticsearch数据库 访问Elasticsearch官方网站:https://www.elastic.co/downloads/elasticsearch 根据您的操作系统选择合适的版本并下载安装包(通常为zip或tar.gz格式)。 配置Elasticsearch数据库 解压下载的安装包到您想要安装Elasticsearch的目录。 进入Elasticsearch的config目录,找到elasticsearch.yml文件,用文本编辑器打开。 根据您的需求修改elasticsearch.yml文件中的配置,如端口、集群名称、数据存储路径等。 保存并关闭elasticsearch.yml文件。 启动Elasticsearch数据库 打开命令行工具,切换到Elasticsearch的bin目录。 运行以下命令启动Elasticsearch: ./elasticsearch 等待一段时间,直到Elasticsearch成功启动。您可以通过访问http://localhost:9200来验证是否正常
Mines Cleaner Setup X64 v1.3.exe
智慧城市运营智慧交通总体详细设计方案[532页]
深圳广田集团股份有限公司盈利能力分析.docx
5-2.PPT
关于企业数字化转型的认识两个材料.pptx
Python搜索文件并复制到指定文件夹
2024【2021-2023年】理科报考及录取统计.pdf.apk
Python项目开发实战:工厂库存管理系统(案例教程实例课程).pdf
Python项目开发实战:视频监控系统(案例教程实例课程).pdf
本征柔性有机电子器件的研究进展-史文康
ROS机器人开发深度学习与神经网络 随着机器学习和深度学习技术的发展,机器人开发领域也在不断发展。ROS(Robot Operating System)是一个开源的机器人操作系统,它提供了一组工具和库,以便开发者可以快速构建和部署机器人系统。深度学习和神经网络技术可以帮助机器人更好地理解和处理环境信息,从而提高机器人的性能和可靠性。本文将介绍如何使用ROS进行机器人开发,并结合深度学习和神经网络技术来提高机器人的性能
创建一个完整的HTML+JS+CSS项目源代码并详细解释每一部分的内容确实是一个挑战,尤其是在限制为5000字的篇幅内。不过,我可以为你提供一个简单的项目示例,并尽量详细地解释每一部分。这个项目将是一个简单的待办事项列表应用,它允许用户添加、删除和标记待办事项为完成或未完成。 项目结构 /todo-app /css - styles.css /js - app.js - index.html HTML (index.html) html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Todo App</title> <link rel="stylesheet" href="css/styles.css"> </head> <body>
使用SQLSEVER完成SQL高级查询的应用
Fundamentals of Data Engineering-O'ReillyMedia.pdf
A2试卷(B)卷答案(16开)
电工电子A2 第十章