各大公司容器云的技术栈对比
鄭昀編著于2015/10/20
目前來看,幾家歷史包袱較重的公司都選擇不讓上層應用感知到底層是 VM 還是容器,所以都改了 docker 內核,如360、點評、汽車之家。最后附上我們的容器私有云技術棧以及系統截圖。
?
點評容器技術棧
-
2014年啟動基于 docker 搭建私有云,之前談不上使用過私有云
-
運維工具:Puppet
-
NATS+Nginx+Zookepper:
-
組件之間的交互使用了 NATS,通過消息的『發布-訂閱』模型,將各個組件之間的耦合最小化
-
對于Web類型的應用,通過和 Nginx 暴露的 Restful 接口交互,完成實例在集群內的注冊以及注銷。對于服務類型的應用,通過在 ZooKeeper 上注冊和注銷服務IP和端口,便于服務客戶端發現和更新該服務
-
-
技術改造:
-
由于不愿意讓技術人員感知到從 KVM 到 Docker 的轉換,所以做了不少工作(注:主要還是不愿意影響原有業務和發布流程)
-
更改了 Docker 底層代碼,讓其從推薦的微服務架構演變到目前的『虛擬機』架構。開發和運維可以通過 IP 直接訪問到 Docker『虛擬機』,基于IP的應用基礎架構也不需要開發和運維做劇烈的改變
-
-
使用情況:
-
基本上除搜索和數據庫以外,點評現有的業務大多都有跑到容器上的
-
-
監控改造:
-
通過收集 CGroups 和容器實例的實時信息,將內存、CPU、網絡等源源不斷地上報到 CAT,再由 CAT 提供查詢,檢索和展示。也可以做報警
-
-
組網:
-
Bridge Networking 工作在 level 2 的模式,使公共 IP 得以暴露出來,這部分是做了定制的
-
?
360容器技術棧
-
運維工具:集群變更用 Puppet(master/slave)
-
持續集成:jenkins(master/slave)+mesos+marathon+zookeeper
-
-
技術改造:
-
docker 底層改造
-
能夠設置 btrfs 磁盤限額,網絡限速,IO 限制
-
容器獨立IP
-
容器內多進程
-
-
-
registry V2
一些優化細節:
-
利用 Jenkins master-多個slave 縮短構建時間:
-
分布式提高 build 性能
-
slave 記憶利用 cache
-
-
利用 btrfs 和 ssd 縮短構建時間:
-
devicemapper 換成 btrfs
-
sas 硬盤換成 ssd 的
-
?
UCloud容器技術棧
-
docker版本:1.1.1,1.8.2
-
發行版:centos 6.x
-
k8s版本:1.0.6
-
實踐經驗:
-
docker日志:日志打印耗費性能,最好關閉 logdriver,將日志打印在后臺
-
docker daemon:centos 6.3 service stop 耗時長,需要5分鐘,是 init-scripts 的 bug
-
docker網絡:
-
NAT模式下會啟用 nf_conntrack 造成性能下降,可以調節內核參數
-
-
合理設置 ulimit
-
docker鏡像:
-
制作鏡像時,commit 的信息要簡單明了
-
編寫 dockerfile 規范,減少鏡像層數,基礎部分放前面
-
分地域部署鏡像 registry
-
-
?
汽車之家容器技術棧
-
docker版本:1.6.2
-
linux發行版:centos 6.4 kernel 3.10和4.0
-
registry V2
-
構建:
-
有單獨機器做構建
-
基于centos:7+systemd+zabbix
-
-
Docker Hub
-
Docker Registry 2.0
-
Registry 本身不能夠高可用,Nginx 負載多個 Registry
-
使用網絡存儲共享鏡像
-
配置 Mirroring,獲取官網鏡像
-
-
Docker應用-網絡問題
-
Docker 目前提供的網絡模式不適合業務環境
-
--iptables =false
-
修改 Docker 內核改成靜態 IP 模式
-
IP 是通過容器名字為標識從 IP Pool 獲取
-
?
螞蟻金服PAAS docker提到的遷移問題
-
老應用遷移的痛
-
誰來寫Dockerfile并制作應用鏡像
-
螞蟻線上已經有上千應用,幾千開發人員,很難一下推動他們都學習 docker,切換到新的研發模式下
-
如果需要開發人員寫 dockerfile,會影響推廣效率
-
-
螞蟻原有的運維/監控/SCM/財務等系統都是以 vm 為緯度的
-
基于 docker 的運維發布系統與原有系統對接比較麻煩
-
以往運維都是先申請一批機器,測試網絡正常后備用,上線前再決定跑什么應用
-
發布應用不重啟 vm,所以也不希望重啟 container;
-
-
怎么盡量保證開發測試環境與生產環境一致
-
-
應對策略
-
開發輔助工具幫助研發同學編譯應用/自動生成 dockerfile/制作鏡像并搭建測試環境
-
把 CAAS 當作輕量級的 IAAS,讓運維把 container 當作輕量級 vm 用,便于和已有系統對接
-
-
使用通用的 sofa4/sofa3 container,可以不需要制作應用鏡像
-
在基礎鏡像中集成 sshd,運行運維 ssh 到 container 中
-
使用 supervisor 啟動應用和相關監控/運維 agent
-
提供 webconsole 允許開發人員登錄 container 查看日志/進行一定權限的 操作
-
使用 data container 避免本地 mount
?
最后列舉一下我們技術團隊的容器私有云技術棧
截止到2015年9月,窩窩容器管理集群的技術棧包括以下內容:
mesos(資源調度)
marathon(服務編排)
chronos(分布式計劃任務)
docker(容器引擎)
consul+registrator(服務注冊和發現)
haproxy(負載均衡)
prometheus(服務監控)(注:同時數據也會推送到天機系統的 OpenTSDB 里)
nagios/zabbix(節點監控)
salt(節點配置管理)
cobbler(節點自動化裝機)
ELK(日志收集分析)
窩窩持續集成管理平臺在這些技術的基礎上,實現了我們的集群管理、容器管理、應用管理等業務流程。
一些系統截圖如下所示:
?
?
?
-END-
歡迎訂閱我的微信訂閱號『老兵筆記』,請掃描二維碼關注:轉載于:https://www.cnblogs.com/zhengyun_ustc/p/dockerstack.html
總結
以上是生活随笔為你收集整理的各大公司容器云的技术栈对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html的!DOCTYPE标签初窥
- 下一篇: 简明Vim练级攻略(转载)