Programmazione Concorrente, Parallela e su Cloud

Lab assignment 1

1️⃣ Registrazione a GCP

  1. Accedere al link all'interno della mail ricevuta dal professore. Inserire all'interno della pagina il proprio nome e l'email istituzionale studenti.unisa.it e premere il tasto Submit;
  2. accedere al link di verifica all'interno della mail ricevuta da Google sul proprio account istituzionale ed effettuare la verifica. Verrà inviata un'altra mail sul proprio account contenente un codice coupon e un link per riscattarlo, tuttavia, non è possibile riscattare il coupon sull'account Google istituzionale per problemi tecnici. Salvare il codice coupon;
  3. utilizzare il link https://cloud.google.com/ per accedere con un account Google personale usando il bottone in alto a destra;
  4. utilizzare il link https://console.cloud.google.com/education?authuser=0 per accedere alla pagina dove riscattare il proprio codice. NOTA BENE: l'ultimo numero indicato nel link deve corrispondere all'account Google PERSONALE e non a quello istituzionale. È possibile controllare il numero associato ad ogni account Google controllando il link dopo aver effettuato l'accesso con l'account personale (passo 3); in caso in cui non si riesca ad accedere al link indicato, disconnettere tutti gli account Google, riavviare il browser, effettuare l'accesso SOLO CON L'ACCOUNT PERSONALE e riprovare;
  5. inserire il codice ricevuto tramite mail (passo 2) nel campo Codice Coupon, accettare e proseguire. La pagina re-indirizzerĂ  automaticamente alla dashboard Fatturazione dove saranno visualizzati i 50$ a disposizione.

2️⃣ Creazione di una Macchina Virtuale tramite Console Web

  1. Accedere alla console GCP utilizzando l'account Google personale. Accedere al sito https://cloud.google.com/, se necessario, accedere con l'account personale e cliccare sul bottone Console in alto a destra;
  2. utilizzare la barra di ricerca in alto per accedere al servizio VM Instances. In caso venga richiesto di selezionare un account di fatturazione, selezionare l'Account Studente;
  3. SOLO AL PRIMO ACCESSO AL SERVIZIO cliccare il tasto Abilita e attendere l'attivazione. La pagina re-indirizzerĂ  automaticamente alla dashboard di Compute Engine;
  4. SOLO PER LA PRIMA CREAZIONE le istanze GCP richiedono di fornire una propria chiave ssh al momento della creazione per l'accesso che potrĂ  essere riutilizzata ad ogni creazione di istanza successiva. Le istruzioni per creare una nuova chiave sulla propria macchina sono disponibili nella documentazione ufficiale di GCP https://cloud.google.com/compute/docs/connect/create-ssh-keys#create_an_ssh_key_pair/ ;
  5. nella dashboard di Compute Engine utilizzare il bottone Crea istanza per creare una nuova macchina virtuale;
  6. nel campo Regione selezionare una delle seguenti opzioni in modo da usufruire del piano gratuito:
    • Oregon: us-west1
    • Iowa: us-central1
    • South Carolina: us-east1
  7. nel campo Tipo di macchina selezionare e2-micro;
  8. nel campo Disco di avvio, utilizzare il tasto Cambia per selezionare come Sistema operativo Ubuntu con Versione Ubuntu 18.04 LTS;
  9. nel campo Firewall spuntare entrambe le opzioni;
  10. aprire la sezione NETWORKING, DISCHI, SICUREZZA, GESTIONE, SINGLE-TENANCY";
  11. aprire la sezione Sicurezza - Gestisci accesso e usare il bottone Aggiungi elemento per inserire la chiave ssh generata (passo 4). Inserire nel campo Chiave SSH 1 il contenuto del file .pub. N.B. L'ultima parte del file contiene l'username da utilizzare per accedere all'istanza tramite ssh;
  12. aprire la sezione Gestione e selezionare Spot nel campo Modello di provisioning delle VM;
  13. Creare l'istanza usando il tasto Crea e attendere per l'avvio. Una volta che l'istanza è in esecuzione utilizzare il protocollo ssh per accedere utilizzando l'IP esterno. NB Per accedere all'istanza è necessaria la chiave privata (passo 4) ovvero il file senza l'estensione .pub. Il comando per l'accesso deve avere la seguente sintassi: ssh -i ssh-key-private-file-name sshkey-username@99.999.9.99; Ulteriori informazioni riguardo la connessione ad una macchina virtuale sono disponibili nella documentazione ufficiale di GCP https://cloud.google.com/compute/docs/instances/connecting-advanced#thirdpartytools/. ATTENZIONE: Una volta terminato di lavorare sulle macchine virtuali è importante ricordarsi di eliminarle per evitare di esaurire il credito a disposizione. Per farlo tramite la dashboard di Compute Engine selezionare l'istanza da eliminare, cliccare sui tre puntini in alto e selezionare Elimina. Installazione MPI L'installazione di MPI su un'istanza creata in questo modo è disponibile sul repository Github https://github.com/spagnuolocarmine/ubuntu-openmpi-openmp/.

3️⃣ Installazione e configurazione Google gcloud

4️⃣ Creazione di una Home Page personale

  1. Avviare una instanza e2-micro seguendo la procedura 2 Creazione di una macchina virtuale da Console Web;
  2. collegarsi tramite ssh all'istanza ed effettuare gli aggiornamenti $ sudo apt-get update && sudo apt-get upgrade -y;
  3. installare Apache Web Server: $ sudo apt-get install apache2 -y;
  4. modificare il file index.html in /var/www/html con una messaggio di esempio;
  5. connettersi da browser utilizzando l'IP pubblico dell'istanza e verificare che il contenuto della pagina corrisponda;
  6. NOTA BENE: se non è possibile connettersi all'istanza in questo modo verificare le impostazioni nel campo Firewall usate durante la creazione della macchina;
  7. eliminare l'instanza.

Ripetere l'esercizio utilizzando la Web console.

5️⃣ Creazione di un cluster di instanze e2-micro

sshkey

  1. Creare 4 istanze e2.micro;
  2. avviare una nuova sessione remota tramite ssh per ogni macchina creata ed effettuare gli aggiornamenti $ sudo apt-get update && sudo apt-get upgrade -y;
  3. su ogni istanza creare un nuovo utente con username pcpc: $ sudo useradd -s /bin/bash -d /home/pcpc/ -m -G sudo pcpc ed impostare la password: $ sudo passwd pcpc;
  4. su ogni istanza accedere all'account pcpc: $ sudo login pcpc
  5. su ogni istanza modificare il file di configarezione di ssh: $ sudo vim /etc/ssh/sshd_config e cambiare l'opzione PasswordAuthentication come segue: PasswordAuthentication yes
  6. su ogni istanza riavviare il servizio ssh: $ sudo service ssh restart
  7. scegliere un'istanza da usare come MASTER e generare una coppia di chiavi ssh: $ ssh-keygen -t rsa;
  8. sull'istanza MASTER aggiungere la chiave pubblica appena generata alle authorized_keys: $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;
  9. sull'istanza MASTER aggiungere la coppia di chiavi ssh ad ogni istanza alle authorized_keys: $ cat ~/.ssh/id_rsa.pub | ssh pcpc@IP_INSTANCE "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys";
  10. su ogni istanza verificare di riuscire ad avviare una nuova sessione remota tramite ssh da ogni istanza verso le altre senza utilizzare nome utente e password: $ ssh IP;