Mobile DevOps 之 Proxmox 实现节流提效

做者:蒋伟 网易云信客户端首席架构师编程

简介

2020年,移动互联网 DevOps 领域显现出了规模化运营的趋势,多数 App 研发大厂均配备了上百人的研发团队规模,编译计算的诉求也是与日俱增,用自动化测试节约人力的行为也是不断涌现。Mobile DevOps 在解决大规模编译、自动化测试、交付路上的挑战十分艰巨,但在新冠疫情的背景下,研发预算却趋于保守,如何在这个时代背景下解决高增加的计算需求与低预算之间的矛盾,成了一个亟待解决的难题。后端

本文将介绍 Proxmox 在网易智企旗下网易云信的实际运用,并提供了节流提效的最佳实践。咱们将首先介绍 Mobile DevOps 工做中的挑战,再介绍 Proxmox 的实践,最后结合移动应用研发 CI/CD 持续集成、持续交付给出具体的效果。安全

什么是 Mobile DevOps?

当今 DevOps 应该为不少后台服务端研发所熟知,从字面意思上讲,他是开发+运营的合体,实际上他是一个优秀的软件交付理念,以加速软件研发交付一整套工做流程为目标,不断改进,持续创新。所以这套理念也经常跟敏捷的工做文化联系起来,能够说敏捷离不开 DevOps,DevOps 是敏捷理念的实践。服务器

移动应用开发领域与服务端开发有显著的不一样,但在 DevOps 上的理念、目标是一致的,通用的。Mobile DevOps 就是以加速移动应用领域的研发交付流程为目标,尽快响应市场瞬息万变的需求的一套实践方法。在2020年,能够绝不客气的说,若是要想在激烈的市场竞争中脱颖而出,那么 Mobile DevOps 就是必备选项。微信

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 必需要解决高计算量的需求。

维护 CI 设备成本愈来愈高

一个10人的团队至少须要一套自动化编译、测试机器,若是团队达到上百人,上千人,这个设备的数量就会呈指数级增加。编译机器这里指 Mac Mini、Mac Pro、PC、Linux 服务器,自动化测试手机Android、iPhone 若干等。

以笔者工做过的几家单位为例,每一年采购自动化测试编译机器均以百万计,再算上设备折旧更新,这笔成本已经事实上变成了每一年的固定支出。

不只采购设备成本居高不下,编译机器越多,维护成本越大。Mobile DevOps 的每一个操做都须要复制粘贴到数十台不一样机器,每次机器升级、设备更新,Mobile DevOps 人员是忙得像热窝上的蚂蚁。

为何考虑企业私有云计算的解决方案?

移动构建任务“云化”听起来有些超现实,可是只要解决掉移动构建碎片化的难题,就能够享受后端开发 DevOps 云的同等便利。接下来咱们谈谈考虑私有云的几个思考过程、遇到的挑战和解决办法。

为何考虑私有云的 DevOps 方案?

私有云 DevOps 方案主要能带来如下几点优点:

  • Security 安全性:私有云意味着代码的绝对安全,全部编译都发生在物理机房内,绝无外部访问的安全性漏洞;
  • High availability 高可用性:私有云与 Git 代码仓库在同网络下拥有无与伦比的优点。以网易为例,代码内网checkout 速度高达 150M/s,一份 WebRTC 代码高达 20GB 之巨,若是使用公有云方案几乎是噩梦,并且有不少工程有自然的复杂性,颇有可能引用了多个内网的 submodule 或者是外网的库依赖,迁移改造代价大,收益低;
  • Scalability 高扩展性:跟许多公有云方案同样,私有云一样具有集群式管理,能够简单的复制粘贴,一台新的构建机器就建立成功了;

私有云的挑战

找到支持虚拟化的软件并不难,难在要找到同时具有全平台虚拟化、扩展性、稳定性、还免费的产品。

咱们尝试了各类选项组合,列举了市面上的软件供应商,以下图:

支持平台 稳定 易扩容 费用
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 简介

Proxmox VE 是一款强大的企业级虚拟化开源软件,经过一个简单的 Web 界面便可管理容器,定义机器 CPU、磁盘容量、网络配置而且具有集群式管理功能,它支持虚拟化 Windows、Linux 以及各类其余操做系统。在这里咱们基于 Proxmox V6.2 的版本展开讨论。

这里先贴上图,直观感觉一下它的管理界面。

Mobile DevOps 工做大变样

详细的安装过程咱们将在本文最后详细展开。先来看一下使用了 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,至关于团队购置多少台机器呢?

  • 2台2020款新 Mac Pro (20w);
  • 20台联想台式机 PC (20w);
  • 20台 Linux 编译机器 (15w);
  • 额外再配备 2-3 名 DevOps 维护人员;

价格优点,显而易见,并且购买各种机器闲时资源浪费严重,远不如共享私有云服务器效率高。

云信使用 Proxmox VE 详细安装流程

下面咱们详细为你们介绍,网易云信从采购流程开始到安装完成 Proxmox 的全过程。

采购服务器机器

简单来讲, Proxmox VE 是一个基于 Debian 操做系统+虚拟化软件的套餐。软件通常是安装在服务器上,放入机房交给 IT 统一托管的,毕竟你们都知道 UPS 电源、统一制冷,这些都是不小的硬性要求。所以采购刀片式服务器放入机房就是第一步。

那么采购多大的服务器配置就成了第一步慎重的选择,这里能够谈谈咱们的配置计算方式。

  • 一款 2020 年 Intel CPU 的标准高配是 8核,i9, 2.3GHz, 16GB 内存;
  • 一款联想启天商用 PC 差很少是 6核,i5-9500, 3.0GHz, 16GB 内存;

那么测算基本能够用:团队成员数量 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 持续集成。

更多相关技术内容,欢迎关注【网易智企技术+】微信公众号

相关文章
相关标签/搜索