Configura OpenStack su un cluster Raspberry Pi
Dato che i processori Arm sono "cittadini di prima classe" in OpenStack e Raspberry Pi sono basati su Arm, perché non combinarli?
Nell'anno trascorso dal rilascio di Raspberry Pi 4, ho visto molti tutorial (come questo e questo) e articoli su come funziona il modello da 4 GB con piattaforme container come Kubernetes (K8s), Lightweight Kubernetes (K3s) e Docker Sciame. Mentre stavo facendo delle ricerche, ho letto che i processori Arm sono "cittadini di prima classe" in OpenStack. Poiché Raspberry Pi è basato su Arm, ho deciso di testare questa teoria installando OpenStack su un cluster Raspberry Pi.
Prerequisiti
Ci sono alcune cose che devo considerare per questo progetto:
- Se utilizzare Ubuntu a 64 bit o CentOS a 64 bit per Raspberry Pi per l'avvio senza testa; Il sistema operativo Raspberry Pi non sarà sufficiente, nemmeno come derivato Debian, perché non esistono pacchetti OpenStack per questo.
- Ho bisogno dell'ultima versione di OpenStack che verrà eseguita nella mia distribuzione perché non credo che le ultime versioni abbiano un'immagine AArch64.
- Dubito che esista documentazione per automatizzare un'installazione da zero, quindi utilizzerò un processo passo passo.
Materiali usati:
- Quattro Raspberry Pi 4B, modello da 4 GB (8 GB consigliati)
- Quattro schede MicroSD da 32 GB
- Quattro case Raspberry Pi con ventole e dissipatori di calore (molto importanti)
- Quattro alimentatori ufficiali Raspberry
Configura il sistema operativo di base
Ho usato l'immagine CentOS AArch64; come sospettavo, non è disponibile un'immagine CentOS 8 per Raspberry Pi, quindi ho utilizzato CentOS 7 AArch64 con questa immagine precostruita. Non ha funzionato quando ho provato a installarlo con dd
, ma ha funzionato a meraviglia quando ho usato balenaEtcher.
(Aaron John Canlas, CC BY-SA 4.0)
Dopo aver masterizzato le immagini sulle schede SD, ho collegato i Raspberry Pi al router per verificare i loro indirizzi IP in modo da potervi accedere da remoto tramite SSH. Ho configurato il WiFi e i nomi host utilizzando nmtui
per accedervi senza cavi collegati (ad eccezione della fonte di alimentazione, ovviamente). L'utente predefinito è root
e la password predefinita è centos
.
(Aaron John Canlas, CC BY-SA 4.0)
Ho aggiornato il sistema operativo:
[root@rpi4b4-0 ~]# yum update -y
Ho ripetuto questo processo su tutti i miei Raspberry Pi, quindi li ho riavviati.
Installa OpenStack
Le ultime versioni di OpenStack (Ussuri e Victoria) richiedono CentOS 8, quindi ho utilizzato Train, poiché è la versione più recente che utilizza CentOS 7.
(Aaron John Canlas, CC BY-SA 4.0)
Ho utilizzato la procedura di installazione di OpenStack Foundation, ma ho riscontrato alcuni problemi. Per rendere più semplice per gli altri l'installazione di OpenStack su CentOS 7, ho compilato i seguenti collegamenti e suggerimenti.
Prerequisiti
Protocollo temporale di rete (NTP)
- Installazione del nodo controller
- Installazione del nodo di calcolo
- Verificare il funzionamento
Servizi OpenStack
Servizio di identità (Keystone)
- Installazione del nodo controller
Verifica il funzionamento
(Aaron John Canlas, CC BY-SA 4.0)
Servizio immagini (Glance)
- Installazione del nodo controller
Verifica il funzionamento
SUGGERIMENTO: invece di scaricare l'immagine CirrOS menzionata nei documenti, assicurati di utilizzare l'immagine CirrOS AArch64 per Raspberry Pis.
(Aaron John Canlas, CC BY-SA 4.0)
Servizio di posizionamento (Placement)
- Installazione del nodo controller
Verifica il funzionamento
(Aaron John Canlas, CC BY-SA 4.0)
Servizio di elaborazione (Nova)
- Installazione del nodo controller
Verifica il funzionamento
SUGGERIMENTO: nell'ultima parte dell'operazione di verifica, il controllo dell'aggiornamento dello stato nova
fallisce a causa di un errore di confezionamento. Per risolverlo, modifica il seguente file nel controller:
[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>
Se esegui nova-status upgrade check
ora, funzionerà.
(Aaron John Canlas, CC BY-SA 4.0)
Servizio di rete (Neutron)
- Installazione del nodo controller
Controller per Opzione 2: installazione di rete self-service
Per abilitare il modulobr_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
- Installazione del nodo di calcolo
Calcolo per l'Opzione 2: installazione di rete self-service
Per abilitare il modulobr_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
- Verificare il funzionamento
Verifica il funzionamento dell'Opzione 2: installazione di rete self-service
(Aaron John Canlas, CC BY-SA 4.0)
Servizio dashboard (Horizon)
Installazione del nodo controller
SUGGERIMENTO: al riavvio del servizio httpd, verrà visualizzato un errore 404. Per risolverlo, aggiungi questa riga alla fine di/etc/openstack-dashboard/local_settings
:WEBROOT = '/dashboard'
Quindi riavvia httpd come al solito:
[root@rpi4b4-X ~]# systemctl restart httpd.service
Verifica il funzionamento
(Aaron John Canlas, CC BY-SA 4.0)
Quanto bene funziona?
Questo è stato un esperimento divertente e ben riuscito. In termini di prestazioni, è piuttosto lento considerando che il mio controller ha solo quattro core e 4 GB di RAM, ma è utile per gestire più computer in un'unica dashboard. Il mio prossimo passo sarà provarlo con una distribuzione TripleO e un cluster di archiviazione Ceph per abilitare la migrazione in tempo reale. Potrei provare a utilizzare Ethernet del Raspberry Pi se ho in mente un cluster e un carico di lavoro più grandi; per ora Grafana funziona bene per il monitoraggio di Internet.