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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM