Heat Auto scaling

說明

  • 要使用 Auto scaling ,需要安裝以下 project :

    • ceilometer

    • gnocchi

    • aodh

    • heat

  • 透過 heat 的 template 來選擇要建立 VM 的各種設定、網路、負載平衡、警告條件等等,以下為 template 的架構圖以及 yaml 範例

  • yaml 檔案內容:

    • parameters: 指定 VM 的參數

    • resources: 定義 db 的規格還有 cloud init 的腳本

    • asg: 要自動擴展的群組最大最小 VM 數、VM 規格及 cloud init 的腳本

    • web_server_scale_policy: 設定擴展冷卻時間及一次擴展多少台

    • cpu_alarm: 設定警告值,granularity 為監測間隔時間,threshold 為警告值

Auto scaling 示意圖

Heat Template

此範例取至 OpenStack Heat template (https://github.com/openstack/heat-templates/blob/master/hot/autoscaling.yaml)

請根據你的環境,修改各參數的ID

建立 Stack

建立一個stack (autoscaling.yaml 和 lb_server.yaml 需在同一目錄)

stack 建立完成後,等待 VM 執行完 cloud init 腳本,完成後可由 horizon 的 stack overview 或指令 opesntack stack show STACK_ID 得到 wordpress 網址以及查看此 stack 的 cpu使用率的 gnocchi 指令

Heat stack 詳細資料

使用 gnocchi 指令查看 stack 的 cpu 使用率

驗證 Auto scaling

根據 ceilometer 設定的監測間隔,使用 openstack alarm lis t指令來查看 aodh 的警示是否有狀態,如果 state 狀態為 ok 或 alarm,代表 aodh 有得到監測值,如果是 insufficient data,代表兩種可能,一種是 ceilometer 每5分鐘監測一次,但是還沒有5分鐘,因此還在收集資料,另一種是在 heat template 的 cpu_alarm 中granularity 設定錯誤,導致無法取得監測值

接下來進入 wordpress 的 vm,安裝 stress,並使用 stress 讓 cpu 到達100%

再使用 openstack alarm list 查看 cpu_alarm_high 的 state是否為 high,是的話VM 就會自動增加一台,反之減少

Last updated

Was this helpful?