• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Docker 的災(zāi)害信息發(fā)布網(wǎng)站群實驗研究

    2021-09-11 09:01:36楊旭明楊百一
    科學技術(shù)創(chuàng)新 2021年25期
    關(guān)鍵詞:鏡像倉庫內(nèi)存

    楊旭明 李 忠 楊百一

    (防災(zāi)科技學院應(yīng)急管理學院,河北 三河 065201)

    隨著有關(guān)災(zāi)情監(jiān)測網(wǎng)站越來越多,造成部署和維護的Web 應(yīng)用呈現(xiàn)幾何級數(shù)增長,直接導致了兩個問題:一是在有限的資源條件下服務(wù)器的負載過重,響應(yīng)緩慢,資源浪費現(xiàn)象嚴重;二是不同的應(yīng)用程序所依賴的環(huán)境不一樣,如果把它們依賴的軟件都安裝在一個服務(wù)器上,不僅造成調(diào)試麻煩,而且可能出現(xiàn)沖突,給運維人員帶來繁重的不必要勞動。

    目前的信息技術(shù),雖然可以在服務(wù)器上創(chuàng)建不同的虛擬機,運行不同的應(yīng)用,但是虛擬機的開銷比較高。Docker 容器作為輕量級的虛擬機,是一個很好的工具,與傳統(tǒng)的虛擬機相比,容器更加輕量化、啟動的速度更快,在同樣數(shù)量的硬件設(shè)備中,可以部署更多的容器實例。Docker 作為一個軟件集裝箱化平臺,可以讓開發(fā)者構(gòu)建應(yīng)用程序時,將它與其依賴環(huán)境一起打包到一個容器中,然后容易地發(fā)布和應(yīng)用到任意平臺中。測試和運維人員可以直接部署軟件鏡像來進行測試和發(fā)布,大大簡化了系統(tǒng)集成、測試和發(fā)布的過程。同時可以消除線上線下環(huán)境的差異,保證了應(yīng)用生命周期的環(huán)境一致性標準化,是災(zāi)害信息數(shù)據(jù)網(wǎng)站群部署的理想思路。

    1 Docker 容器技術(shù)

    1.1 傳統(tǒng)虛擬化與容器技術(shù)

    傳統(tǒng)虛擬機(virtual machine)就是帶環(huán)境安裝的一種解決方案,可以在一種操作系統(tǒng)里面運行另一種操作系統(tǒng),比如在Windows 系統(tǒng)上運行Linux 系統(tǒng)。應(yīng)用程序?qū)Υ撕翢o感知,因為虛擬機看上去跟真實系統(tǒng)一模一樣,缺點是資源占用多、冗余步驟多、啟動速度慢等。

    作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式相比具有更多優(yōu)勢?;谌萜鬟\行的Docker 虛擬化技術(shù)并沒有虛擬一個完整的Linux 操作系統(tǒng),而只保留了應(yīng)用程序運行所必需的核心操作系統(tǒng)環(huán)境,具有啟動時間短、空間占用少、分發(fā)和復制方便、資源開銷少等特點,具備和傳統(tǒng)虛擬機一樣的隔離性和安全性。Docker 容器與傳統(tǒng)虛擬機對比如表1 所示。

    表1 Docker 容器與虛擬機之間性能對比

    1.2 Docker 工作原理

    Docker 最初實現(xiàn)是基于LXC 的一個開源項目,誕生于2013年初,使用Google 公司推出的Go 語言進行開發(fā)實現(xiàn),對進程進行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術(shù)。由于隔離的進程獨立于宿主和其它隔離的進程,因此也稱為容器。Docker 能夠自動執(zhí)行重復性任務(wù),例如搭建和配置開發(fā)環(huán)境,從而解放了開發(fā)人員。用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進行版本管理、復制、分享、修改,就像管理普通的代碼一樣。

    Docker 服務(wù)器端負責處理創(chuàng)建、運行、保存容器的作用,客戶端負責連接并控制服務(wù)端進程,客戶端和服務(wù)端的守護進程可以通過RESTful API 或 者socket 進行進程間通信。Docker的 核 心 組 件 包 括Client、Docker Deamon、Docker Container、Docker Images 和Docker Register,如圖1 所示。Docker 鏡像(image)是指包含文件系統(tǒng)、可執(zhí)行程序以及程序的相關(guān)依賴配置文件的軟件包,可移植和重復使用。Docker 倉庫(Docker Register)是用來存放鏡像的地方,可以把創(chuàng)建好的基礎(chǔ)鏡像保存在倉庫中,供其他開發(fā)和運維人員下載使用,避免反復構(gòu)建鏡像的麻煩。Docker Hub 是目前Docker 官方維護的一個公共倉庫,用戶可以直接下載鏡像來實現(xiàn)應(yīng)用。但是實際生產(chǎn)環(huán)境中,一般采用創(chuàng)建自己的私有倉庫,來實現(xiàn)鏡像的內(nèi)部共享。Docker 容器(Docker Container)是通過Docker 鏡像運行的實例,可以共享操作系統(tǒng)內(nèi)核,能夠迅速啟動,占用很少的計算和內(nèi)存資源。通過docker run 命令并指定一些參數(shù)完成容器執(zhí)行一些進程服務(wù)。容器可以被啟動、停止、刪除等,而且每個容器之間具有安全的隔離空間。

    圖1 Docker 基本架構(gòu)

    2 基于Docker 的災(zāi)害信息網(wǎng)站群部署實現(xiàn)

    2.1 需求分析

    近年來,國家對各類災(zāi)害的監(jiān)測和監(jiān)控力度加大,對各類災(zāi)害信息發(fā)布提出了新的要求。本文以災(zāi)害信息網(wǎng)站群設(shè)計為例,研究網(wǎng)站群的快速部署和運維問題。災(zāi)害信息發(fā)布系統(tǒng)包括地震信息發(fā)布系統(tǒng)、疫情在線、社會力量參與災(zāi)后救援管理系統(tǒng)、智能災(zāi)害信息分析工場等。由于每個網(wǎng)站屬于不同的開發(fā)團隊,而每個開發(fā)團隊使用的開發(fā)環(huán)境可能不太相同,如表2 所示。由于實驗室環(huán)境僅提供兩臺云服務(wù)器可供使用,這就需要解決在有限的資源條件下,如何實現(xiàn)對信息網(wǎng)站群的快速部署和運維問題。

    表2 災(zāi)害信息網(wǎng)站群開發(fā)環(huán)境

    2.2 災(zāi)害信息網(wǎng)站群規(guī)劃部署

    2.2.1 服務(wù)器規(guī)劃

    本文采用一臺服務(wù)器作為Docker 服務(wù)器,一臺服務(wù)器作為數(shù)據(jù)庫服務(wù)器,實現(xiàn)應(yīng)用與數(shù)據(jù)分離的設(shè)計方案。同時Docker 服務(wù)器中的容器與數(shù)據(jù)庫服務(wù)器之間使用內(nèi)網(wǎng)進行通信,如圖2 所示。其中在Mysql 數(shù)據(jù)庫中分別為每個網(wǎng)站項目創(chuàng)建自己的賬號和數(shù)據(jù)庫,具體規(guī)劃如表3所示。

    圖2 容器與數(shù)據(jù)庫訪問

    表3 服務(wù)器資源規(guī)劃表

    2.2.2 網(wǎng)站群容器化部署實現(xiàn)

    首先在服務(wù)器上安裝Docker 軟件,作為服務(wù)器端,再根據(jù)災(zāi)害信息網(wǎng)站群中的不同網(wǎng)站的開發(fā)環(huán)境,需要為每種開發(fā)環(huán)境分別構(gòu)建Docker 鏡像。下面以地震信息中心網(wǎng)站的容器化部署為例說明具體部署過程,如圖3 所示。

    圖3 網(wǎng)站容器化部署流程

    2.2.2.1 創(chuàng)建運行環(huán)境并完成Docker 鏡像的構(gòu)建。地震信息中心網(wǎng)站使用的Tomcat8.5.61 和Jdk1.8 運行環(huán)境,可以先從Docker Hub 公共倉庫中使用Docker pull 命令下載官方Tomcat8.5.61 鏡像,使用Docker run 命令運行該容器。進入容器后,再為此容器安裝Jdk1.8 的運行環(huán)境,同時把網(wǎng)站所需的war 包通過宿主主機拷入到容器的tomcat/webapps 目錄下,并修改相應(yīng)的配置文件,實現(xiàn)對該特定網(wǎng)站鏡像的構(gòu)建。2.2.2.2 提交Docker 新鏡像并部署。對2.2.2.1 中構(gòu)建好的鏡像通過docker commit 命令提交為新的鏡像,使用docker run 命令重新啟動新的鏡像容器,并將容器中的8080 端口映射到宿主機的8002 端口上,實現(xiàn)地震信息中心網(wǎng)站通過http://宿主機IP:8002 的正常訪問。2.2.2.3 把Docker 鏡像上傳到私有倉庫。在Docker 服務(wù)器上創(chuàng)建一個本地私有倉庫用來存放鏡像文件,這樣可以把制作好的鏡像文件存到本地倉庫,以便供其他開發(fā)人員和運維人員直接下載使用。先通過Docker tag 命令把鏡像標記為私有倉庫鏡像,然后再通過Docker push 命令把標記號的鏡像上傳保存到私有倉庫中。

    3 系統(tǒng)測試

    Docker 技術(shù)具有持續(xù)集成、版本控制、可移植性、隔離性和安全性等特性,本文通過對其在某些方面的優(yōu)勢進行系統(tǒng)測試,來進一步驗證Docker 技術(shù)在災(zāi)害信息網(wǎng)站群中的使用價值。

    3.1 安全性與隔離性測試

    通過對每個容器的CPU、內(nèi)存和IO 資源進行控制,可以避免某個容器因占用太多資源而影響其他容器乃至整個宿主機的性能。本次測試以內(nèi)存為例,在一臺已經(jīng)運行多個容器的Docker 宿主機上,運行stress 壓力測試工具鏡像,設(shè)置內(nèi)存限制資源為128M,同時分別給定內(nèi)存壓力值memory 為120M 和512M,使用默認的memory-swap 值0(表示容器可以使用swap大小為memory 值得兩倍),觀察壓力測試容器運行狀態(tài),如圖4所示。當使用內(nèi)存壓力值120M進行測試時,容器運行正常;使用內(nèi)存壓力值512M進行測試時,容器運行失敗。再次使用內(nèi)存壓力值255M進行測試,由于壓力值沒有達到內(nèi)存限制資源的兩倍,通過使用swap,容器可以運行成功;當使用內(nèi)存壓力值256M進行測試時,壓力值達到了內(nèi)存限制資源的兩倍,容器運行失敗。

    圖4 docker 內(nèi)存壓力測試圖

    測試結(jié)果表明,通過容器的內(nèi)存進行控制,有效地限制了容器對宿主機內(nèi)存的使用,從而避免了因某個容器占用資源過多而影響其他容器乃至整個宿主機性能的情況發(fā)生。

    3.2 快速部署與恢復測試

    和標準部署與集成過程一樣,Docker 可以構(gòu)建、測試和發(fā)布鏡像,這個鏡像可以跨多個服務(wù)器進行部署。當部署多個來自同一個基礎(chǔ)鏡像的容器時,避免了多次復制操作,運維人員通過把運行正常的鏡像存儲到私有倉庫中。當網(wǎng)站出現(xiàn)問題或者需要在其他服務(wù)器部署時,可以第一時間利用倉庫中的鏡像進行快速恢復和部署,提高網(wǎng)站維護效率。本次測試分為兩個階段,第一階段測試通過基礎(chǔ)鏡像部署多個容器的能力以及版本控制功能;第二階段測試快速恢復能力。

    首先,由于疫情在線和地震信息中心網(wǎng)站的開發(fā)環(huán)境都是一樣的,就以web:base 作為基礎(chǔ)鏡像,運行yqzx 和earthweb 兩個容器來部署兩個網(wǎng)站。部署成功后可以保存為v1 版本的鏡像,當后續(xù)涉及到軟件升級等操作時,可以通過保存為v2 版本,實現(xiàn)版本控制功能,如圖5 所示。

    圖5 Docker 鏡像的多版本展示

    其次,通過把運行中的earthweb 容器中的tomcat 程序停掉,制造出網(wǎng)站異常的現(xiàn)象。此時可以直接把當前異常容器刪掉,再直接運行earthweb:v2 鏡像來啟動容器。此時測試網(wǎng)站恢復正常,如圖6 所示。

    圖6 Docker 快速恢復測試

    測試結(jié)果表明,可以通過同一個基礎(chǔ)鏡像同時部署多個容器,實現(xiàn)網(wǎng)站的快速部署。當運行在容器中的網(wǎng)站由于版本升級等原因出現(xiàn)問題時,可以通過運行最新正常版本的鏡像來重新啟動容器,啟動過程也都是秒級的,體現(xiàn)了快速恢復能力。

    4 結(jié)論

    傳統(tǒng)的Web 網(wǎng)站發(fā)布技術(shù)多采用單機提供或者多端口并發(fā)訪問服務(wù),容易造成嚴重的資源浪費和訪問速度緩慢等問題,一直制約著網(wǎng)站群的設(shè)計和建設(shè)。本文在分析云存儲和云計算技術(shù)基礎(chǔ)上,利用Docker 虛擬化容器技術(shù),通過運行多個應(yīng)用實例,實現(xiàn)了將多個不同開發(fā)環(huán)境的Web 網(wǎng)站部署到Docker容器中,解決了在有限的資源條件下實現(xiàn)對災(zāi)害信息網(wǎng)站群的部署困難問題,實現(xiàn)了網(wǎng)站群建設(shè)的快速部署和高利用率。對于開發(fā)測試和運維人員,可以利用Docker 虛擬化技術(shù)直接部署軟件鏡像,完成系統(tǒng)測試和相關(guān)信息發(fā)布,簡化了系統(tǒng)集成、測試和發(fā)布的過程,管理更加簡單方便,這對網(wǎng)站群設(shè)計具有實際應(yīng)用價值。

    猜你喜歡
    鏡像倉庫內(nèi)存
    倉庫里的小偷
    填滿倉庫的方法
    鏡像
    當代黨員(2020年20期)2020-11-06 04:17:52
    四行倉庫的悲壯往事
    學生天地(2020年34期)2020-06-09 05:50:40
    “春夏秋冬”的內(nèi)存
    當代陜西(2019年13期)2019-08-20 03:54:22
    鏡像
    小康(2018年23期)2018-08-23 06:18:52
    消防設(shè)備
    鏡像
    小康(2015年4期)2015-03-31 14:57:40
    鏡像
    小康(2015年6期)2015-03-26 14:44:27
    基于內(nèi)存的地理信息訪問技術(shù)
    伊川县| 长乐市| 轮台县| 务川| 积石山| 通辽市| 富蕴县| 梅河口市| 永春县| 南川市| 禹城市| 山丹县| 东乡| 长武县| 临洮县| 大关县| 嘉禾县| 尼木县| 沐川县| 星子县| 富锦市| 古交市| 丰原市| 宁远县| 宣威市| 巴楚县| 阜平县| 旬邑县| 奈曼旗| 沙田区| 柳林县| 成武县| 黎城县| 启东市| 丰镇市| 红原县| 洛扎县| 手游| 大埔县| 清镇市| 株洲县|