自从 Raspberry Pi 4 发布以来的一年里,我看到了许多关于 4GB 型号如何与 Kubernetes (K8s)、轻量级 Kubernetes (K3s) 和 Docker Swarm 等容器平台良好协作的教程(例如 这篇 和 这篇)和 文章。 在我进行研究时,我了解到 Arm 处理器在 OpenStack 中是“一等公民”。 既然 Raspberry Pi 基于 Arm 架构,我决定通过在 Raspberry Pi 集群上安装 OpenStack 来验证这一理论。
准备工作
对于这个项目,我需要考虑几件事
- 是否使用 Ubuntu 64 位或 CentOS 64 位版本来引导 Raspberry Pi 进行无头启动;Raspberry Pi OS 即使是 Debian 衍生版本也不够用,因为它没有 OpenStack 软件包。
- 我需要可以在我的发行版中运行的最新版本的 OpenStack,因为我认为最新版本没有 AArch64 镜像。
- 我怀疑是否有关于自动化从头开始安装的文档,所以我将使用逐步过程。
使用的材料
- 四块 Raspberry Pi 4B,4GB 型号(推荐 8GB)
- 四张 32GB MicroSD 卡
- 四个带风扇和散热片的 Raspberry Pi 外壳(非常重要)
- 四个 Raspberry Pi 官方电源
配置基础操作系统
我使用了 CentOS AArch64 镜像;正如我所预料的那样,没有适用于 Raspberry Pi 的 CentOS 8 镜像,所以我使用了带有这个 预构建镜像 的 CentOS 7 AArch64。 当我尝试使用 dd
安装它时,它没有工作,但是当我使用 balenaEtcher 时,它像魔法一样奏效。

(Aaron John Canlas, CC BY-SA 4.0)
将镜像刻录到 SD 卡后,我将 Raspberry Pi 插入路由器以检查它们的 IP 地址,以便可以使用 SSH 远程访问它们。 我使用 nmtui
配置了它们的 WiFi 和主机名,以便在不连接任何电缆的情况下访问它们(当然,电源线除外)。 默认用户是 root
,默认密码是 centos
。

(Aaron John Canlas, CC BY-SA 4.0)
我更新了操作系统
[root@rpi4b4-0 ~]# yum update -y
我在所有的 Raspberry Pi 上重复了这个过程,然后重启了它们。
安装 OpenStack
最新的 OpenStack 版本(Ussuri 和 Victoria)需要 CentOS 8,所以我使用了 Train,因为它是使用 CentOS 7 的最新版本。

(Aaron John Canlas, CC BY-SA 4.0)
我使用了 OpenStack 基金会的安装步骤,但我遇到了一些问题。 为了方便其他人在 CentOS 7 上安装 OpenStack,我整理了以下链接和提示。
准备工作
- 网络时间协议 (NTP)
- OpenStack 软件包: 运行 Train 版本的安装 (此链接包含所有版本)
- SQL 数据库:控制器节点安装
- 消息队列:控制器节点安装
- Memcached: 控制器节点安装
- Etcd: 控制器节点安装
OpenStack 服务
- 身份服务 (Keystone)
- 控制器节点安装
- 验证操作
(Aaron John Canlas, CC BY-SA 4.0)
- 镜像服务 (Glance)
- 控制器节点安装
- 验证操作
提示:不要下载文档中提到的 CirrOS 镜像,请确保为 Raspberry Pi 使用 AArch64 CirrOS 镜像。
(Aaron John Canlas, CC BY-SA 4.0)
- Placement 服务 (Placement)
- 控制器节点安装
- 验证操作
(Aaron John Canlas, CC BY-SA 4.0)
- 计算服务 (Nova)
- 控制器节点安装
- 计算节点安装
- 验证操作
提示:在验证操作的最后一部分,由于打包错误,nova-status upgrade check
失败。 要修复它,请编辑控制器中的以下文件[root@rpi4b4-0 ~]# vim /etc/httpd/conf.d/00-placement-api.conf (…) <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory>
如果您现在运行
nova-status upgrade check
,它将工作。(Aaron John Canlas, CC BY-SA 4.0)
- 网络服务 (Neutron)
- 控制器节点安装
- 选项 2 的控制器:自助网络安装
要启用br_netfiler
模块[root@rpi4b4-0 ~]# modprobe br_netfilter [root@rpi4b4-0 ~]# echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf [root@rpi4b4-0 ~]# lsmod|grep br_netfilter
- 计算节点安装
- 选项 2 的计算:自助网络安装
要启用br_netfiler
模块[root@rpi4b4-X ~]# modprobe br_netfilter [root@rpi4b4-X ~]# echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf [root@rpi4b4-X ~]# lsmod|grep br_netfilter
- 验证操作
- 选项 2 的验证操作:自助网络安装
(Aaron John Canlas, CC BY-SA 4.0)
- 仪表板服务 (Horizon)
- 控制器节点安装
提示:重新启动 httpd 服务后,您将收到 404 错误。 要解决此问题,请将此行添加到/etc/openstack-dashboard/local_settings
的末尾WEBROOT = '/dashboard'
然后像往常一样重启 httpd
[root@rpi4b4-X ~]# systemctl restart httpd.service
- 验证操作
(Aaron John Canlas, CC BY-SA 4.0)
- 控制器节点安装
它工作得怎么样?
这是一个有趣且成功的实验。 在性能方面,考虑到我的控制器只有四个核心和 4GB 内存,它相当慢,但它对于在一个仪表板中管理多台计算机很有用。 我的下一步将尝试使用 TripleO 部署和 Ceph 存储集群来启用实时迁移。 如果我考虑到更大的集群和工作负载,我可能会尝试使用 Raspberry Pi 的以太网; 目前,Grafana 在互联网监控方面工作良好。
评论已关闭。