上一節我們已經配置並測試 LBaaS,今天重點分析 Neutron 是如何用 Haproxy 來實現負責均衡的。
在控制節點上運行 ip netns,我們發現 Neutron 創建了新的 namespace qlbaas-xxx。
該 namespace 對應我們創建的 pool “web servers”。 其命名格式為 qlbaas-< pool ID>。
可以通過 ip a 查看其設置。
VIP 172.16.100.11 已經配置在 namespace interface 上。 在 subnet 的 Port 列表中也可以找到該 interface 的相應配置。
對於每一個 pool,Neutron 都會啟動一個 haproxy 進程提供 load balancering 功能。 通過 ps 命令查找 haproxy 進程:
haproxy 配置文件保存在 /opt/stack/data/neutron/lbaas/< pool ID>/conf 中。 查看 “web servers” 的配置內容:
可以看到: 1. frontend 使用的 HTTP 地址為 VIP:80 2. backend 使用的 HTTP 地址為 172.16.100.10:80 和 172.16.100.9:80 3. balance 方法為 roundrobin
這些內容與我們前面的配置一致。
以上就是 Neutron 實現 LBaaS 的理。
下一節我們討論如何通過 floating IP 訪問 VIP。