LBass之(三)Neutron LBaaS Service基本知识
来源:互联网 发布:c语言中怎样定义函数 编辑:程序博客网 时间:2024/06/11 23:59
在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:defaultThe service_plugin should be set in /etc/neutron/neutron.conf:service_plugins = neutron.services.loadbalancer.plugin.LoadBalancerPluginThe 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.HaproxyNSDriverThe interface_driver will depend on the core L2 plugin being used.For OpenVSwitch:interface_driver = neutron.agent.linux.interface.OVSInterfaceDriverFor linuxbridge:interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriverIf 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
- LBass之(三)Neutron LBaaS Service基本知识
- Neutron LBaaS Service基本知识
- LBaas之(四)Neutron/LBaaS/API
- LBaas之(五) Liberty版本Neutron LBaas实现分析
- neutron之lbaas v2
- Neutron印象6: LBaaS Service
- neutron之负载均衡LBaas
- LBaas只(二) Neutron中的L4/L7高级服务框架与LBaaS
- OpenStack LBaaS之LBaaS
- Neutron LBaaS V1 (by quqi99)
- Liberty版本Neutron LBaas学习
- 云安全之Neutron 是如何实现负载均衡器虚拟化的 [LBaaS V1 in Juno]
- LBaas之(一)官网配置
- VM packet flow with neutron-lbaas-agent
- OpenStack网络迷宫:Neutron以及LBaaS
- neutron基本知识与图解
- OpenStack LBaaS之Octavia
- LBaas之(六)python-neutronclient架构分析
- thinpad X1安装office2016提示激活
- 网页开发中文本编辑器UEditor的使用
- CentOS下Docker的安装
- 关于HTML标签 和属性的相关问题
- Weblogic多应用部署在一个域下导致session冲突
- LBass之(三)Neutron LBaaS Service基本知识
- Redis集群搭建与简单使用
- 基本VLAN特性配置与管理——3
- Python时间格式化
- 大整数类BigInteger
- 数据库三范式
- 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- PostgreSQL数据类型
- Meshlab读取三维点云、三维点云重建以及三维点云法向量计算