新浪微博大規模基於Docker的混合雲應用實踐
ithome 上发表了台湾 Container Summit 2015 大會里关于微博混合云的报道。这是我实习期间参与的项目,认真阅读了一下报道,发现报道总结的特别详细,转过来和大家一起分享交流。
References 超詳細!Container Summit 2015大會現場筆記總整理http://www.ithome.com.tw/news/101558
業務背景
- 業務量變化非常大、瞬間的峰值很高,需要大量的設備以確保服務在尖峰期間能夠正常
- 業務突發狀況
- 突發事件、三節(元旦、春晚、耶誕節)、紅包飛
- 日常推撥
- 資源浪費
- 每個業務單位有各自的設備,以確保尖峰期間服務能夠正常
- 每個業務都有設備閒置,造成資源浪費
- 設備
- 申請週期過長
- 機房空間有限
目標
- 個業務除了有各自的保留空間外,有部分的空間如10%設備會共通用,
- 讓共用的空間做靈活的彈性轉移
大陸業界處理方式:12306 (類似台鐵訂票網站)
- 目前有兩個資料儲存中心,但是仍舊有問題
- 額外申請阿里雲,用來應付尖峰流量
我们的方案:
- 雲端
- 使用阿里雲
- 持續部屬不會用在雲端,單純用來扛尖峰值
- 拉專線,兩個機房各 1G 專線,三節尖峰狀態拉 10G 專線
- 拉專線才可以降低延遲時間,使用公有雲方式處理速度太慢
- Docker Registry
- 有自己的 Docker Registry 用來做版本管理
- Docker 有升級過,額外用 Nginx 做處理,得知目前服務請求要用 V1 or V2 Registry
- 具有內部私有機房,並透過專線與阿里雲溝通
- docker
- swarm
- mesos (離線數據分析用)
- dispatch (自行開發任務系統)
- 後端服務為JAVA
- 前端服務 PHP
- 有一個共用的資源池,當其他系統有需要資源再做調配
- 大規模集群操作自動化
- 設備申請
- 內:共享池
- 外:阿里雲
- 初始化
- 標準化
- 配置管理
- 安裝、升級自動化、操作 API 化
- RPM+Puppet MasterLess
- 業界可能透過 CoreOS、RancherOS、Atomic、DCOS 來做初始化,但是對微博來說,這樣成本過高,所以自己做初始化。
- 服務上線
- 容器動態調度
- 服務彈性擴充
- 各項業務有10%的設備提供做為共享使用
- 資源不足時進行申請,使用後歸還
- 具有報警平台、業務監控
- 部屬模式
- 優先調度內網共享
- 擴充容,單次操作時間 < 5min