做者:蔣偉 網易雲信客戶端首席架構師編程
2020年,移動互聯網 DevOps 領域顯現出了規模化運營的趨勢,多數 App 研發大廠均配備了上百人的研發團隊規模,編譯計算的訴求也是與日俱增,用自動化測試節約人力的行爲也是不斷涌現。Mobile DevOps 在解決大規模編譯、自動化測試、交付路上的挑戰十分艱鉅,但在新冠疫情的背景下,研發預算卻趨於保守,如何在這個時代背景下解決高增加的計算需求與低預算之間的矛盾,成了一個亟待解決的難題。後端
本文將介紹 Proxmox 在網易智企旗下網易雲信的實際運用,並提供了節流提效的最佳實踐。咱們將首先介紹 Mobile DevOps 工做中的挑戰,再介紹 Proxmox 的實踐,最後結合移動應用研發 CI/CD 持續集成、持續交付給出具體的效果。安全
當今 DevOps 應該爲不少後臺服務端研發所熟知,從字面意思上講,他是開發+運營的合體,實際上他是一個優秀的軟件交付理念,以加速軟件研發交付一整套工做流程爲目標,不斷改進,持續創新。所以這套理念也經常跟敏捷的工做文化聯繫起來,能夠說敏捷離不開 DevOps,DevOps 是敏捷理念的實踐。服務器
移動應用開發領域與服務端開發有顯著的不一樣,但在 DevOps 上的理念、目標是一致的,通用的。Mobile DevOps 就是以加速移動應用領域的研發交付流程爲目標,儘快響應市場瞬息萬變的需求的一套實踐方法。在2020年,能夠絕不客氣的說,若是要想在激烈的市場競爭中脫穎而出,那麼 Mobile DevOps 就是必備選項。微信
Mobile DevOps 的實現存在一些挑戰,由於移動端和服務端場景的差別,致使 Mobile DevOps 在實現上與服務端 DevOps 會有所不一樣,主要由於如下幾點緣由:網絡
iOS App 的全部編譯都依賴 MacOS 系統的電腦:Mac Mini / Mac Pro,外形大小不一,一般購買超過10臺後就須要自建 Mac 機房,對可維護性、穩定性都是一個巨大的挑戰。架構
Android App 依賴的工具鏈通用性較強,可使用廉價的 PC (Win/Linux)來知足要求,依賴較多不一樣版本的 Android SDK,NDK,Gradle 支持。併發
Mac App 編譯依賴不一樣操做系統版本,有的團隊對 Xcode 版本也有特定的要求。ssh
Windows 操做系統版本,SDK 多樣的操做系統版本匹配的 Visual Studio 的版本也很複雜。函數式編程
絕大部分 Top 10 的團隊基本都能作到2周內發正式版本,1天內針對嚴重問題發佈 hotfix。這就要求 Mobile DevOps 可以作到自動化測試1天內全量完成,不一樣研發小組、各個的 feature 對應 branch 的測試是天天都在併發進行的。所以 DevOps 必需要解決高計算量的需求。
一個10人的團隊至少須要一套自動化編譯、測試機器,若是團隊達到上百人,上千人,這個設備的數量就會呈指數級增加。編譯機器這裏指 Mac Mini、Mac Pro、PC、Linux 服務器,自動化測試手機Android、iPhone 若干等。
以筆者工做過的幾家單位爲例,每一年採購自動化測試編譯機器均以百萬計,再算上設備折舊更新,這筆成本已經事實上變成了每一年的固定支出。
不只採購設備成本居高不下,編譯機器越多,維護成本越大。Mobile DevOps 的每一個操做都須要複製粘貼到數十臺不一樣機器,每次機器升級、設備更新,Mobile DevOps 人員是忙得像熱窩上的螞蟻。
移動構建任務「雲化」聽起來有些超現實,可是隻要解決掉移動構建碎片化的難題,就能夠享受後端開發 DevOps 雲的同等便利。接下來咱們談談考慮私有云的幾個思考過程、遇到的挑戰和解決辦法。
私有云 DevOps 方案主要能帶來如下幾點優點:
找到支持虛擬化的軟件並不難,難在要找到同時具有全平臺虛擬化、擴展性、穩定性、還免費的產品。
咱們嘗試了各類選項組合,列舉了市面上的軟件供應商,以下圖:
支持平臺 | 穩定 | 易擴容 | 費用 | |
---|---|---|---|---|
Hyper-V | Windows | 是 | 容易 | 付費 |
vSphere Hypervisor | Windows,Linux,MacOS | 是 | 容易 | 付費 |
Oracle VM | Windows,Linux,MacOS | 是 | 難 | 免費 |
Proxmox VE | Windows,Linux,MacOS | 是 | 容易 | 免費 |
因而很天然的 Proxmox VE 進入了咱們的視線,他擁有高穩定性、易擴展而且支持多平臺的特性。在進行篩選調研以後,咱們決定使用 Proxmox VE 來實現網易雲信的私有云方案,助力 Mobile DevOps 工做。接下來咱們先對它作一個簡單的介紹。
Proxmox VE 是一款強大的企業級虛擬化開源軟件,經過一個簡單的 Web 界面便可管理容器,定義機器 CPU、磁盤容量、網絡配置而且具有集羣式管理功能,它支持虛擬化 Windows、Linux 以及各類其餘操做系統。在這裏咱們基於 Proxmox V6.2 的版本展開討論。
這裏先貼上圖,直觀感覺一下它的管理界面。
詳細的安裝過程咱們將在本文最後詳細展開。先來看一下使用了 Proxmox 以後,網易雲信在私有云方案的 Mobile DevOps 上發生了什麼變化。
左側爲一臺普通聯想 PC 的磁盤讀寫性能,右側是一臺 Proxmox Windows RAID 磁盤的性能,能夠對比看出使用了 Proxmox 後文件讀寫直接提升了8~10倍。
由於高效率的內存共享,平時 16GB 緊巴巴的機器,直接共享直至 256GB 的內存,徹底無壓力。CPU 也能夠設置很是高的配置,讓 Proxmox 動態分配直至最高性能。
下圖是一個 Jenkins Job 不一樣硬件的先後對比,編譯時間直接從 15 分鐘提速到只須要 3 分鐘!
還記得 Mobile DevOps 天天在不一樣的機器之間逐個進行配置維護管理嗎?不只容易犯錯,丟三落四的腳本沒有執行到位,還會發生不可控的風險。
使用 Proxmox VE 以後,不再必如此費心處理了。只須要配置完成一個樣本機器,直接複製、粘貼,一臺如出一轍的機器就製做完成了,只須要修改一下節點機器的 IP 設置,便可完成機器配置。若是使用的是 DHCP,那就完全免維護搞定。
兩臺 R730 價格大約 15w,至關於團隊購置多少臺機器呢?
價格優點,顯而易見,並且購買各種機器閒時資源浪費嚴重,遠不如共享私有云服務器效率高。
下面咱們詳細爲你們介紹,網易雲信從採購流程開始到安裝完成 Proxmox 的全過程。
簡單來講, Proxmox VE 是一個基於 Debian 操做系統+虛擬化軟件的套餐。軟件通常是安裝在服務器上,放入機房交給 IT 統一託管的,畢竟你們都知道 UPS 電源、統一製冷,這些都是不小的硬性要求。所以採購刀片式服務器放入機房就是第一步。
那麼採購多大的服務器配置就成了第一步慎重的選擇,這裏能夠談談咱們的配置計算方式。
那麼測算基本能夠用:團隊成員數量 x 0.5 得出每時每刻都有需求在編譯的 CPU 數量、內存需求等等。
以網易雲信爲例,咱們通過測算,平均須要 iOS/Android/Windows/MacOS 每一個平臺同時 3 個 Job 的併發能力,那麼就是須要臺 12個MBP 的算力,因而咱們選擇了2臺 Dell R730 從線上機房退役下來的機器。(節約公司成本,技能點 get 了嗎~)
內存是越多越好,高併發的編譯計算很是耗內存,咱們乾脆升級配置到 256GB 的內存條。
磁盤空間是按需配置,通常來講 MacOS 必需要配置 SSD 的,Windows 設備可使用 Raid 磁盤矩陣,速度也能夠作到很是快,待會兒會有圖說明。以咱們爲例,爲每臺機器配置了 1TB SSD,8TB RAID HDD。
好了,廢話很少說,採購流程完畢,下面進入安裝服務器軟件階段。
這時候我是不會告訴你服務器機房冷到讓人瑟瑟發抖,緣由我就很少說了,反正我是穿着T袖進去的。
第一步到這裏 https://proxmox.com/en/downloads/category/iso-images-pve 下載 ISO,燒錄到 USB 磁盤做爲引導安裝盤,進入引導畫面後的安裝過程了,一路點 Next按照步驟填寫便可。
通常機房是要求固定 IP 地址的,建議這一步慎重配置好,另外建議網口使用 10GB 帶寬的網線。
至此畫面,安裝完畢,自動重啓後,你就能夠離開瑟瑟發抖的機房了。
在全部的機器安裝好了以後,先登陸每臺機器對應的管理界面,例如 https://192.168.1.141:8006,只須要找到一臺做爲主控制器,點擊 Create Cluster,複製粘貼加入信息,到其餘機器上粘貼,便可一鍵加入集羣管理。至此,你就能夠在任意一臺管理界面上管理您的全部集羣。
先跑到這個界面,熟悉一下機器的磁盤配置分區信息,爲接下來的系統安裝作準備。
要想安裝幾個操做系統,每一個分別須要多大磁盤、多少 CPU、多少內存,這些都得提早作好計劃。咱們第一期規劃是這樣子作的,以下圖:
安裝操做系統的 ISO 都是放在/var/lib/vz/template/iso 目錄下面。通常可使用 ssh 命令登陸到 Proxmox 終端,直接命令行下載操做系統,也能夠支持 SFTP 直接傳輸,甚至是 NFS 的方式去掛載遠程磁盤。
等完成了系統的下載,即可以在 local 磁盤的 content 內看到 ISO 安裝盤。
首先給你的虛擬機取一個名字,這裏通常推薦 OS+Version+IDE 工具鏈+version,例如 Ubuntu18.04+AndroidR10 以便於區分。
注意要勾選 Advanced 選項,選中 Start at boot,這樣就算 Proxmox 機器重啓,你的虛擬機也會自動啓動。
下拉選擇啓動 ISO 文件:
磁盤就要根據需求選擇 HDD 仍是 SSD,設置容量大小,Cache 模式默認便可,通常來講 Write Back 模式能夠得到更好的性能。
值得一提的是,SCSI 雖然提供了最佳的性能,但並非全部操做系統默認就支持,Linux 默認是支持的,Windows 則不支持,須要在啓動盤區域提早下載好驅動盤,添加第二個 CD ROM,而且動態的搜索驅動安裝 SCSI 硬盤支持。
CPU 通常能夠選擇 2 個 Core,Sockets 插座意味着物理 CPU 的數量,所以實際 Total Core 是他們相乘的結果。若是你須要超強的性能,你能夠設置32核,甚至更多,Proxmox 會動態分配 CPU 計算力,若是隻有你的任務在執行,那麼則會分配至高到你的設置數值。
內存配置,你能夠選擇彈性共享內存,最低 2GB 最高 16GB 內存。這樣比較節約資源,通常來講 Ubuntu 只須要 16GB 內存,Windows 就須要 16~32GB 內存最佳。
網絡適配器,選擇默認或者 RealTek 網卡適配器都是能夠的。
最終確認,記得勾選 Start after created 便可。
至此你已經學會了如何安裝配置一臺虛擬機,操做系統的安裝與單機安裝操做系統基本一致,就不在此贅述。
至此,簡單介紹了網易雲信在 Mobile DevOps 上經過 Proxmox 的實現節流提效的過程。
網易雲信在採用了基於 Proxmox VE 的移動私有構建雲方案後,顯著提升了編譯速度,持續集成變得更頻繁,迭代週期變得更短,自動化測試比例進一步提升,研發設備成本獲得了顯著控制。
Proxmox VE 在國內依然不爲衆人所熟知,還有不少應用場景還未獲得進一步的開發驗證,諸如設備備份,磁盤擴容,不宕機維護等。網易雲信一直在技術領域深耕,期待有更多的同行進行切磋交流。
蔣偉,網易雲信客戶端首席架構師,跨平臺研發專家。2006 年畢業後從事 Mobile 開發領域,曾在 ZTE、Orange、RingCentral 等任資深研發經理。2020 年加入網易,現任網易雲信客戶端組技術負責人,全面負責網易雲信客戶端 IM、音視頻 SDK 的架構設計與研發,對跨平臺研發、音視頻、DevOps 均有多年的工做項目經驗,平時熱衷於函數式編程、DevOps 持續集成。
更多相關技術內容,歡迎關注【網易智企技術+】微信公衆號