摘要: 利用ROS的Udate功能實現套用的彈性伸縮
當套用上線以後,我們就萬事大吉了嗎?非也非也,可能日常情況下,你的套用利用現有的資源能很容易的處理用戶的要求,但是如果是節日,熱時間點事件,雙十一或者促銷活動導致的流量暴漲呢,我們應該怎麼去處理,相信大家肯定會說加資源啊,伸縮套用集群啊。是,這是一個好方法,但是說起來容易,做起來難,怎麼能很快速的擴資源呢?當流量逐漸迴歸平穩的時候,怎麼能一點一點的收縮資源,減少資源浪費呢。本文將基於阿裡雲的資源編排服務(ROS)來嘗試給出一點建議。
幕後
本文通過下面的高可用套用部署的例子來說明,如何通過通過ROS做到資源的彈性伸縮,輕鬆應對流量波峰。下圖是一個高可用套用部署的最簡單架構:
所有彈性計算資源ECS,RDS建立在同一個VPC網路下,外部使用者通過SLB存取套用。同時RDS是主備隱藏放在不同的可用區,並且建立了資料庫為其新增用戶。SLB監聽了80和443埠。所以基本上,只需要用戶把自己的套用部署到這個環境裡,就可輕鬆上線了。通過下面的【一鍵部署】就可以搭建出一個高可用架構。
一鍵部署
套用上線了,可以鬆口氣了,別急。公司要做促銷,要迎接雙十一,流量暴漲,本期的計算能力不能處理怎麼辦?別急,下面就說如何通過ROS,在已有的套用部署環境下,並且不影響使用者使用的情況下,神不知鬼不覺的套用的彈性伸縮呢?
初步擴容
流量暴漲擴容只需要下麵兩步:
1.給原有APP部署機做鏡像
套用部署在系統磁片裡,需要給上面的架構中的一台ECS做鏡像,這樣就可以通過包含有APP的鏡像,複製出一個全新ECS。做鏡像的步驟參考這裡;
2.點選下麵的一鍵擴容:
一鍵擴容
點選完一鍵擴容後,你會在瀏覽器看到下圖輸入參數:
參數SourceInstanceId指定以哪個ECS為基準複製擴容的ECS,NewImageId 指定第一步所建立的鏡像,這樣當擴容以後新的ECS上就已經包含有部署好的套用,MaxAmount指定將要擴容的ECS 數量,本例中是擴容了5台 ECS,LoadBalancerIdToAttach指定擴容的ECS將要掛載到已存在哪個SLB上。參數輸入完成後,點選建立,稍等幾分鐘新的擴容的ECS 就自動上線了。其實這裡還有優化的空間,套用是否可以做到自動啟動呢,答案是可以的。通過ROS的UserData,指定套用的啟動腳本,就可以非常方便地實現ECS上線的時候,套用同時上線。關於UserData的例子可以看這裡。
動態調節計算節點
如果擴容後,仍然不能處理繼續增長的流量呢,這個也很簡單,可以繼續點選一鍵擴容,增加計算量。但是最好的方法是使用如下所示的方法來調節自己套用的部署級別。這樣不僅很方便的實現擴容,也可以很方便的做到縮容。這裡動態調節的本質是,利用ROS的Update功能,通過修改資源棧範本的參數,來更新資源棧中的資源設定以及數量。簡單說,通過調節上面的資源棧的MaxAmount 參數就可以達到動態調節ECS 計算資源目的。
當需要增加資源時,修改MaxAmount為10,那麼就是在原有擴容的基礎上,再增加5台相同設定的ECS;當流量開始降低,修改MaxAmount為3,就是在原有擴容的基礎上,移除2台機器。
- 在ROS主控台,找到一鍵擴容所建立的stack,然後點選下面其他會出現更新堆疊按鈕,如下圖所示:
- 點選【更新堆疊】,會出現如點選一鍵擴容時參數輸入框,如下圖所示,假如需要縮容,那面調整MaxAmount參數為3,點選更新就會把多餘的 ECS 釋放掉。
這樣不論流量級別如何變化,我們都可以以不變應萬變,輕輕鬆松實現ECS 計算的任意調節。當流量徹底迴歸正常水準,只需移除一鍵擴容時所建立的資源棧即可。
總結
本文主要講述了如何通過ROS實現套用的彈性伸縮。上面的步驟都是在ROS的主控台手動操實現的。當彈性伸縮的變動不頻繁,運維人員還能hold住,但是當要實現快速回應,即時調整套用的處理能力,那麼最好的方法是利用ROS的API去實現上面步驟。關於ROSAPI的使用,可以參考這裡。關於API的詳細介紹請參考這裡。所有在主控台的動作,都提供了相應的API。
從此以後後任何彈性伸縮的套用場景,再也不用怕了。
相關產品:
- 資源編排ROS
- 資源編排ROS
- 資源編排ROS