「HOMELAB/DC-LAPTOP」- 可移动数据中心的构想与实现

问题描述

现在,在我们的工作环境中,以笔记本为办公平台,在其上完成例如编码、远程、文档处理等等工作。对于其他数据资源,则保存在远程文件托管服务(例如 NAS 或云盘服务等等)中,通过网络进行远程访问及数据备份;

但是,该方案的最大问题是我们无法保证网络总是可用或高速,在某些特殊工作环境中,或无法访问网络,或网络速度受限,或网络质量不稳定,导致我们无法访问远程文件托管服务中的资源;

所以,我们尝试将经常访问的数据资源本地化,即将常用访问的数据直接保存在笔记本电脑上,并在其上运行备份服务以将我们的数据备份到远程文件托管服务。鉴于此,即使网络资源成为瓶颈,也不会影响我们对数据资源的访问,而远程文件托管服务则作为 极低频访问资源的存储笔记本数据备份的后端存储 而存在;

但是,随着办公平台的扩大,我们平时不得不以 Linux 系统为主要办公环境,但是有的时候会用到 Windows 系统,尤其是需要运行仅支持 Windows 平台的软件(例如企业微信、钉钉、微信等等)。我们尝试更换 Macbook,但并不能解决问题;两个笔记本,携带也不方便;通过 Wine 方案,仅能解决部分软件的运行问题,仍旧存在部分软件无法通过 Wine 来运行;

所以,我们尝试在虚拟机中运行操作系统,将我们的办公环境迁移到虚拟机。我们在宿主机中运行 Linux 操作系统,并在其中部署桌面虚拟化(例如 VirtualBox 等等),并在虚拟机中运行 Windows 操作系统。同时,借助虚拟机的 Guest Additions 组件,实现宿主机与虚拟机之间互操作(例如文件共享、复制粘贴等等)

但是,很多时候两个操作系统(Windows/Linux)都要使用相同的服务。例如:或为了提供网络质量,两个操作系统都需要使用网络加速服务;或为了访问办公网络,两个操作系统都要接入企业 VPN 服务;

所以,我们开始思考,既然虚拟机的流量是通过 NAT 进行网络访问,那能不能在虚拟化中运行路由器操作系统,然后所有的虚拟机操作系统将数据包发往路由器操作系统,而路由器操作系统的其他接口负责将数据包发送到外部网络。这样的网络模型就更加贴近于现实环境的终端网络,事情也变得越来越疯狂……(2018-12-13)

关键词:可移动数据中心、边缘数据中心、便携式数据中心、虚拟数据中心

解决方案

# 12/13/2018 根据我们的想法进行描绘,整个系统原型类似如下:

+-------------------------------------------------+
|   OpenWrt   | Windows VM | Linux VM |    ...    |
+-------------------------------------------------+
|   LINUX + KVM + Storage                         |
+-------------------------------------------------+
|                     LAPTOP                      |
+-------------------------------------------------+

LAPTOP:最底层是笔记本物理硬件本身,所有的环境将运行在其上。这其中既有配电设施,又有冷却设施,运维管理中心则为本机。至于机柜和布线系统,鉴于整个系统的基于多种虚拟化技术实现,所以完全不需要机柜和布线系统;

LINUX + KVM + Storage:向上则是虚拟化环境,运行 Linux 操作系统,并在其中部署 KVM 虚拟化,最后将物理存储加入到 KVM 虚拟化的存储池中,以向上层虚拟机提供存储服务;

OpenWrt:作为虚拟机访问外部网络的网关,所有虚拟机流量将通过 OpenWrt 路由到外部网络。对于 KVM 环境,运行 OpenWrt in QEMU 路由,网络加速也在 OpenWrt 中实现,通过全局流量检查来同时实现 Linux 和 Windows 的网络加速,如此便无需在两个系统中安装客户端;

Windows VM、Linux VM:作为实际我们办公的操作系统,且所有虚拟机网卡与 OpenWrt 网卡位于相同的二层网络,所有的虚拟机流量将发送到 OpenWrt,并由 OpenWrt 的另张网卡发送到外部网络;

虚拟机的数据共享:鉴于多个虚拟机间的很多数据、文件、程序是需要共享的,我们通过用 NFS 或 CIFS 来实现。但是存储还是落在主机上,所以需要使用 KVM 隔离网络来允许虚拟机访问宿主机,这导致但个虚拟机至少有两块网卡;

虚拟机的桌面访问:宿主机具备图形化桌面,我们使用 virt-manager 对 KVM 虚拟机进行管理及桌面访问,对于虚拟机间的复制粘贴,通过 SPICE Agent 能够解决;

如此,我们便能将数据中心装在包里,随身携带。硬件配置要求,取决于个人工作负载,我们平时运行 Linux 及相关的应用就要 16G 的内存,主要是应用程序开的多;