ARM移动云的虚拟机部署
从架构上来说,和 私有云架构 相似,我在Apple Silicon硬件上采用分工不同的两组虚拟化:
底层虚拟机: 一组由3个 Fedora 虚拟机,每个虚拟机分配一个LVM卷作为虚拟磁盘,构建一个 Ceph 分布式存储来模拟云计算底层存储
上层虚拟机: 一组由5个 Fedora 虚拟机构建成一个 Kubernetes 集群,来实现云计算的现代化容器云。这些虚拟机不直接使用物理主机的虚拟磁盘,而是使用 "底层虚拟机" 的分布式存储 Ceph ,虽然结构复杂,但是能够模拟出云计算厂商的技术。
此外,还尝试探索ARM架构的嵌套虚拟化,也就是在 KVM 虚拟机内部再运行虚拟机,这样可以在一台主机上模拟出多个物理主机,理论上可以部署出规模化的虚拟化集群。(性能有限,但是虚拟化无限)
底层虚拟机
按照 移动云架构 ,底层虚拟机运行:
Fedora 37 Server安装 (最小化安装)
移动云计算libvirt网络 配置静态IP地址
更新软件
更新软件并安装
systemd-networkd
(用于配置静态IP):dnf update dnf install systemd-networkd
设置主机名和静态IP
使用 hostnamectl 配置主机名:
hostnamectl --static set-hostname a-b-data-1.dev.cloud-atlas.io
使用 systemd配置静态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地址生效:
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 分布式存储上,和云计算厂商,如阿里云、AWS等相似,通过分布式存储来实现高可用和高性能存储。当出现上前述作为存储的 "底层虚拟机" (对应于云厂商的物理服务)单机故障,不会影响到整个模拟云计算系统的故障。
在上层虚拟机同样采用 Fedora :
作为Red Hat Enterprise Linux企业级Linux发行版的上游项目, Fedora 提供了最新的Linux技术预览,不仅能够尝试最新的社区技术,而且能够兼容Red Hat企业部署
内核主线是目前主流发行版中最新(kernel 6.0.7),可以充分发挥 Apple Silicon 处理器优势
按照 移动云架构 ,底层虚拟机运行:
Fedora 37 Server安装 (最小化安装)
配置静态IP
使用 NetworkManager 命令行
nmcli
完成静态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 权限:
echo "huatai ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers
更新软件
更新软件并安装
systemd-networkd
(用于配置静态IP):dnf update