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