日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker Swarm:经济高效的容器调度

發(fā)布時(shí)間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker Swarm:经济高效的容器调度 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文探討了幾種容器調(diào)度策略,并以內(nèi)存約束為例,討論了如何利用Docker Swarm,通過資源約束實(shí)現(xiàn)容器的合理調(diào)度。其中,對(duì)容器資源的約束,包括硬約束和軟約束,硬約束是指內(nèi)存資源的實(shí)際限制條件,而軟約束則是當(dāng)服務(wù)器實(shí)際內(nèi)存資源有足余時(shí),容器可自由使用,一旦內(nèi)存資源有所緊缺,則約束開始生效。硬約束和軟約束的結(jié)合使用,可以在減少資源浪費(fèi)的同時(shí)保證服務(wù)的穩(wěn)定性。

  我們每天在數(shù)百臺(tái)服務(wù)器上運(yùn)行成百上千個(gè)容器,面臨的最大一個(gè)挑戰(zhàn)是怎樣高效地調(diào)度容器。容器的調(diào)度是指在一組服務(wù)器上處理容器分配的問題,以保證服務(wù)能平穩(wěn)運(yùn)行。由于這些需要調(diào)度的容器是客戶應(yīng)用程序的組件,我們必須在還未知曉其性能特點(diǎn)之前進(jìn)行調(diào)度。

  不合適的調(diào)度方法會(huì)導(dǎo)致以下可能的結(jié)果:

  過多的資源配置——意味著更高的成本。

  過少的資源配置——意味著用戶的穩(wěn)定性差。

  合適的調(diào)度方法對(duì)我們而言很重要,以經(jīng)濟(jì)高效的方式,提供最好的用戶體驗(yàn)。

  隨機(jī)性調(diào)度策略

  起初,在我們的早期產(chǎn)品中使用了相同的調(diào)度方法。這個(gè)方法(在Docker Swarm之前)沒有以任何方式對(duì)容器的運(yùn)行進(jìn)行約束,而只是簡單地隨機(jī)選擇一個(gè)服務(wù)器。

  但是,運(yùn)行全棧環(huán)境和運(yùn)行代碼段是完全不同的事——我們很快發(fā)現(xiàn),這個(gè)解決方案并不理想。我們的服務(wù)器經(jīng)常因繁忙導(dǎo)致CPU過載和內(nèi)存不足。

  硬約束條件

  我們一起根據(jù)需要,定義了一種新的調(diào)度器:不再隨機(jī)選擇服務(wù)器;要能約束運(yùn)行所需的資源分配,理想情況下,還要易于部署。

  幸運(yùn)的是,Docker Swarm擁有了全部這些特性,最近該工具的穩(wěn)定性也已滿足生產(chǎn)環(huán)境的要求。我們使用spread調(diào)度策略,以減少因服務(wù)器故障而損壞的容器數(shù)量。并設(shè)置了基于鏡像的類別關(guān)系,同類容器可以運(yùn)行在同樣的服務(wù)器中。

  我們使用了Datadog中Docker集成功能,可詳細(xì)觀測(cè)容器使用資源的情況。Datadog包含了所有我們需要的數(shù)據(jù),可用來描述每個(gè)容器的內(nèi)存或CPU使用率,以及每個(gè)服務(wù)器的磁盤使用率。

  有了這份數(shù)據(jù),我們發(fā)現(xiàn)內(nèi)存是制約因素(不是CPU或磁盤),因此,我們決定利用內(nèi)存約束來調(diào)度我們的容器。我們根據(jù)觀測(cè)到的Datalog內(nèi)存分配情況,設(shè)置我們的內(nèi)存約束在99%的位置即1GB。我們還可以手動(dòng)重置對(duì)每一個(gè)容器的約束。

??????? 結(jié)果顯示,這個(gè)約束非常有效!我們將不會(huì)再看到服務(wù)器內(nèi)存不足,或因超載而運(yùn)行緩慢。

  軟約束條件

  享受了這個(gè)發(fā)現(xiàn)所帶來的穩(wěn)定性,在一段時(shí)間后,我們注意到,這種策略過度占用了服務(wù)器資源。大多數(shù)容器實(shí)際的內(nèi)存使用率遠(yuǎn)遠(yuǎn)低于該內(nèi)存硬約束1GB。這意味著我們所付費(fèi)的比實(shí)際使用的多很多。

  我們想要更經(jīng)濟(jì)高效,但又不能損失穩(wěn)定性。降低硬約束不是一個(gè)好的選擇,因?yàn)楹膬?nèi)存的應(yīng)用會(huì)因?yàn)檫@個(gè)約束而崩潰。

  我們需要一種基于估計(jì)的約束,在必要時(shí)又可以被突破的調(diào)度方法。值得慶幸的是,Docker提供了--memory-reservation選項(xiàng)來設(shè)置內(nèi)存軟約束。當(dāng)設(shè)置該軟約束時(shí),容器可以自由地使用所需的內(nèi)存,但是,當(dāng)服務(wù)器上有內(nèi)存爭用時(shí),Docker會(huì)試圖縮減內(nèi)存到軟約束值以內(nèi)?;谲浖s束的調(diào)度會(huì)減少浪費(fèi),并設(shè)置一個(gè)硬約束來阻止失控。但Swarm沒有這個(gè)功能,所以是時(shí)候需要我們使用Go語言,給Swarm建立一個(gè)定制版本分支,可調(diào)度軟內(nèi)存約束,而不是硬約束。再使用Datadog收集數(shù)據(jù),基于概率選擇理想的軟約束閥值,并設(shè)置硬約束為容器使用的最大值。這個(gè)方法顯著地減少了浪費(fèi),而且也沒有影響到穩(wěn)定。


??????? 動(dòng)態(tài)范圍和突破

  Docker1.12.0版中,最酷的一個(gè)功能是調(diào)度軟約束的能力。雖然它仍等待發(fā)布,不過我們已經(jīng)提前嘗試,可簡便地使用如下命令來調(diào)度軟約束。

  docker service create --reserve-memory <soft_limit>

  鑒于軟約束的成功,我們的下一步是為每個(gè)容器動(dòng)態(tài)地選擇軟約束和硬約束。因?yàn)樗械臄?shù)據(jù)都輸送到了Datadog,可通過一個(gè)查詢,得到理想的軟硬約束閾值,保持容器穩(wěn)定運(yùn)行而又不浪費(fèi)資源。敬請(qǐng)關(guān)注這個(gè)博客,我們一有結(jié)果就會(huì)讓您知道!

  原文鏈接:Cost-efficient container scheduling with Docker Swarm(翻譯:陳晏娥,校對(duì):黃帥)

轉(zhuǎn)載于:https://www.cnblogs.com/hehe520/p/6147729.html

總結(jié)

以上是生活随笔為你收集整理的Docker Swarm:经济高效的容器调度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。