Ricerca nel sito web

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:

  1. 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.
  2. Ho bisogno dell'ultima versione di OpenStack che verrà eseguita nella mia distribuzione perché non credo che le ultime versioni abbiano un'immagine AArch64.
  3. Dubito che esista documentazione per automatizzare un'installazione da zero, quindi utilizzerò un processo passo passo.

Materiali usati:

  1. Quattro Raspberry Pi 4B, modello da 4 GB (8 GB consigliati)
  2. Quattro schede MicroSD da 32 GB
  3. Quattro case Raspberry Pi con ventole e dissipatori di calore (molto importanti)
  4. 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

  1. Protocollo temporale di rete (NTP)

    1. Installazione del nodo controller
    2. Installazione del nodo di calcolo
    3. Verificare il funzionamento
  2. Pacchetti OpenStack: esegui la versione Train dell'installazione (questo collegamento include tutte le versioni)
  3. Database SQL: installazione del nodo controller
  4. Coda messaggi: installazione del nodo controller
  5. Memcached: installazione del nodo controller
  6. Etcd: installazione del nodo controller

Servizi OpenStack

  1. Servizio di identità (Keystone)

    1. Installazione del nodo controller
    2. Verifica il funzionamento

      (Aaron John Canlas, CC BY-SA 4.0)

  2. Servizio immagini (Glance)

    1. Installazione del nodo controller
    2. 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)

  3. Servizio di posizionamento (Placement)

    1. Installazione del nodo controller
    2. Verifica il funzionamento

      (Aaron John Canlas, CC BY-SA 4.0)

  4. Servizio di elaborazione (Nova)

    1. Installazione del nodo controller
    2. Installazione del nodo di calcolo
    3. 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)

  1. Servizio di rete (Neutron)

    1. Installazione del nodo controller
    2. Controller per Opzione 2: installazione di rete self-service

      Per abilitare il modulo 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
    3. Installazione del nodo di calcolo
    4. Calcolo per l'Opzione 2: installazione di rete self-service

      Per abilitare il modulo 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
    5. Verificare il funzionamento
    6. Verifica il funzionamento dell'Opzione 2: installazione di rete self-service

      (Aaron John Canlas, CC BY-SA 4.0)

  2. Servizio dashboard (Horizon)

    1. 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
    2. 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.

Articoli correlati: