跳转到: 导航, 搜索

Neutron/LBaaS/LBaaS+and+Libra+integration+Draft

< Neutron‎ | LBaaS

简介

此页面记录了我们关于将 Libra 作为 Neutron LBaaS 服务后端的设计初稿。这是一个正在进行中的工作。

Neutron LBaaS 的背景信息

https://wiki.openstack.org/wiki/Neutron/LBaaS https://wiki.openstack.org/wiki/Neutron/LBaaS/HowToRun https://wiki.openstack.org/wiki/Neutron/LBaaS/LoadbalancerInstance/Discussion https://wiki.openstack.org/wiki/Neutron/LBaaS/requirements

Libra 的背景信息

https://github.com/stackforge/libra http://libra.readthedocs.org/en/latest/index.html

逻辑图

Neutron LBaaS Libra arch.gif

托管服务的使用案例/用户故事

  • 这些是标准案例之外的使用案例(稍后将添加有关标准案例的更多详细信息)
    • 与计量、日志、Horizon、监控、自动配置备份等的集成。
  • 负载均衡服务正在监控各个租户使用的负载均衡器的运行状况,并在负载均衡器发生故障或无响应时自动执行故障转移。
    • 服务在创建负载均衡器时自动设置监控。无需用户交互。
      • 故障转移是通过从备用负载均衡器池中分配新的负载均衡器来完成的。这意味着
      • 租户无需为额外的负载均衡器付费即可在其设置中实现高可用性,
      • 负载均衡器的替换速度很快,因为我们不是创建新的负载均衡器,而是分配来自现有池的负载均衡器。
    • 该服务维护着给定大小的备用负载均衡器池。

未解决的问题

  • 租户和 lbaas 之间的单个 eth1 接口/连接是否可以支持所有传入数据以及与/从租户私有网络传出的数据?
  • Neutron LBaaS 的调度器是否可以从备用 HA proxy 负载均衡器池中调度 HA proxy 负载均衡器?这将包括 1. 从池中分配 HA proxy 负载均衡器和 2. 将其附加到租户 A 网络的 eth1 端口? enikanorov__> sballe: 目前的调度选择代理; enikanorov__> 代理无论如何都会生成新的进程

一些初步想法

这些是我对如何实现此目的的初步想法。仍然有很多需要完善的地方。

neutron subnet-list (获取私有子网的 UUID)

步骤 1:租户 1 创建附加到特定子网的池 <pool-name> <subnet-id>

neutron lb-pool-create --lb-method ROUND_ROBIN --name mypool --protocol HTTP --subnet-id <subnet-id>

  • lp-pool-create API 调用转到 Neutron API 服务器 (subnet_id)
    • Neutron 在租户 A 的私有网络上创建 eth1 端口
    • Libra 从池中分配 LB 并将其附加到租户 A 私有网络上的 eth1 端口。LBaaS 租户需要具有管理员权限,或者我们可以使用 Trusts。
      • eth0 用于 Libra 控制网络
      • eth1 用于租户 A 私有网络。
      • Libra 自动设置健康监控 – 需要深入研究这一点,并了解使用 Libra 或 Neutron LBaaS 监控功能之间的权衡。
  • 请求“转发”到 Libra API 服务器以从池中分配 LB,从 VIP 池中分配 VIP(谁拥有 VIP 池?Neutron 或 Libra)

步骤 2:租户 1 创建分配给池的 VIP <vip-name> <subnet-id> <pool-name>

neutron lb-vip-create --name myvip --protocol-port 80 --protocol HTTP --subnet-id <subnet-id> mypool

  • 分配从 Libra 分配的 VIP?

步骤 3 :租户 1 创建成员(使用 server1 和 server2 的 IP 地址)并将它们添加到池中

neutron lb-member-create --address <server1-ip> --protocol-port 80 mypool neutron lb-member-create --address <server2-ip> --protocol-port 80 mypool

用例 1

* A web request would come in via the external network through Tenant A' router and private network and access the LB which will load balance requests to VM1 and VM2.

实现图

这是一个正在进行中的工作

创建、删除等 API 调用的泳道图

这是一个正在进行中的工作