摘 要:容器作為物理資源的邏輯抽象,資源占用少、部署方便,適合工作負(fù)載突變的互聯(lián)網(wǎng)應(yīng)用模式,如何解決HPC環(huán)境下的軟件依賴問(wèn)題,一直是計(jì)算系統(tǒng)管理員需要解決的問(wèn)題。將服務(wù)發(fā)現(xiàn)的自動(dòng)擴(kuò)展特性與輕量級(jí)虛擬化工具Docker集成,在物理集群硬件上構(gòu)建虛擬集群。通過(guò)對(duì)計(jì)算環(huán)境的隔離,彌補(bǔ)高性能計(jì)算環(huán)境對(duì)軟件的依賴。通過(guò)實(shí)驗(yàn)證明,通過(guò)引入容器技術(shù),可以解決高性能計(jì)算集群軟件依賴問(wèn)題。
關(guān)鍵詞:高性能計(jì)算;容器;自動(dòng)伸縮;服務(wù)發(fā)現(xiàn)
容器技術(shù)是一種操作系統(tǒng)層虛擬化技術(shù),與傳統(tǒng)的虛擬機(jī)技術(shù)不同,容器以進(jìn)程的形式運(yùn)行在宿主機(jī)操作系統(tǒng)中,具有快速部署、輕便靈活的優(yōu)點(diǎn),而高性能計(jì)算(HPC)是一項(xiàng)成熟的技術(shù),它強(qiáng)調(diào)針對(duì)數(shù)字處理應(yīng)用程序的并行性能。在HPC環(huán)境和應(yīng)用程序中采用Docker工具是未來(lái)計(jì)算密集型應(yīng)用程序和數(shù)據(jù)密集型應(yīng)用程序資源集成的重要解決方案。
在傳統(tǒng)的HPC集群中,我們經(jīng)常會(huì)遇到軟件版本和系統(tǒng)特性的沖突,如操作系統(tǒng)、庫(kù)、內(nèi)核等。為了解決這些問(wèn)題,在計(jì)算資源上安裝并提供了許多版本的軟件或庫(kù)。因此,這種方法將增加計(jì)算資源的系統(tǒng)/中間件的復(fù)雜性,進(jìn)而損害系統(tǒng)的穩(wěn)定性。系統(tǒng)管理員必須投入大量的精力來(lái)處理這種情況,而用戶將面臨復(fù)雜的應(yīng)用程序移植環(huán)境。
為了解決這個(gè)問(wèn)題,我們的工作提出了通過(guò)Docker容器構(gòu)建一個(gè)虛擬HPC集群。利用容器技術(shù)的隔離特性,可以構(gòu)造一個(gè)獨(dú)立于其他集群實(shí)例的虛擬HPC集群。還可以根據(jù)需要擴(kuò)展集群的規(guī)模。
一、容器在高性能計(jì)算中的應(yīng)用
(一)HPC高性能能計(jì)算
目前,HPC集群通常運(yùn)行在基于Unix/ linux的操作系統(tǒng)上,通過(guò)消息傳遞庫(kù)(如消息傳遞接口)和共享內(nèi)存指令(如用于并行計(jì)算作業(yè)的OpenMP)高速互連交換信息。一般來(lái)說(shuō),計(jì)算節(jié)點(diǎn)之間的帶寬是影響并行計(jì)算性能的主要因素。通常使用網(wǎng)絡(luò)的無(wú)限帶寬或10gb級(jí)作為互連?;ミB越快,性能就越好。
(二)docker容器
Docker是一個(gè)開(kāi)源項(xiàng)目,它是一個(gè)輕量級(jí)OS級(jí)虛擬化解決方案的實(shí)現(xiàn)。Docker采用的核心技術(shù)是Linux容器(LXC)和多層文件系統(tǒng)UnionFS(統(tǒng)一文件系統(tǒng))。在LXC時(shí)代,IT技術(shù)人員使用cgroup、namespace和chroot來(lái)提供操作系統(tǒng)級(jí)虛擬化。但是,體系結(jié)構(gòu)過(guò)于復(fù)雜,難以復(fù)制或重用。
Docker的目標(biāo)是解決這個(gè)問(wèn)題。通過(guò)封裝,IT技術(shù)人員只需要關(guān)注容器的管理。Docker引擎將負(fù)責(zé)剩下的工作。應(yīng)用程序環(huán)境完成后,可以將系統(tǒng)配置打包到Docker映像中,該映像可以在Docker Hub中發(fā)布和共享。因此,這些工作可以在社區(qū)之間共享,并節(jié)省大量重復(fù)的開(kāi)發(fā)工作。反過(guò)來(lái),應(yīng)用程序的軟件構(gòu)建和部署可以加快。通過(guò)簡(jiǎn)單地遵循將軟件和應(yīng)用程序封裝到服務(wù)中并通過(guò)容器進(jìn)行部署的標(biāo)準(zhǔn)來(lái)部署軟件和應(yīng)用程序已經(jīng)成為一種新的趨勢(shì)。Docker引擎還將處理容器的互連和服務(wù)狀態(tài)。這種系統(tǒng)架構(gòu)被稱為“微服務(wù)”。
通過(guò)采用容器技術(shù),實(shí)現(xiàn)了一個(gè)具有自伸縮功能的虛擬HPC集群原型。證明了虛擬高性能計(jì)算的可行性集群,還可以使用此原型在特定應(yīng)用程序的HPC基礎(chǔ)設(shè)施之上構(gòu)建定制的虛擬HPC集群。然而,性能一直是并行計(jì)算的一個(gè)重要問(wèn)題。我們打算進(jìn)一步研究這個(gè)原型的性能,包括HPC容器之間互連的影響。此外,為了方便該方法的使用,為了實(shí)現(xiàn)HPC-as-a-Service (HaaS)的目標(biāo),需要一個(gè)更強(qiáng)大的容器管理工具,如Docker Swarm或Kubernetes等容器集群架構(gòu)。
參考文獻(xiàn)
[1] https://github.com/hashicorp/consul-template.
[2] Containers & docker: How secure are they?https://blog.docker.com/2013/08/containers-docker-how-secure-are-they.Accessed,25,October,2014.
[3] Device whitelist controller. https://www.kernel.org/doc/Documentation/cgroups/devices.txt. [Accessed 12 October 2014].
[4] A.Kivity,Y.Kamay,D.Laor,and U.Lublin. KVM:the linux virtual machine monitor.In Proceedings of the Linux Symposium, volume 1,pages 225–230.2007.
[5] D.Merkel. Docker:Lightweight linux containers for consistent development and deployment. Linux J. 2014(239), Mar. 2014.
[6] P.Padala, X.Zhu,Z.Wang,S.Singhal,andK.G.Shin.Performance evaluation of virtualization technologies for server consolidation. HP Laboratories,2007.
[7] 韓菲,張海飛,丁宏,張超峰,翁敏華,黃義煊.基于高性能計(jì)算的聯(lián)想智能超算平臺(tái)LiCO的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件工程,2019,22(02):38-41.
[8] 戴霖,高小渭,吳騫華.高性能計(jì)算平臺(tái)構(gòu)建技術(shù)研究[J].通訊世界,2019,26(01):127-129.
[9] 游偉倩,張予倩,盛樂(lè)標(biāo).高性能計(jì)算集群系統(tǒng)中的LDAP用戶管理應(yīng)用[J].電子技術(shù)與軟件工程,2018(16):129-131.
作者簡(jiǎn)介:楊寅冬(1986.12- ),男,漢族,本科,實(shí)驗(yàn)師,安徽郵電職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系,研究方向:計(jì)算機(jī)操作系統(tǒng)。