ARM移动云的虚拟机部署

从架构上来说,和 私有云架构 相似,我在Apple Silicon硬件上采用分工不同的两组虚拟化:

  • 底层虚拟机: 一组由3个 Fedora 虚拟机,每个虚拟机分配一个LVM卷作为虚拟磁盘,构建一个 Ceph Atlas 分布式存储来模拟云计算底层存储

  • 上层虚拟机: 一组由5个 Fedora 虚拟机构建成一个 Kubernetes Atlas 集群,来实现云计算的现代化容器云。这些虚拟机不直接使用物理主机的虚拟磁盘,而是使用 “底层虚拟机” 的分布式存储 Ceph Atlas ,虽然结构复杂,但是能够模拟出云计算厂商的技术。

此外,还尝试探索ARM架构的嵌套虚拟化,也就是在 KVM Atlas 虚拟机内部再运行虚拟机,这样可以在一台主机上模拟出多个物理主机,理论上可以部署出规模化的虚拟化集群。(性能有限,但是虚拟化无限)

底层虚拟机

按照 移动云架构 ,底层虚拟机运行:

更新软件

  • 更新软件并安装 systemd-networkd (用于配置静态IP):

    dnf update
    dnf install systemd-networkd
    

设置主机名和静态IP

设置mobile cloud的虚拟机主机名
hostnamectl --static set-hostname a-b-data-1.dev.cloud-atlas.io
使用systemd-networkd配置mobile cloud的虚拟机IP
cat << EOF > /etc/systemd/network/10-enp1s0.network
[Match]
MACAddress=52:54:00:20:21:ee

[Network]
Address=192.168.8.101/24
Gateway=192.168.8.1
DNS=192.168.8.1
EOF

并切换到 systemd-networkd 使得静态IP地址生效:

NetworkManager切换到systemd-networkd使静态IP生效
systemctl stop NetworkManager.service
systemctl start systemd-networkd.service
systemctl restart systemd-resolved.service

systemctl disable NetworkManager.service
systemctl enable systemd-networkd.service

备注

Fedora 默认使用 NetworkManager 管理网络,我最初想简化为采用 Systemd Networkd服务 来管理网络(毕竟操作系统都采用了 Systemd进程管理器 ),但是我发现 Fedora Server 启用的 Cockpit服务器统一管理平台 网络是采用 NetworkManager ,切换后反而引发不能通过cockpit管理网络的问题,所以我在后续的 ARM移动云的Kubernetes 中使用的虚拟机操作系统,就保留默认 NetworkManager 管理网络。

上层虚拟机

上层虚拟机模拟运行在 Ceph Atlas 分布式存储上,和云计算厂商,如阿里云、AWS等相似,通过分布式存储来实现高可用和高性能存储。当出现上前述作为存储的 “底层虚拟机” (对应于云厂商的物理服务)单机故障,不会影响到整个模拟云计算系统的故障。

在上层虚拟机同样采用 Fedora :

  • 作为Red Hat Enterprise Linux企业级Linux发行版的上游项目, Fedora 提供了最新的Linux技术预览,不仅能够尝试最新的社区技术,而且能够兼容Red Hat企业部署

  • 内核主线是目前主流发行版中最新(kernel 6.0.7),可以充分发挥 Apple Silicon 处理器优势

按照 移动云架构 ,底层虚拟机运行:

配置静态IP

nmcli con mod (connection modify) 修改网络配置(静态IP)
nmcli con mod "enp1s0" ipv4.method manual
nmcli con mod "enp1s0" ipv4.address 192.168.8.101/24
nmcli con mod "enp1s0" ipv4.gateway 192.168.8.1
nmcli con mod "enp1s0" ipv4.dns 192.168.8.1

nmcli con up id "enp1s0"

激活sudo

  • 配置 huatai 用户的 sudo 权限:

配置sudo无密码
echo "huatai ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers

更新软件

  • 更新软件并安装 systemd-networkd (用于配置静态IP):

    dnf update