afm719 / Cloud-Computing-Arahi

0 stars 0 forks source link

Cluster Tutorial (IT) #3

Open afm719 opened 1 month ago

afm719 commented 1 month ago

Creare un cluster con una macchina master e due macchine (node01 e node02)

Requisiti iniziali

  1. Scarica VirtualBox: https://www.virtualbox.org/
  2. Scarica una distribuzione compatibile di Ubuntu (si consiglia una versione precedente per maggiore compatibilità): https://ubuntu.com/download/server

Caratteristiche del cluster

Macchina Master:

Macchine Nodo (node01, node02, ...):

Creazione della macchina template per la post-creazione delle macchine del cluster

  1. Crea la macchina con il nome template,
  2. Scegli una posizione (normalmente si lascia quella predefinita)
  3. Carica l'immagine ISO

image

  1. Assegna i parametri indicati in precedenza

image

  1. Puoi lasciare di default il nome utente e la password. IMPORTANTE PER LA CONFIGURAZIONE SUCCESSIVA

image

  1. Completa e avvia la macchina (ti chiederà l'utente e la password annotati in precedenza)
  2. Una volta avviato, esegui i seguenti comandi:
sudo apt update
sudo apt upgrade

Se riscontri problemi, prova a installare una versione più recente e stabile.

  1. Installazione di pacchetti
sudo apt install net-tools gcc make
sudo shutdown -h now

Macchina pronta per essere clonata

Creazione macchina Master

  1. Clona la macchina template (clicca sull'icona della pecora e scegli clonazione completa, come nome inserisci master)
  2. Una volta creata, accedi alla configurazione -> rete -> adattatore1 (NAT) (lascia invariato) configurazione -> rete -> adattatore2 (Rete interna) (è necessario abilitarlo) (IMPORTANTE ASSEGNARE IL NOME clustervimnet)

Salva la configurazione

Configurazione della rete del nodo Master

Per vedere le interfacce disponibili nella VM esegui il comando

ip link show

Dopo aver eseguito il comando otterrai:

image

dove:

enp0s3 è l'adattatore 1 (NAT). enp0s8 è l'adattatore2 (rete interna).

Devi configurare l'interfaccia enp0s8 come statica utilizzando l'indirizzo IP 192.168.0.1, per farlo devi modificare il seguente file:

sudo vim /etc/netplan/50-cloud-init.yaml

All'interno di questo file devi inserire le seguenti informazioni:

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
    enp0s8:
     dhcp4: no
     addresses: [192.168.0.1/24]

Se stai modificando con l'editor VIM il comando per salvare è ESC :w e per uscire ESC :q!. Se stai modificando con l'editor NANO il comando per salvare è CTRL+X.

Una volta salvato tutto è importante applicare le modifiche, utilizzando il seguente comando:

sudo netplan apply

Per identificare ogni macchina più facilmente, accediamo ai file host eseguendo i seguenti comandi:

sudo vim /etc/hostname

dentro cambieremo template con master.

Poi:

sudo vim /etc/hosts

127.0.0.1 localhost
192.168.0.1 master

192.168.0.22 cluster01

# Le seguenti righe sono derivate per host compatibili con IPv6
...

SSH

Questo passaggio è importante per connettere le VM con la nostra macchina host.

  1. In VirtualBox (macchina master) accedi a: Impostazioni > Rete > Inoltro porta > Aggiungi
  2. Imposta la seguente regola: image
  3. Installa il servizio ssh sudo apt install openssh-server
  4. Verifica che sia attivo sudo systemctl status ssh, altrimenti attivalo con sudo systemctl enable ssh
  5. Entra nel tuo terminale WINDOWS/MAC ed esegui il comando: ssh-keygen per generare una chiave
  6. Questa chiave pubblica deve essere copiata sull'host master con il seguente comando:
cd .ssh
scp -P 2222 id_ed25519.pub vboxuser@127.0.0.1

Ricorda che il nome di id_.......pub e il nome di vboxuser possono variare (vboxuser è il nome utente che hai assegnato all'inizio della creazione della macchina, quindi deve essere quello).

Infine, vai sulla tua macchina master ed esegui il seguente comando:

cat id_ed25519.pub >> .ssh/authorized_keys
rm id_ed25519.pub

Finalmente avrai la tua connessione ssh pronta:

ssh -p 2222 vboxuser@127.0.0.1

Questo comando deve essere eseguito dal tuo terminale WINDOWS/MAC.

DHCP e DNS

Lista di comandi da eseguire:

sudo apt install dnsmasq -y
sudo vim /etc/dnsmasq.conf
port=53
bogus-priv
strict-order
interface=enp0s8
listen-address=::1,127.0.0.1,192.168.0.1
bind-interfaces
log-queries
log-dhcp
dhcp-range=192.168.0.22,192.168.0.28,255.255.255.0,12h
dhcp-option=option:dns-server,192.168.0.1
dhcp-option=3

sudo ln -fs /run/systemd/resolve/resolv.conf /etc/resolv.conf

sudo vim /etc/netplan/50-cloud-init.yaml

network:
  ethernets:
    enp0s3:
      dhcp4: true
    enp0s8:
      dhcp4: false
      addresses: [192.168.0.1/24]
      nameservers:
        addresses: [192.168.0.1]
  version: 2

sudo netplan apply

sudo vim /etc/default/dnsmasq

IGNORE_RESOLVCONF=yes
DNSMASQ_EXCEPT="lo"

sudo systemctl restart dnsmasq systemd-resolved

sudo systemctl status dnsmasq

host cluster01

image

Sistema di file distribuito

sudo apt install nfs-kernel-server
sudo mkdir -p /mnt/shared

# Prova a montare nuovamente la directory esportata dal server NFS:
sudo mount -t nfs <IP_del_server>:/shared /mnt/shared

# Sostituisci <IP_del_server> con l'IP del server NFS
sudo mount -t nfs 192.168.0.1:/shared/ /mnt/shared

# Dopo il montaggio, verifica se è stato eseguito correttamente con il comando:

df -h | grep /mnt/shared

Se la directory /mnt/shared appare nell'elenco, significa che il file system NFS è stato montato correttamente.

È importante che questo file system sia montato automaticamente ad ogni accensione della macchina, quindi devi renderlo permanente:

sudo vim /etc/fstab

e aggiungi: <IP_del_server_NFS>:/shared /mnt/shared nfs defaults 0 0

192.168.0.1:/shared /mnt/shared nfs defaults 0 0

Creazione dei nodi (node01 e node02)

  1. Clonazione dei nodi: Clona la macchina template due volte, creando le macchine node01 e node02.

  2. Configurazione della rete:

    • Configura la rete per entrambe le macchine nello stesso modo in cui è stata configurata per la macchina master.
    • Imposta l'adattatore 1 su NAT e l'adattatore 2 su Rete Interna, assegnando il nome della rete interna come clustervimnet.
  3. Assegnazione indirizzo IP statico:

    • Per node01, modifica il file /etc/netplan/50-cloud-init.yaml come segue:
    network:
     version: 2
     ethernets:
       enp0s3:
         dhcp4: true
       enp0s8:
         dhcp4: no
         addresses: [192.168.0.22/24]
    • Per node02, utilizza lo stesso processo, ma assegna un indirizzo IP diverso, ad esempio:
    network:
     version: 2
     ethernets:
       enp0s3:
         dhcp4: true
       enp0s8:
         dhcp4: no
         addresses: [192.168.0.23/24]
  4. Modifica dei file /etc/hosts:

    • In node01, modifica il file /etc/hosts aggiungendo le seguenti righe per riconoscere i nodi del cluster:
    127.0.0.1 localhost
    192.168.0.1 master
    192.168.0.22 node01
    192.168.0.23 node02
    • Ripeti lo stesso procedimento per node02, aggiungendo le informazioni dei nodi e del master.
  5. Test della connessione SSH:

    • Verifica la connessione SSH tra il master e i nodi.
    • Puoi usare il seguente comando dal master per testare la connessione:
    ssh vboxuser@192.168.0.22
    ssh vboxuser@192.168.0.23
  6. Montaggio del file system condiviso:

    • Su node01 e node02, monta il file system condiviso fornito dal server NFS (il master in questo caso).
    sudo mkdir -p /mnt/shared
    sudo mount -t nfs 192.168.0.1:/shared /mnt/shared
    • Verifica che il file system sia montato correttamente:
    df -h | grep /mnt/shared
    • Per rendere permanente il montaggio del file system condiviso, modifica il file /etc/fstab:
    sudo vim /etc/fstab

    Aggiungi la seguente riga:

    192.168.0.1:/shared     /mnt/shared     nfs     defaults        0 0

Test e verifica del cluster

  1. Ping tra le macchine:

    • Verifica la connessione di rete tra le macchine utilizzando il comando ping:
    ping 192.168.0.22  # Dal master verso node01
    ping 192.168.0.23  # Dal master verso node02
  2. Verifica dell'accesso condiviso:

    • Su ciascun nodo, verifica che il file system NFS sia accessibile e scrivibile creando file all'interno della directory condivisa:
    touch /mnt/shared/testfile_node01.txt
    • Verifica che il file creato sia visibile anche dagli altri nodi e dal master.
  3. Controllo dei servizi di rete:

    • Verifica che il servizio DNS e DHCP funzioni correttamente interrogando l'host master o i nodi con il comando:
    host master
    host node01

Con questi passaggi, avrai configurato un cluster funzionante con un master e due nodi connessi in rete, che condividono risorse di storage e utilizzano servizi di rete comuni come DHCP, DNS e NFS.