【華為雲技術分享】華為雲鯤鵬雲服務移植指南和實踐案例(上)


【摘要】 從應用語言出發,分享應用鯤鵬移植理論和方案,基於應用移植案例,分享鯤鵬應用移植成功經驗。

主講人:華為雲鯤鵬雲服務與解決方案架構師 王龍江

一、鯤鵬雲服務解決方案回顧

前期,在上一次直播,我們的同事應該已經給大家分享過了華為雲的鯤鵬雲服務以及鯤鵬雲服務解決方案,本次,我們先來回顧一下。因為有些朋友可能是第一次聽,所以,給大家簡單回顧一下華為雲的鯤鵬雲服務以及解決方案

其實本質上來說華為的雲服務從最底層來說,我們是基於華為公司自己研發的鯤鵬920的這樣一個高性能的CPU,然后完成了以后,我們之后還做成了華為自己的雲服務器,在服務器之上,我們構建了自己的一個雲的操作系統,我們把它叫做瑤光。然后完成了以后基於雲的操作系統之上,我們把基於華為雲的鯤鵬920這個CPU,做成了各種各樣的雲服務,我們有我們的彈性雲服務器的服務,我們有裸金屬服務器的服務,我們有鯤鵬的服務器服務,鯤鵬的數據庫服務,鯤鵬的緩存服務以及后面我們的鯤鵬的微服務平台,鯤鵬的大數據服務,等等這樣一個鯤鵬系列的雲服務。

在鯤鵬系列的這樣一個雲服務之上,我們現在也在積極的孵化一些解決方案,包括我們現在的高性能計算解決方案,大數據+AI的解決方案,一些基於鯤鵬架構的原生方案以及一些企業應用,或者說國產應用的一個聯合的解決方案,做華為雲這樣一個平台,我們現在也在積極的拓展多樣化的生態。我們現在主要是從技術這一個維度的生態,產業生態,以及開發者的生態這三個維度在積極拓展我們鯤鵬雲服務的生態。從這些圖上大家可以看到對於華為雲,我們不只是單單有芯片或者設備,我們是努力的基於鯤鵬做成一個全棧的這樣一個雲服務的解決方案。這是鯤鵬雲服務的大致的介紹背景的內容,這和上次我們的同事介紹的內容應該是一致的。

image.png

二、鯤鵬雲服務移植流程

接下來,我們會重點介紹一下干貨。就是說對於鯤鵬雲服務,因為大家知道華為的這個鯤鵬雲服務是兼容ARM架構的,然后,它有別於傳統的x86的架構,那么如何去使用,或者說如何把應用移植到華為的鯤鵬雲服務上呢?之前有些朋友可能不是很了解,所以會覺得這個東西會不會很難或者說會不會有一些坑。關於鯤鵬雲服務,我們有一個概念,但其實,我想真正給大家介紹一下鯤鵬的這種移植流程,大家可以通過這樣一個移植流程去進一步的了解到原來鯤鵬雲服務其實和大家正常使用的這種彈性雲服務器,物理服務器或者數據庫服務器其實是一樣的。

其實在華為雲上只有三個元素,大家能夠強烈的感知到這是鯤鵬雲服務,那么是哪三個服務呢?就是我們的彈性雲服務器,我們的裸金屬服務器服務,還有我們的容器服務。因為這三個服務都是直接的運行的應用程序,但是在其它的鯤鵬雲服務,比如基於鯤鵬芯片的雲存儲服務,基於數據庫服務器的服務,其實大家更關心的是,例如,我們購買了一個MySQL5.6的計算實例,但是其實大家不太關心這個數據庫底層運行的是x86還是鯤鵬,但是對於剛才我們所說的我們的彈性雲服務器,也就是我們的ECS服務,我們的裸金屬服務,我們的容器來說,因為我們底層的這個CPU的架構,是有別於傳統的x86的這樣的架構,我們底層的架構,是華為自己的鯤鵬架構,雖然我們也兼容一個ARM的應用架構,但是,我們在做應用移植的時候我們就需要根據應用的特點來區分怎么樣去移植。首先其實我們比較好的一個切入維度,就是我們應用所使用的語言作為第一個切入維度,去分析我們這個應用合不合適跑在鯤鵬雲服務器上。

語言的話,我們做了一個簡單的分類,主要是分成三大類,第一大類是解析性語言,它的代表語言是Java,Python,還有Go語言,其實這三類語言本身就是能夠支持跨平台運行的,所以說這三個語言,對我們來說,只要運行環境是可以的,例如Java,只要我們能很好的支持jdk這樣的語言的運行環境,那么這語言本身就是跨平台的,無論底下是x86也好,鯤鵬也好,我們其實是基本上可以做到沒有困難地遷移到華為雲的這個鯤鵬雲服務器上面去。如果說是C或者是C++這樣的編譯型語言,因為這些語言的交互還是會和底層的CPU有一定的關系, CPU架構和指令集架構是有一定的關系的,所以,我們需要去區分這些應用程序的來源,如果是開源的一些軟件,我們華為雲其實可以連同一些社區去做協同,然后你做相應應用語言的重新編譯來做到與鯤鵬雲服務器的適配。如果說是自研軟件的話,我們一些合作伙伴自己研發的軟件,我們可以支撐我們的合作伙伴在雲服務器上重新編譯一次,然后來做鯤鵬雲服務的一個應用適配。

但是確實也會遇到一些商業的閉源軟件,商業閉源軟件的話,我們可以通過商業合作的這樣一個方式去做重新編譯,或者說暫時商業閉源軟件重新編譯需要一定時間的話,華為雲上我們其實也是可以考慮x86和鯤鵬雲服務器的混合部署的一個方案。當然,實話實說,目前如果是基於windows操作系統的一些開發語言,例如像.net這樣一些語言,我們現在暫時還是不能夠支持的,所以,現在我們會推薦鯤鵬雲服務和x86混合應用的方案,因為華為的雲服務,既有x86的計算平台,也有鯤鵬的計算平台。所以通過從語言入手,其實我們就已經很清晰的解釋了哪一類應用比較容易上鯤鵬雲服務器,其實就是基於Java,Python,Go等解析語言的,因為它天生就是跨平台的。對於C++的,我們就需要重新去編譯一次。

image.png

除了上一頁以外,其實我們還有一些更詳細的介紹。其實對我們來說,有一部分,特別是C和C++,特別是需要涉及到一些匯編的話,這些相應的應用程序,我們確實是需要一定的工作量,然后我們需要重新去編譯,或者說重新去做一些代碼級別的修改,這也是有可能會產生的一些工作量,但是如果是Java類的這種語言或者說Python或者Go,本質上來說我們在安裝好了的這樣一個公共版本的JVM的話,我們就可以直接支持相應的這樣一個語言的軟件的移植。

image.png

這里簡單的舉兩個例子,就是類似像解釋性語言的這種開發環境,我們大概去做這樣一個應用程序的更新的話其實比較簡單。以Java為例,第一步,我們需要把語言的這種環境安裝好,CentOS上面像Java的openjdk,其實只要簡單的操作,因為我們現在能夠支持的操作系統有CentOS,有華為自己的歐拉操作系統,后面我們會支持一些國產的操作系統,例如中標、銀河麒麟等國產操作系統,這些操作系統本質上已經帶好了這種支撐,能夠支持鯤鵬架構的基礎的一些運營環境,一些相關的依賴的軟件的環境。所以現在在CentOS上面,我們可以直接用樣本命令行去安裝openjdk,我們把這個裝好以后,需要把這個相應的Java程序代碼拷上來,然后完成以后,如果需要組件的話,我們需要把相關的應用組件安裝上,例如我們常用的一些MySQL、Nginx、TomCat這種組件,都可以在鯤鵬雲服務器上做安裝部署。安裝部署完成以后,我們就可以很好的去把相關的應用在鯤鵬雲服務器上做性能測試和兼容性測試。

image.png

如果是基於編譯型語言的話,其實大家都知道,例如像C和C++這樣的語言的應用程序,我們可以把源碼下載下來,下下來了以后,我們可以去做一個相應的編譯的工作,熟悉C語言編譯的朋友應該會知道,標准的編譯執行就是configure,make,make install等,這種方式和x86的服務方式是一樣的,然后如果我們把這個程序在我們的鯤鵬的雲服務器上面重新做一次編譯的話,我們也能做到基於C語言的這種相關的應用程序能夠在鯤鵬雲服務器上的適配。

image.png

現在,基於我們的一些成功經驗,其實大量的應用程序,它的物理架構,大多數都還是比較簡單的,但這種比較簡單的應用程序的物理架構是什么樣的呢?是負載均衡作為接入,然后加上我們的應用服務器,加上數據庫服務器的這樣一個物理架構,那么它對我們的一些要求就是我們的鯤鵬雲服務器應該支持什么,我們要支持相應的Haproxy,Nginx,Apache,我們要支持Redis,Memcrched這種緩存,以及一些數據庫,例如MySQL數據庫,PostgreSQL數據庫,還要支持數據庫的一些HA,例如Keepalived這種工具性的組件。像這些組件的話,我們畫在圖上的相應的組件,其實現在華為的鯤鵬雲服務都已經能夠支持了,所以絕大多數上市的這種應用系統,或者說咱們絕大多數企業所使用到的相關的這些應用軟件,在我們的這個鯤鵬雲服務器上面,都已經能夠很好的適配了,后面,我們也會介紹我們其實把相關的組件適配以后,都放在了我們的華為雲官網上線的鯤鵬的開發者社區里面,后面我會給大家展示一下。

image.png

然后完成了以后,用這些相應的組件,我們就可以去支撐相應的一些Web服務或者Web應用,像論壇、電商、網站這類的應用在華為的鯤鵬雲服務器上的運行,其實我們這些組件,還是可以支持我們的一些設備,不管是虛擬機,還是我們的裸金屬服務器,還是我們的容器,我們都是可以去支持的。但是這一塊,實話實說,之前會有一些朋友產生一些困擾,就是我如果把我的應用部署在容器平台里面,我只要有容器的鏡像,我是不是就不用關心底層用的是鯤鵬也好,用的x86也好,但實際上確實是因為我們底層的CPU架構的指令集的不同,如果是容器平台的這種傳統的x86的這種鏡像的話,也需要做一次鯤鵬雲服務器的適配。只有我們在鯤鵬雲服務器上打包好了這樣一個鏡像,才能在鯤鵬的容器平台上很好的運行。之前我們會有一些朋友產生一些誤解,當然,我們剛才上一頁講到的主要都是一些開源的組件,我們現在也能夠支持一些商業版本的國產的組件,例如東方通中間件,金蝶天燕的中間件,中標麒麟的操作系統,銀河麒麟的操作系統,我們也能夠支撐國產的一些數據庫,像達夢數據庫,南大數據庫,都是我們鯤鵬雲服務器現在已經能夠支撐的國產的商業級服務。

image.png

這里給大家舉一個例子,這個例子是我們之前的一個合作伙伴,他做一個智慧消防的應用,然后能成功移植到華為的鯤鵬雲服務器上面的這樣一個例子。為什么用這個應用來舉例子呢?因為這個應用是非常有代表性的,它對外提供的是一個智慧消防的數據呈現的一個應用平台,但本質上來說它其實是一個Web服務,他用到了TomCat,也用到了Nginx,他外部緩存用的是Redis數據庫,用的是MySQL,他下面的語言是Java和PHP都用了一部分,其實他們做華為雲服務的這樣一個移植,是非常非常簡單的,那么這個怎么做呢?其實第一步是先把組件安裝好,比如我們把openjdk安裝好,剩下的我們可以把一些組件例如TomCat,Redis等yum install一下。但是有一些組件暫時還不能通過操作系統直接做yum install操作,例如MySQL,我們可以做到支持客戶和合作伙伴的自己去編譯,我們現在已經有MySQL這樣一個最佳實踐了。通過這個實踐,我們可以做到支撐MySQL的自己編譯的這樣一個部署。只要我們把數據庫MySQL部署好,Nginx和Redis部署好,然后把Java的運行環境部署好,把客戶的應用程序上傳,然后傳完了以后就可以做相應的啟動。

image.png

現在大家也知道,包括華為雲,我們現在也在積極的支持我們的很多的合作伙伴,還有我們的很多的客戶去發展這樣一個鯤鵬的生態,所以我們現在也構建了一個非常完善的服務體系,來支撐我們的鯤鵬生態,我們能夠幫助到我們的合作伙伴或者我們的客戶,來做相應的鯤鵬應用的移植的可行性分析,來幫助指導我們的移植方案設計,如果在移植過程中有一些重大的困難點,我們可以做一些重難點攻關,包括一些專家的攻關,或者說對一些我們現在的能力的不滿足,我們可以基於我們現在的合作伙伴的需求,重新做一些新的需求。我們能夠支持一些合作伙伴應用系統的性能調優,然后調優以后,如果還是不滿足,我們可以有專家再支持攻關,我們也可以支持合作伙伴做相應的上雲的方案設計,因為我們做完了應用移植,最終還是希望能夠真正的有終端的用戶去使用我們基於鯤鵬雲服務器的相關的方案,所以我們就會去支持合作伙伴,或者幫助客戶去做單元的方案的設計。不只是說部署方案,我們還要幫助設計遷移、容災、混合雲的方案,而且我們能夠支持所相應的公有雲、專屬雲、HCSO等多種方案以及安全性的設計。最后我們其實是有相應的運維和服務來給客戶和合作伙伴提供相應的后續服務。

image.png

這里其實我們也准備了很多相關的材料,來提供給我們的合作伙伴和客戶,其實根據我們相關的材料和指導文檔,大家都可以做到去鯤鵬雲服務器上去做應用移植和編譯。其實現在華為鯤鵬雲服務發展的也非常快,所以我們也准備了一些為了方便溝通的客戶信息調研或者伙伴軟件信息調研的表,如果在華為雲鯤鵬雲服務器上,做完了一個應用測試,后面想加入華為雲的鯤鵬凌雲計划,想成為華為的合作伙伴,一些應用想通過華為雲的鯤鵬雲服務的兼容性認證,我們都准備好了測試報告的模板。其實只要大家后續提出加入我們這個鯤鵬凌雲計划,我們都會有同事來聯系大家,去做相應的信息收集以及方案評估。

戳→視頻

以上文字內容由【內容眾創小組-梔】整理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM