新浪微博大規模基於Docker的混合雲應用實踐

ithome 上发表了台湾 Container Summit 2015 大會里关于微博混合云的报道。这是我实习期间参与的项目,认真阅读了一下报道,发现报道总结的特别详细,转过来和大家一起分享交流。

References 超詳細!Container Summit 2015大會現場筆記總整理http://www.ithome.com.tw/news/101558

業務背景

  1. 業務量變化非常大、瞬間的峰值很高,需要大量的設備以確保服務在尖峰期間能夠正常
  2. 業務突發狀況
    • 突發事件、三節(元旦、春晚、耶誕節)、紅包飛
    • 日常推撥
  3. 資源浪費
    • 每個業務單位有各自的設備,以確保尖峰期間服務能夠正常
    • 每個業務都有設備閒置,造成資源浪費
  4. 設備
    • 申請週期過長
    • 機房空間有限

目標

  1. 個業務除了有各自的保留空間外,有部分的空間如10%設備會共通用,
  2. 讓共用的空間做靈活的彈性轉移

大陸業界處理方式:12306 (類似台鐵訂票網站)

  • 目前有兩個資料儲存中心,但是仍舊有問題
  • 額外申請阿里雲,用來應付尖峰流量

我们的方案:

  1. 雲端
    • 使用阿里雲
    • 持續部屬不會用在雲端,單純用來扛尖峰值
    • 拉專線,兩個機房各 1G 專線,三節尖峰狀態拉 10G 專線
    • 拉專線才可以降低延遲時間,使用公有雲方式處理速度太慢
  2. Docker Registry
    • 有自己的 Docker Registry 用來做版本管理
    • Docker 有升級過,額外用 Nginx 做處理,得知目前服務請求要用 V1 or V2 Registry
  3. 具有內部私有機房,並透過專線與阿里雲溝通
    • docker
    • swarm
    • mesos (離線數據分析用)
    • dispatch (自行開發任務系統)
    • 後端服務為JAVA
    • 前端服務 PHP
  4. 有一個共用的資源池,當其他系統有需要資源再做調配
  5. 大規模集群操作自動化
    • 設備申請
    • 內:共享池
    • 外:阿里雲
    • 初始化
    • 標準化
    • 配置管理
    • 安裝、升級自動化、操作 API 化
    • RPM+Puppet MasterLess
    • 業界可能透過 CoreOS、RancherOS、Atomic、DCOS 來做初始化,但是對微博來說,這樣成本過高,所以自己做初始化。
  6. 服務上線
    • 容器動態調度
    • 服務彈性擴充
    • 各項業務有10%的設備提供做為共享使用
    • 資源不足時進行申請,使用後歸還
  7. 具有報警平台、業務監控
  8. 部屬模式
    • 優先調度內網共享
  9. 擴充容,單次操作時間 < 5min
Loading Disqus comments...
Table of Contents