.. _real_cloud_think: =========================== 云架构思考 =========================== 最近我在思考如何更有效使用现有硬件来构建模拟大规模云计算的环境,在使用 :ref:`alpine_linux` 构建计算节点(使用 ``extended`` 模式)时,触发了我新的构想: 我们知道阿里云这样的云计算厂商,在线上部署了数以万计(几十万或更多)的ECS服务器,其数据存储完全基于分布式存储实现: - 每个物理服务器( ``裸金属`` 服务器)都不使用本地磁盘,你可以将这样的物理服务器视为 ``上古时代`` 的无盘服务器,启动后挂载了一个巨大的 ``云盘`` (分布式存储提供的块存储) - 底层分布式存储的多副本存储确保了集群服务器故障不会导致数据丢失和服务中断 - 单计算节点故障可以迅速替换服务器硬件,由于数据存储在分布式存储中,可以随时重新加载 - 虽然分布式存储由于多副本存储和网络等开销,导致性能损耗,但是通过将分布式存储规模提升,通过并发方式弥补性能损耗,甚至可以获得不亚于本地存储的性能;此外,随着万兆(甚至更高)网络、高速SSD、RDMA、智能(加速)网卡、DPDK等技术兴起,分布式存储的性能得到了极大提高 最初我部署模拟云计算环境,采用的是单台笔记本电脑部署 :ref:`kvm` 虚拟机来实现集群模拟,但是存在以下不足: - 笔记本电脑单机单硬盘,一旦故障或维护失误,会导致本机系统摧毁,重新部署完整的KVM虚拟化环境并恢复虚拟机需要花费很大的时间和精力 - 数据难以备份,或者说自己忽略了备份,已经发生过几次数据丢失问题 - 虽然 :ref:`arm_k8s_deploy` 集群,但是经常出现单个主机故障使得自己不得不重复恢复主机,非常枯燥乏味 集群命名构想 ============= 我是一步步部署和改进的,所以实践和最初构想有很大的差异,逐步形成了4个模拟集群: .. csv-table:: 模拟云计算规划 :file: real_cloud_think/cloud.csv :widths: 20, 50, 30 :header-rows: 1 基于树莓派ARM的边缘云计算 ====================================== 在学习和实践 :ref:`alpine_extended` 想到解决方案: - 我有多个树莓派设备,可以构建基于 :ref:`ceph` 和 :ref:`gluster` 的分布式存储作为整个私有云的底层设施 - 3台 :ref:`pi_4` 通过外接USB SSD存储构建 :ref:`ceph` ( :ref:`usb_boot_ubuntu_pi_4` ) ,提供给集群中所有服务器作为 :ref:`kvm` 和 :ref:`docker` 运行存储卷,并且通过 :ref:`openstack` 和 :ref:`kubernetes` 完成自动化卷挂载 - 上述3台 :ref:`pi_4` 构建的 :ref:`ceph` 分布式存储通过 ``RBD`` 输出存储块设备提供集群中所有服务器作为数据盘,所有计算服务器将使用 :ref:`alpine_extended` 技术(解构该技术同样用于不同Linux版本)挂载远程ceph存储,所有数据都集中、多副本存储,提供高可用存储 - 3台 :ref:`pi_3` 通过外接USB机械大容量硬盘构建 :ref:`gluster` ,提供给集群所有服务器作为文件近线和离线存储,实现数据的高可用 - 通过分布式存储实现数据可靠性,所有计算都在分布式存储之上构建,模拟阿里云架构 - :ref:`kubernetes` 和 :ref:`openstack` 结合分布式存储,实现容器和虚拟机的高性能、高可用(热迁移)和自动化 在实践过程中,上述构思逐步演进成构建 :ref:`edge_cloud_infra` ,参考 :ref:`turing_pi` ,构建一个低功耗ARM集群。这个集群是位于用户(我)的手边,提供日常学习、开发和娱乐的数据集群,所以采用精简的请谅解解决方案,并部署适合学习、开发和娱乐的 :ref:`info_service` : - 媒体服务: :ref:`kodi` 实现个人视频娱乐 - 电子邮件: - 即时消息: 作为各种internet即时消息的集成HUB 优点和缺点 ----------- 上述使用SOC ARM微型计算机和个人笔记本电脑的云计算模拟环境 - 优点 - 设备采购方便,都是市场上非常常见的个人电脑设备 - 安静:由于是小型设备,耗电量小,所以工作起来几乎无声,随便扔在角落里也不影响工作生活 - 缺点 - 设备性能有限,特别是无法实现数据中心高性能计算、高性能网络和存储,所以无法模拟和体验最新的服务器技术。当你学习和实践到一定阶段,追求性能优化和分析,类似家用设备就无法满足需求 - 总体持有成本较高: 虽然单个设备价格低廉,但是架不住需要很多个设别才能模拟大规模集群,所以累计起来投入成本很高 - 设备连接繁琐: 设备多了以后,连接设备和存放设备很麻烦 基于二手服务器的云计算 ========================== 目前在二手市场,上一代服务器,如 :ref:`hpe_dl360_gen9` 和 :ref:`dell_r630` 基本系统(采用低成本 :ref:`xeon_e5-2600_v3` )售价非常低廉(约1000元出头),对于个人技术爱好者,可以用来构建服务器虚拟化场景,通过 :ref:`kvm_nested_virtual` 模拟大规模服务器集群。 二手服务器主要的成本在于: - CPU: 目前 :ref:`xeon_e5-2600_v3` 价格低廉,但是对高级特性支持不佳, :strike:`最终还是需要升级到` 不过基本没有必要升级 :ref:`xeon_e5-2600_v4` ,因为实际个人测试对计算性能要求有限,而真正影响运行 :ref:`kvm` 虚拟机的是内存(所以推荐采用服务器来模拟云计算,可以支持数百GB内存) - 内存: 服务器内存价格加高,即使二手也比较昂贵, :strike:`近几年的芯片荒更推高了价格` 可以在内存价格合适时升级扩容 - 存储: 需要购置 :ref:`nvme` 设备,由于必须采用全新存储(数据安全第一),并且需要至少购置3个存储设备,所以成本投入极高 总之,二手服务器能够实现各种服务器技术,对于技术磨练还是很有帮助,不过如果要构建较好的实验环境,依然需要投入不菲的资金。可能的情况下,可以采用逐步升级方式,从最基本配置逐步过渡到高级配置。 .. note:: 虽然我在撰写Clout Atlas最初的构思是采用笔记本和树莓派,但是随着技术逐步深入,依然感觉有很多服务器技术缺憾。所以,我推荐采用二手服务器设备来模拟云计算。