OpenStack Octavia
Octavia 是 OpenStack 新的 load balancer 專案,也是官方推薦的 lbaas,夠對外提供獨立而穩定的API而 neutron lbaasv2則在 Queens 版本被標為棄用。
由於此篇是由很久之前的個人紀錄搬至gitbook
內容已過時,僅供參考
因為無法處理大量的流量,也無法擁有 HA 的機制,因此將此專案獨立出來。
Octavia 透過建立 HAProxy 的虛擬機,將流量導入所指定的 member,而 HAProxy 的虛擬機的 image 是官方製作的,裡面包含了 haproxy 以及 keepalive,還有 python Flask 的 API,開啟 9443 port,讓 Octavia-worker 服務可以根據使用者所選擇的 load balancer 的 pool 和 member 等等設定,透過 API 方式,修改 HAProxy 虛擬機的設定。
Octavia 支援 Active 和 Standby,也就是建立兩台 HAProxy 虛擬機,一台為 Master,另一台為 Slave,兩個是透過 keepalive 做溝通,而 keepalive 的設定也是透過 API 來設定。
安裝步驟
以下步驟安裝至 controller 節點,版本為 Queens
建立所需資源
建立 Octavia 使用者和群組
# addgroup --system octavia
# adduser --system octavia octavia --home /var/lib/octavia 建立 octavia 資料夾
# mkdir /var/lib/octavia /etc/octavia /var/cache/octavia /var/log/octavia
# chmod 755 /var/lib/octavia /etc/octavia /var/cache/octavia /var/log/octavia
# chown -R octavia:octavia /var/lib/octavia /etc/octavia /var/cache/octavia /var/log/octavia安裝 octavia,如果要安裝 Queens 版的,版本為 2.0.3
新增 octavia 使用者
新增 octavia role 權限
新增 octavia 服務
新增 octavia API endpoints
新增 octavia role
建立 CA 證書 資料夾
Clone github Octaiva 專案,裡面已經有建立 CA 證書的腳本
設定 CA 密碼,此範例為 openstack,並取代腳本內預設密碼後,執行腳本
複製到 /etc/octavia/certs
下載 amphora-haproxy image,並上傳
建立 flavor
此範例為第三種方式,先建立 neutron 內網
建立 router,並接上內外網
在 controller 新增路由,請先查看 lb-router 所拿到的 IP,然後設定 172.16.0.0/24 都經由此 router IP,dev 則指定外網的網卡
設定 service project quota 數為 -1
建立 Octavia VM 的 security group,9443 為 API 的 Port
建立 keypair ,用來 ssh 進 haproxy VM 除錯用的
Config 設定
編輯 /etc/octavia/octavia.conf, IP、帳號、密碼請自行更改,下方有更進一步說明
參數說明:
[certificates] 內的 ca_private_key_passphrase 就是建 CA 時所輸入的密碼
[controller_worker]
amp_flavor_id: 請填入剛剛建立的 flavor ID,haproxy 的 VM 為此規格
amp_boot_network_list: haproxy 的 VM 會建在此網段下,填入 network ID
loadbalancer_topology: 可以設定 haproxy 的 VM 是否為 HA 模式,選項為 ACTIVE_STANDBY 或 SINGLE,選擇 ACTIVE_STANDBY 會建立 2 個 VM,並透過 keepalived 來實作 HA
修改 /etc/neutron/neutron.conf,增加以下
新增 /etc/neutron/neutron_lbaas.conf
建立資料庫
建立 Octavia 資料庫,密碼請自行更換
建立 Octavia 服務設定
建立服務,以利透過 service 指令啟動 Octavia 建立 Octavia wsgi API 服務,新增 /etc/apache2/sites-available/octavia-api.conf
建立 octavia-health-manager 服務,新增 /lib/systemd/system/octavia-health-manager.service
建立 octavia-housekeeping 服務,新增 /lib/systemd/system/octavia-housekeeping.service
建立 octavia-worker 服務,新增 /lib/systemd/system/octavia-worker.service
啟動服務
Apache2 啟用 Octavia api
啟用 Octavia 相關服務
重啟服務
安裝 Octavia dashboard
安裝 dashboard,Queens 版為 1.X.X,Rocky 版為 2.X.X
複製所需檔案
Django 更新
重啟 Apache2
解說
建立了兩台 web server,並建立了 active standby 的 loadbalancer, 然後 loadbalancer 的 VIP 建在跟 web server 一樣地網段下,連接之後,在 user 端只會看到 loadbalancer 的資訊,不會看見 2 台 haproxy VM
登入 octavia 使用者,可以看到 2 台 haproxy VM 建在 service project,其中一台為 Master,另一台為 Backup
VIP 為 private 網段(與 web server 同段),將兩者網路拓樸組合,就變成以下架構
VIP 為新建的 vip 網段(與 web server 不同段),將兩者網路拓樸組合,就變成以下架構

Last updated
Was this helpful?