您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 jenkins如何離線安裝插件(如何使用OpenStack,Docker和Spark打造一個云服務)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-10 13:17:53【】7人已围观
简介如何使用OpenStack,Docker和Spark打造一個云服務蘑菇街基于OpenStack和Docker的私有云實踐本次主要想分享一下過去一年時間里,我們在建設基于Docker的私有云實踐過程中,
如何使用OpenStack,Docker和Spark打造一個云服務
蘑菇街基于 OpenStack 和 Docker 的私有云實踐
本次主要想分享一下過去一年時間里,我們在建設基于Docker的私有云實踐過程中,曾經遇到過的問題,如何解決的經驗,還有我們的體會和思考,與大家共勉。
在生產環境中使用Docker有一些經歷和經驗。私有云項目是2014年圣誕節期間上線的,從無到有,經過了半年多的發展,經歷了3次大促,已經逐漸形成了一定的規模。
架構
集群管理
大家知道,Docker自身的集群管理能力在當時條件下還很不成熟,因此我們沒有選擇剛出現的 Swarm,而是用了業界最成熟的OpenStack,這樣能同時管理Docker和KVM。我們把Docker當成虛擬機來跑,是為了能滿足業務上對虛擬化的需求。今后的思路是微服務化,把應用進行拆分,變成一個個微服務,實現PaaS基于應用的部署和發布。
通過OpenStack如何管理Docker?我們采用的是OpenStack+nova-docker+Docker的架構模式。nova- docker是StackForge上一個開源項目,它做為nova的一個插件,通過調用Docker的RESTful接口來控制容器的啟停等動作。
我們在IaaS基礎上自研了編排調度等組件,支持應用的彈性伸縮、灰度升級等功能,并支持一定的調度策略,從而實現了PaaS層的主要功能。
同時,基于Docker和Jenkins實現了持續集成(CI)。Git中的項目如果發生了git push等動作,便會觸發Jenkins Job進行自動構建,如果構建成功便會生成Docker Image并push到鏡像倉庫。基于CI生成的Docker Image,可以通過PaaS的API或界面,進行開發測試環境的實例更新,并最終進行生產環境的實例更新,從而實現持續集成和持續交付。
網絡和存儲
網絡方面,我們沒有采用Docker默認提供的NAT網絡模式,NAT會造成一定的性能損失。通過OpenStack,我們支持Linux bridge和Open vSwitch,不需要啟動iptables,Docker的性能接近物理機的95%。
容器的監控
監控方面,我們自研了買粉絲ntainer tools,實現了容器load值的計算,替換了原有的top、買粉絲、iostat、uptime等命令。這樣業務方在容器內使用常用命令時看到的是容器的值,而不是整個物理機的。目前我們正在移植Lxcfs到我們的平臺上。
我們還在宿主機上增加了多個閾值監控和報警,比如關鍵進程監控、日志監控、實時pid數量、網絡連接跟蹤數、容器oom報警等等。
冗災和隔離性
冗災和隔離性方面,我們做了大量的冗災預案和技術準備。我們能夠在不啟動docker daemon的情況下,離線恢復Docker中的數據。同時,我們支持Docker的跨物理機冷遷移,支持動態的CPU擴容/縮容,網絡IO磁盤IO的限速。
遇到的問題及解決方法
接近一年不到的產品化和實際使用中我們遇到過各種的問題,使用Docker的過程也是不斷優化Docker、不斷定位問題、解決問題的過程。
我們現在的生產環境用的是CentOS 6.5。曾經有個業務方誤以為他用的Docker容器是物理機,在Docker容器里面又裝了一個Docker,瞬間導致內核crash,影響了同一臺物理機的其他Docker容器。
經過事后分析是2.6.32-431版本的內核對買粉絲work namespace支持不好引起的,在Docker內創建bridge會導致內核crash。upstream修復了這個bug,從2.6.32-431升級到2.6.32-504后問題解決。
還有一個用戶寫的程序有bug,創建的線程沒有及時回收,容器中產生了大量的線程,最后在宿主機上都無法執行命令或者ssh登陸,報的錯是"bash: fork: Cannot allocate memory",但通過買粉絲看空閑的內存卻是足夠的。
經過分析,發現是內核對pid的隔離性支持不完善,pid_max(/proc/sys/kernel/pid_max)是全局共享的。當一個容器中的pid數目達到上限32768,會導致宿主機和其他容器無法創建新的進程。最新的4.3-rc1才支持對每個容器進行pid_max限制。
我們還觀察到docker的宿主機內核日志中會產生亂序的問題。經過分析后發現是由于內核中只有一個log_buf緩沖區,所有printk打印的日志先放到這個緩沖區中,docker host以及買粉絲ntainer上的rsyslogd都會通過syslog從kernel的log_buf緩沖區中取日志,導致日志混亂。通過修改 買粉絲ntainer里的rsyslog配置,只讓宿主機去讀kernel日志,就能解決這個問題。
除此之外,我們還解決了device mapper的dm-thin discard導致內核crash等問題。
體會和思考
最后分享一下我們的體會和思考,相比KVM比較成熟的虛擬化技術,容器目前還有很多不完善的地方,除了集群管理、網絡和存儲,最重要的還是穩定性。影響穩定性的主要還是隔離性的不完善造成的,一個容器內引起的問題可能會影響整個系統。
容器的memcg無法回收slab cache,也不對dirty cache量進行限制,更容易發生OOM問題。還有,procfs上的一些文件接口還無法做到per-買粉絲ntainer,比如pid_max。
另外一點是對容器下的運維手段和運維經驗的沖擊。有些系統維護工具,比如ss,買粉絲,df等在容器中無法使用了,或者使用的結果跟物理機不一致,因為系統維護工具一般都會訪問procfs下的文件,而這些工具或是需要改造,或是需要進行適配。
雖然容器還不完善,但是我們還是十分堅定的看好容器未來的發展。Kuber買粉絲es、Mesos、Hyper、CRIU、runC等容器相關的開源軟件,都是我們關注的重點。
Q&A
Q:請問容器間的負載均衡是如何做的?
Q:請問你們的OpenStack是運行在CentOS 6.5上的嗎?
A: 是的,但是我們針對OpenStack和Docker依賴的包進行了升級。我們維護了內部的yum源。
Q:請問容器IP是靜態編排還是動態獲取的?
A: 這個跟運維所管理的網絡模式有關,我們內部的網絡沒有DHCP服務,因此對于IaaS層,容器的IP是靜態分配的。對于PaaS層來說,如果有DHCP服務,容器的App所暴露出來IP和端口就可以做到動態的。
Q:請問你們當時部署的時候有沒有嘗試過用Ubuntu,有沒有研究過兩個系統間的區別,另外請問你們在OpenStack上是怎樣對這些虛擬機監控的?
A: 我們沒有嘗試過Ubuntu,因為公司生產環境上用的是CentOS。我們的中間件團隊負責公司機器的監控,我們和監控團隊配合,將監控的agent程序部署到宿主機和每個容器里,這樣就可以當成虛擬機來進行監控。
當然,容器的數據是需要從cgroups里來取,這部分提取數據的工作,是我們來實現的。
Q:容器間的網絡選型有什么建議,據說采用虛擬網卡比物理網卡有不小的性能損失,Docker自帶的weaves和ovs能勝任嗎?
A: 容器的網絡不建議用默認的NAT方式,因為NAT會造成一定的性能損失。之前我的分享中提到過,不需要啟動iptables,Docker的性能接近物理機的95%。Docker的weaves底層應該還是采用了網橋或者Open vSwitch。建議可以看一下nova-docker的源碼,這樣會比較容易理解。
Q:靜態IP通過LXC實現的嗎?
A: 靜態IP的實現是在nova-docker的novadocker/virt/docker/vifs.py中實現的。實現的原理就是通過ip命令添加 veth pair,然后用ip link set/ip 買粉絲ns exec等一系列命令來實現的,設置的原理和weaves類似。
Q:容器內的進程gdb你們怎么弄的,把gdb打包到容器內嗎?
A: 容器內的gdb不會有問題的,可以直接yum install gdb。
Q:共享存儲能直接mount到容器里嗎?
A: 雖然沒試過,但這個通過docker -v的方式應該沒什么問題。
Q:不啟動Docker Daemon的情況下,離線恢復Docker中的數據是咋做到的?
A: 離線恢復的原理是用dmsetup create命令創建一個臨時的dm設備,映射到Docker實例所用的dm設備號,通過mount這個臨時設備,就可以恢復出原來的數據。
Q:Docker的跨物理機冷遷移,支持動態的CPU擴容/縮容,網絡IO磁盤IO的限速,是怎么實現的,能具體說說嗎?
A:Docker的冷遷移是通過修改nova-docker,來實現OpenStack遷移的接口,具體來說,就是在兩臺物理機間通過docker 買粉絲mit,docker push到內部的registry,然后docker pull snapshot來完成的。
動態的CPU擴容/縮容,網絡IO磁盤IO的限速主要是通過novadocker來修改cgroups中的cpuset、iops、bps還有TC的參數來實現的。
Q:請問你們未來會不會考慮使用Magnum項目,還是會選擇Swarm?
A:這些都是我們備選的方案,可能會考慮Swarm。因為Magnum底層還是調用了Kuber買粉絲es這樣的集群管理方案,與其用Magnum,不如直接選擇Swarm或者是Kuber買粉絲es。當然,這只是我個人的看法。
Q:你們的業務是基于同一個鏡像么,如果是不同的鏡像,那么計算節點如何保證容器能夠快速啟動?
A:運維會維護一套統一的基礎鏡像。其他業務的鏡像會基于這個鏡像來制作。我們在初始化計算節點的時候就會通過docker pull把基礎鏡像拉到本地,這也是很多公司通用的做法,據我了解,騰訊、360都是類似的做法。
Q:做熱遷移,有沒有考慮繼續使用傳統共享存儲的來做?
A: 分布式存儲和共享存儲都在考慮范圍內,我們下一步,就計劃做容器的熱遷移。
Q:請問你們是直接將公網IP綁定到容器嗎,還是通過其他方式映射到容器的私有IP,如果是映射如何解決原本二層的VLAN隔離?
A:因為我們是私有云,不涉及floating ip的問題,所以你可以認為是公網IP。VLAN的二層隔離完全可以在交換機上作。我們用Open vSwitch劃分不同的VLAN,就實現了Docker容器和物理機的網絡隔離。
Q:Device mapper dm-thin discard問題能說的詳細些嗎?
A:4月份的時候,有兩臺宿主機經常無故重啟。首先想到的是查看/var/log/messages日志,但是在重啟時間點附近沒有找到與重啟相關的信息。而后在/var/crash目錄下,找到了內核crash的日志vm買粉絲r
很赞哦!(5)
相关文章
- youtube for windows download windows 10(有沒有聽了讓人能安靜下來的音樂)
- youtube downloader mp4 converter什么意思(為什么我用Youtube Downloader HD 最新版的軟件 去下載Youtube 上的視頻 我把地址復制上去后)
- youtube downloader mp4 free download online(為什么我用Youtube Downloader HD 最新版的軟件 去下載Youtube 上的視頻 我把地址復制上去后)
- youtube for android tv下載(播放youtubetv前面幾秒花屏)
- 01 參觀上海外灘英語(我會帶你們去外灘參觀東方明珠,金茂大廈等等上海的著名建筑 英語)
- 01 發達的網絡社交媒體有利于當代人的心理健康辯論(社交媒體是否真的有助于我們的心理健康?)
- 01 發買粉絲的目的是什么(買粉絲買粉絲的推廣方式是什么?目的又是什么?)
- youtube hk 中文版新聞(為什么會變成youtubehk)
- 01 發布視頻怎么播放量高(抖音播放量怎么提升?)
- 01 發盤在國際貿易實務第幾章(國際貿易實務關于發盤接受的選擇題)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片
职业:程序员,设计师
现居:河南平顶山湛河区
工作室:小组
Email:[email protected]
热门文章
站长推荐
youtube for tv app download(smartyoutubetv目前還能用嗎)
01 取消不了訂閱怎么回事(Iphone 訂閱無法取消怎么辦?)
01 參考消息報訂閱一年的價格(環球時報和參考消息報能破季訂閱嗎?)
youtube family tv series(求希斯萊杰的英文介紹)
youtube how to remove playlist(請懂西班牙語的翻譯下(要是再懂足球就更好了……))
youtube downloader online mp3 free converter(為什么我用Youtube Downloader HD 最新版的軟件 去下載Youtube 上的視頻 我把地址復制上去后)
youtube hk 中文版下載(尚雯婕是誰,干什么的 ??)
youtube downloader mp3(為什么我用Youtube Downloader HD 最新版的軟件 去下載Youtube 上的視頻 我把地址復制上去后)