Clustering di 2 server per vm
Ciao a tutti, Scusate la latitanza, ma purtroppo il lavoro non mi concede troppo tempo per gli incontri di slip(seguo comunque la ML) Vi pongo qui un quesito: Se doveste fare un cluster di 2server con installati debian buster su ognuno, per creare "un" server che gestisca un po' di macchine virtuali con kvm, quale applicativo usereste? Ho cercato un po' su Google e ci sono varie soluzioni Cosa suggerireste? Grazie in anticipo Marco
Ciao Marco, Il 08/07/19 21:10, Marco Lim via SLiP ha scritto:
Se doveste fare un cluster di 2server con installati debian buster su ognuno, per creare "un" server che gestisca un po' di macchine virtuali con kvm, quale applicativo usereste? Ho cercato un po' su Google e ci sono varie soluzioni Cosa suggerireste?
Secondo me due server per un cluster sono troppo pochi. Mi spiego. Se il cluster ti serve per fare HPC (High Performance Computing), ovvero sommare la potenza di calcolo delle macchine fisiche per eseguire calcoli scientifici in parallelo, probabilmente non avrebbe senso usare macchine virtuali (KVM o altro), quindi escludo questa ipotesi. Se il cluster ti serve per fare HA (High Availability), ovvero fornire un servizio il più possibile senza interruzioni anche in caso di guasto ad uno dei server, probabilmente ti serve almeno una terza macchina che implementi le politiche di failover e che sia idealmente affidabile al 100%, il che è materialmente impossibile, ma è approssimabile usando due server (o più) invece di uno solo, che condividano un unico indirizzo IP virtuale in failover. E quindi siamo almeno a quattro server fisici. Se invece il cluster ti serve per fare bilanciamento del carico, allora ti serve la live migration delle macchine virtuali KVM, la quale è possibile solo se lo storage non deve essere anch'esso migrato, ma si trova su un terzo server che a quel punto fa solo da file server. E se non vuoi indebolire la catena, anche il fileserver andrebbe ridondato, mettendolo dietro un IP virtuale con failover, arrivando di nuovo ad almeno 4 server fisici. Prima di proseguire chiedo quindi: a cosa ti servirebbe il cluster?
Grazie della risposta, in realtà la cosa servirebbe in primis a capire come installare un sistema di cluster (sicuramente non per livello professionale, ma puramente didattico). Per quanto riguarda l'utilizzo sarebbe quello di avere la potenza ma soprattutto le risorse dei servers come se fosse uno solo. Servirebbe per creare una specie di laboratorio virtuale di PC dove installare vari OS e vari applicativi. Politiche di failover in pratica non ne avrei necessità, sempre che non siano necessarie. Chiaro che sarebbe interessante approfondirlo ma, non avendone il tempo ovviamente, partirei con l'opzione 1. Hai/avete altre soluzioni da consigliare? Grazie Ciao Marco Il lun 8 lug 2019, 22:26 Lucio Crusca via SLiP < slip@liszt.softwareliberopinerolo.org> ha scritto:
Ciao Marco,
Il 08/07/19 21:10, Marco Lim via SLiP ha scritto:
Se doveste fare un cluster di 2server con installati debian buster su ognuno, per creare "un" server che gestisca un po' di macchine virtuali con kvm, quale applicativo usereste? Ho cercato un po' su Google e ci sono varie soluzioni Cosa suggerireste?
Secondo me due server per un cluster sono troppo pochi. Mi spiego.
Se il cluster ti serve per fare HPC (High Performance Computing), ovvero sommare la potenza di calcolo delle macchine fisiche per eseguire calcoli scientifici in parallelo, probabilmente non avrebbe senso usare macchine virtuali (KVM o altro), quindi escludo questa ipotesi.
Se il cluster ti serve per fare HA (High Availability), ovvero fornire un servizio il più possibile senza interruzioni anche in caso di guasto ad uno dei server, probabilmente ti serve almeno una terza macchina che implementi le politiche di failover e che sia idealmente affidabile al 100%, il che è materialmente impossibile, ma è approssimabile usando due server (o più) invece di uno solo, che condividano un unico indirizzo IP virtuale in failover. E quindi siamo almeno a quattro server fisici.
Se invece il cluster ti serve per fare bilanciamento del carico, allora ti serve la live migration delle macchine virtuali KVM, la quale è possibile solo se lo storage non deve essere anch'esso migrato, ma si trova su un terzo server che a quel punto fa solo da file server. E se non vuoi indebolire la catena, anche il fileserver andrebbe ridondato, mettendolo dietro un IP virtuale con failover, arrivando di nuovo ad almeno 4 server fisici.
Prima di proseguire chiedo quindi: a cosa ti servirebbe il cluster?
-- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
Quel tipo di clustering generalmente avviene a livello applicativo. Se lo fai a scopo didattico, forse ti conviene prima darti un obiettivo e poi decidere cosa usare. Il clustering può avvenire a diversi livelli, ma quelli che coinvolgono il sistema operativo di solito esistono per l'alta affidabilità. A meno che non utilizzi sistemi operativi ottimizzati per il calcolo parallelo o cose simili. Più di 10 anni fa misi in piedi un cluster con OpenMosix puramente a scopo didattico (progetto che penso sia ormai chiuso) Sempre a scopo didattico, potrebbe interessarti approfondire strumenti di orchestration più che clustering. Come Kubernetes. Il giorno lun 8 lug 2019 alle ore 23:11 Marco Lim via SLiP < slip@liszt.softwareliberopinerolo.org> ha scritto:
Grazie della risposta, in realtà la cosa servirebbe in primis a capire come installare un sistema di cluster (sicuramente non per livello professionale, ma puramente didattico). Per quanto riguarda l'utilizzo sarebbe quello di avere la potenza ma soprattutto le risorse dei servers come se fosse uno solo. Servirebbe per creare una specie di laboratorio virtuale di PC dove installare vari OS e vari applicativi. Politiche di failover in pratica non ne avrei necessità, sempre che non siano necessarie. Chiaro che sarebbe interessante approfondirlo ma, non avendone il tempo ovviamente, partirei con l'opzione 1. Hai/avete altre soluzioni da consigliare?
Grazie Ciao Marco
Il lun 8 lug 2019, 22:26 Lucio Crusca via SLiP < slip@liszt.softwareliberopinerolo.org> ha scritto:
Ciao Marco,
Il 08/07/19 21:10, Marco Lim via SLiP ha scritto:
Se doveste fare un cluster di 2server con installati debian buster su ognuno, per creare "un" server che gestisca un po' di macchine virtuali con kvm, quale applicativo usereste? Ho cercato un po' su Google e ci sono varie soluzioni Cosa suggerireste?
Secondo me due server per un cluster sono troppo pochi. Mi spiego.
Se il cluster ti serve per fare HPC (High Performance Computing), ovvero sommare la potenza di calcolo delle macchine fisiche per eseguire calcoli scientifici in parallelo, probabilmente non avrebbe senso usare macchine virtuali (KVM o altro), quindi escludo questa ipotesi.
Se il cluster ti serve per fare HA (High Availability), ovvero fornire un servizio il più possibile senza interruzioni anche in caso di guasto ad uno dei server, probabilmente ti serve almeno una terza macchina che implementi le politiche di failover e che sia idealmente affidabile al 100%, il che è materialmente impossibile, ma è approssimabile usando due server (o più) invece di uno solo, che condividano un unico indirizzo IP virtuale in failover. E quindi siamo almeno a quattro server fisici.
Se invece il cluster ti serve per fare bilanciamento del carico, allora ti serve la live migration delle macchine virtuali KVM, la quale è possibile solo se lo storage non deve essere anch'esso migrato, ma si trova su un terzo server che a quel punto fa solo da file server. E se non vuoi indebolire la catena, anche il fileserver andrebbe ridondato, mettendolo dietro un IP virtuale con failover, arrivando di nuovo ad almeno 4 server fisici.
Prima di proseguire chiedo quindi: a cosa ti servirebbe il cluster?
-- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
-- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
-- Davide Corio enlightx@gmail.com
On Tue, Jul 9, 2019 at 8:10 AM Davide Corio via SLiP < slip@liszt.softwareliberopinerolo.org> wrote:
Quel tipo di clustering generalmente avviene a livello applicativo. Se lo fai a scopo didattico, forse ti conviene prima darti un obiettivo e poi decidere cosa usare.
Il clustering può avvenire a diversi livelli, ma quelli che coinvolgono il sistema operativo di solito esistono per l'alta affidabilità. A meno che non utilizzi sistemi operativi ottimizzati per il calcolo parallelo o cose simili.
Più di 10 anni fa misi in piedi un cluster con OpenMosix puramente a scopo didattico (progetto che penso sia ormai chiuso)
Sempre a scopo didattico, potrebbe interessarti approfondire strumenti di orchestration più che clustering. Come Kubernetes.
Ciao, stavo anche io per consigliarti microk8s https://microk8s.io/, ma poi ho pensato: se vuole VM e non container avrà i suoi motivi.
Il giorno lun 8 lug 2019 alle ore 23:11 Marco Lim via SLiP < slip@liszt.softwareliberopinerolo.org> ha scritto:
Grazie della risposta, in realtà la cosa servirebbe in primis a capire come installare un sistema di cluster (sicuramente non per livello professionale, ma puramente didattico). Per quanto riguarda l'utilizzo sarebbe quello di avere la potenza ma soprattutto le risorse dei servers come se fosse uno solo. Servirebbe per creare una specie di laboratorio virtuale di PC dove installare vari OS e vari applicativi. Politiche di failover in pratica non ne avrei necessità, sempre che non siano necessarie. Chiaro che sarebbe interessante approfondirlo ma, non avendone il tempo ovviamente, partirei con l'opzione 1. Hai/avete altre soluzioni da consigliare?
Grazie Ciao Marco
Il lun 8 lug 2019, 22:26 Lucio Crusca via SLiP < slip@liszt.softwareliberopinerolo.org> ha scritto:
Ciao Marco,
Il 08/07/19 21:10, Marco Lim via SLiP ha scritto:
Se doveste fare un cluster di 2server con installati debian buster su ognuno, per creare "un" server che gestisca un po' di macchine virtuali con kvm, quale applicativo usereste? Ho cercato un po' su Google e ci sono varie soluzioni Cosa suggerireste?
Secondo me due server per un cluster sono troppo pochi. Mi spiego.
Se il cluster ti serve per fare HPC (High Performance Computing), ovvero sommare la potenza di calcolo delle macchine fisiche per eseguire calcoli scientifici in parallelo, probabilmente non avrebbe senso usare macchine virtuali (KVM o altro), quindi escludo questa ipotesi.
Se il cluster ti serve per fare HA (High Availability), ovvero fornire un servizio il più possibile senza interruzioni anche in caso di guasto ad uno dei server, probabilmente ti serve almeno una terza macchina che implementi le politiche di failover e che sia idealmente affidabile al 100%, il che è materialmente impossibile, ma è approssimabile usando due server (o più) invece di uno solo, che condividano un unico indirizzo IP virtuale in failover. E quindi siamo almeno a quattro server fisici.
Se invece il cluster ti serve per fare bilanciamento del carico, allora ti serve la live migration delle macchine virtuali KVM, la quale è possibile solo se lo storage non deve essere anch'esso migrato, ma si trova su un terzo server che a quel punto fa solo da file server. E se non vuoi indebolire la catena, anche il fileserver andrebbe ridondato, mettendolo dietro un IP virtuale con failover, arrivando di nuovo ad almeno 4 server fisici.
Prima di proseguire chiedo quindi: a cosa ti servirebbe il cluster?
-- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
-- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
-- Davide Corio enlightx@gmail.com -- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
-- Alessandro Pasotti w3: www.itopen.it
Il giorno mar 9 lug 2019 alle ore 08:27 Alessandro Pasotti < apasotti@gmail.com> ha scritto:
Ciao, stavo anche io per consigliarti microk8s https://microk8s.io/, ma poi ho pensato: se vuole VM e non container avrà i suoi motivi.
Giusto, me lo scordo sempre. Come diceva giustamente Lucio, le macchine virtuali sicuramente non sono l'ambiente migliore, considerando l'overhead sull'I/O e tutto il resto. I container sono sicuramente più performanti, ma tutte le volte in cui ho visto calcolo distribuito questo avveniva "sul ferro" :) Ma a scopo didattico, direi che uno vale l'altro -- Davide Corio enlightx@gmail.com
Se l'obiettivo è quello di virtualizzare n sistemi operativi differenti, i container non sono la soluzione. Meglio gestire dei server che contengano le vm..non sono un esperto di virtualizzazione lato server per cui non son sicuro di "centrare il bersaglio" con le esigenze; forse Puppet o un tool simile è quello che cerchi. Se invece devi gestire un cluster di server che facciano girare delle applicazioni, docker è la risposta. E qui ti suggerisco di iniziare a vedere docker swarm; c'è anche kubernetes come ti hanno suggerito, ma personalmente inizierei dallo swarm. Kubernetes lo terrei come "next level" ;) Il mar 9 lug 2019, 08:33 Davide Corio via SLiP < slip@liszt.softwareliberopinerolo.org> ha scritto:
Il giorno mar 9 lug 2019 alle ore 08:27 Alessandro Pasotti < apasotti@gmail.com> ha scritto:
Ciao, stavo anche io per consigliarti microk8s https://microk8s.io/, ma poi ho pensato: se vuole VM e non container avrà i suoi motivi.
Giusto, me lo scordo sempre.
Come diceva giustamente Lucio, le macchine virtuali sicuramente non sono l'ambiente migliore, considerando l'overhead sull'I/O e tutto il resto. I container sono sicuramente più performanti, ma tutte le volte in cui ho visto calcolo distribuito questo avveniva "sul ferro" :)
Ma a scopo didattico, direi che uno vale l'altro
-- Davide Corio enlightx@gmail.com -- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
Il 08/07/19 23:11, Marco Lim ha scritto:
Grazie della risposta, in realtà la cosa servirebbe in primis a capire come installare un sistema di cluster (sicuramente non per livello professionale, ma puramente didattico).
Il problema è che la parola "cluster" è troppo generica per andare in cerca di un software specifico, perché come dicevo ci sono diversi tipi di cluster che contemplano soluzioni software completamente diverse fra loro.
Per quanto riguarda l'utilizzo sarebbe quello di avere la potenza ma soprattutto le risorse dei servers come se fosse uno solo.
Per capirci, introduco un po' di teoria. Possiamo distinguere le risorse dei server in due categorie: risorse pre-rilasciabili, preemptible in inglese, (tempo di CPU, memoria RAM) e risorse non pre-rilasciabili (files su disco, canali di comunicazione, stampanti e periferiche in generale). Le risorse preemptible possono essere temporaneamente sottratte ad un programma in esecuzione, mettendolo prima in pausa, senza che questo se ne accorga: quando il programma viene fatto ripartire, prima di tutto il sistema operativo (Linux) dedica di nuovo a lui le risorse che gli aveva sottratto quando lo aveva messo in pausa. Le risorse non preemptible, se venissero sottratte durante l'esecuzione ad un programma, non potrebbero essere più riassegnate al programma nello stesso stato in cui si trovavano quando gli sono state sottratte e di conseguenza non si possono togliere al programma nemmeno mettendolo in pausa: se altri programmi necessitano di una di queste risorse, sono costretti a mettersi in coda ed attendere che il programma che la sta usando termini. Le risorse preemptible tipicamente determinano la potenza di calcolo massima del server. Le risorse non preemptible costituiscono gli anelli deboli della catena. Un cluster può esistere per UNO di due motivi: sommare fra loro le risorse preemptible, ottenendo maggior potenza di calcolo complessiva, oppure rendere più affidabili, attraverso la ridondanza, quelle non preemptible, ottenendo anelli deboli della catena che sono meno deboli. Purtroppo questi due obiettivi sono ortogonali fra loro, cioè remano in direzioni diverse. È sicuramente possibile creare un cluster che sia allo stesso tempo affidabile e potente (quasi) come la somma dei server che lo compongono, ma è una cosa che non interessa a nessuno, perché quel "quasi" diventa tanto più grande quanto meno ci si focalizza su uno solo dei due obiettivi. Esistono quindi software specifici per risolvere l'una o l'altra problematica, ma non entrambe nello stesso momento.
Servirebbe per creare una specie di laboratorio virtuale di PC dove installare vari OS e vari applicativi.
Escludiamo quindi definitivamente il cluster HPC, che comunque, a fini puramente didattici, potrai poi installare successivamente creando macchine virtuali apposite (ma tieni conto che nel caso reale non si fa mai con le macchine virtuali). Detta così e considerando che lo scopo è imparare, suggerisco di non usare nessun software specifico per ora, ma di usare solo KVM e libvirt, con i rispettivi comandi da terminale. Impari i concetti base e, chiariti quelli, sarà poi semplice anche per te scegliere il software che meglio si adatta alle esigenze reali di quello che eventualmente andrai a fare con quanto avrai imparato. Se vuoi sommare lo spazio su disco di dischi fisicamente installati in server diversi, la strada si chiama SAN (Storage Area Network). Una SAN è una rappresentazione virtuale, utilizzabile attraverso la rete, di uno spazio di archiviazione (storage). Uno dei possibili protocolli per implementare una SAN è iSCSI (con la "i" davanti come se fosse un prodotto Apple, ma non lo è). Una volta realizzata la SAN iSCSI, per esempio con una macchina virtuale per ognuno dei due server fisici, dovrai metterci sopra un filesystem (formattarla con LVM+ext4, btrfs o simili per intendersi). Anche per questo serve un'apposita macchina virtuale. Dovrai poi pubblicare lo stesso filesystem attraverso un opportuno protocollo di rete: scegli GFS2 di RedHat se vuoi fare le cose in grande, oppure pubblica semplicemente via NFS se non vuoi diventare vecchio prima di aver raggiunto il tuo scopo. Arrivato qui avrai la macchina virtuale appena citata che condivide in rete un filesystem, per esempio via NFS, il cui spazio è la somma degli spazi delle partizioni dei singoli dischi sui singoli server che avevi deciso di dedicare al volume unico condiviso. Naturalmente se vuoi che tutto ciò sia anche affidabile oltre che figo a raccontarsi, i singoli dischi dei singoli server dovrebbero essere messi in RAID, ma per imparare non è necessario. Da qui in avanti puoi iniziare a creare macchine viruali che vivono sul filesystem condiviso via NFS (ovvero il cui hard disk virtuale è semplicemente un file che risiede su quel filesystem) e che quindi possono essere migrate da un server fisico all'altro anche mentre sono accese (con opportuni comandi di libvirt). Essendo tutto virtuale, avrai comunque un problema di dipendenze, ovvero dovrai fare in modo (attraverso uno script per esempio) che i server fisici prima di tutto facciano partire le macchine virtuali della SAN, poi montino il volume NFS e solo allora facciano partire le altre macchine virtuali del tuo laboratorio, perché prima di allora saranno inaccessibili.
Grazie a tutti per i consigli, grazie Lucio soprattutto per la spiegazione teorica.
Escludiamo quindi definitivamente il cluster HPC
L'esclusione del cluster HPC, credo di averla capita. Il mio obbiettivo era quello di avere risorse di memoria RAM di un server sommate a quelle dell'altro (così come anche le potenze di calcolo dei processori), ma da quello che ho capito se non si usa HPC, non si può fare. Avevo individuato PVM [1], ma a questo punto sarà da percorrere la strada "ortogonalmente opposta" di HA.
Se vuoi sommare lo spazio su disco di dischi fisicamente installati in server diversi, la strada si chiama SAN (Storage Area Network). Una SAN è una rappresentazione virtuale, utilizzabile attraverso la rete, di uno spazio di archiviazione (storage). Uno dei >possibili protocolli per implementare una SAN è iSCSI (con la "i" davanti come se fosse un prodotto Apple, ma non lo è). Una volta realizzata la SAN iSCSI, per esempio con una macchina virtuale per ognuno dei due server fisici, dovrai metterci sopra un filesystem (formattarla con LVM+ext4, btrfs o simili per intendersi). Anche per questo serve un'apposita macchina virtuale. >Dovrai poi pubblicare lo stesso filesystem attraverso un opportuno protocollo di rete: scegli GFS2 di RedHat se vuoi fare le cose in grande, oppure pubblica semplicemente via NFS se non vuoi diventare vecchio prima di aver raggiunto il tuo scopo. Arrivato qui avrai la macchina virtuale appena citata che condivide in rete un filesystem, per esempio via NFS, il cui spazio è la somma degli spazi delle partizioni dei singoli dischi sui singoli server che avevi deciso di dedicare al volume unico condiviso. >Naturalmente se vuoi che tutto ciò sia anche affidabile oltre che figo a raccontarsi, i singoli dischi dei singoli server dovrebbero essere messi in RAID, ma per imparare non è necessario
Quello che avevo intenzione di fare era proprio quello hai descritto, però non sapevo dove installare la SAN con iSCSI se sull'OS della macchina fisica (debian) di entrambi i server o creare una macchina virtuale (per entrambi i server) dove al suo interno ci sarà l'iSCSI installato. a quel punto installare il filesystem NFS, ma dove vm o macchina fisica?
Detta così e considerando che lo scopo è imparare, suggerisco di non usare nessun software specifico per ora, ma di usare solo KVM e libvirt, con i rispettivi comandi da terminale. Impari i concetti base e, chiariti quelli, sarà poi semplice anche per te >scegliere il software che meglio si adatta alle esigenze reali di quello che eventualmente andrai a fare con quanto avrai imparato.
Lo scopo è didattico ovviamente, quindi usare KVM con virsh o VM Manager ecc..., sono d'accordo. però magari bisogna attaccare qualche altro applicativo per gestire il resto (Cluster ecc??) che mi sfugge... Tra le ricerche avevo anche trovato PROMOX VE [2] che mi aveva già consigliato Davide che forse risponde al quesito. intanto provo a mettere due dati, così magari si capisce di cosa si sto parlando: Server1: HP Proliant DL360 G5 2 x Quad-Core Intel Xeon Processor L5420 (2.50 GHz, 50 Watts, 1333 FSB) 64GB di RAM 4 HDD da 500GB in RAID 1+0 (1,5TB) (il raid l'ho impostato così ma non è vincolante) con Smart Array E200 OS macchina fisica: debian buster 10.0 Server2: HP Proliant DL380 G5 2 x Quad-Core Intel Xeon Processor E5410 (2.33 GHz, 80 Watts, 1333 FSB) 64GB di RAM 2 HDD da 72GB in RAID 0 (140 GB) con Smart Array P400 OS Macchina fisica: debian buster 10.0 Virtual Machine: VM1, VM2, VMx... che siano gestibili indipendentemente da quale server vado chiamare, una specie di namespace unico spero che sia un pò più chiaro, scusate ma non mi è facile spiegare quello che vorrei fare. Grazie in anticipo. [1]http://guide.debianizzati.org/index.php/Clustering_con_PVM [2]https://pve.proxmox.com/wiki/Main_Page On Tue, Jul 9, 2019 at 11:51 AM Lucio Crusca via SLiP < slip@liszt.softwareliberopinerolo.org> wrote:
Il 08/07/19 23:11, Marco Lim ha scritto:
Grazie della risposta, in realtà la cosa servirebbe in primis a capire come installare un sistema di cluster (sicuramente non per livello professionale, ma puramente didattico).
Il problema è che la parola "cluster" è troppo generica per andare in cerca di un software specifico, perché come dicevo ci sono diversi tipi di cluster che contemplano soluzioni software completamente diverse fra loro.
Per quanto riguarda l'utilizzo sarebbe quello di avere la potenza ma soprattutto le risorse dei servers come se fosse uno solo.
Per capirci, introduco un po' di teoria. Possiamo distinguere le risorse dei server in due categorie: risorse pre-rilasciabili, preemptible in inglese, (tempo di CPU, memoria RAM) e risorse non pre-rilasciabili (files su disco, canali di comunicazione, stampanti e periferiche in generale).
Le risorse preemptible possono essere temporaneamente sottratte ad un programma in esecuzione, mettendolo prima in pausa, senza che questo se ne accorga: quando il programma viene fatto ripartire, prima di tutto il sistema operativo (Linux) dedica di nuovo a lui le risorse che gli aveva sottratto quando lo aveva messo in pausa.
Le risorse non preemptible, se venissero sottratte durante l'esecuzione ad un programma, non potrebbero essere più riassegnate al programma nello stesso stato in cui si trovavano quando gli sono state sottratte e di conseguenza non si possono togliere al programma nemmeno mettendolo in pausa: se altri programmi necessitano di una di queste risorse, sono costretti a mettersi in coda ed attendere che il programma che la sta usando termini.
Le risorse preemptible tipicamente determinano la potenza di calcolo massima del server. Le risorse non preemptible costituiscono gli anelli deboli della catena.
Un cluster può esistere per UNO di due motivi: sommare fra loro le risorse preemptible, ottenendo maggior potenza di calcolo complessiva, oppure rendere più affidabili, attraverso la ridondanza, quelle non preemptible, ottenendo anelli deboli della catena che sono meno deboli. Purtroppo questi due obiettivi sono ortogonali fra loro, cioè remano in direzioni diverse. È sicuramente possibile creare un cluster che sia allo stesso tempo affidabile e potente (quasi) come la somma dei server che lo compongono, ma è una cosa che non interessa a nessuno, perché quel "quasi" diventa tanto più grande quanto meno ci si focalizza su uno solo dei due obiettivi. Esistono quindi software specifici per risolvere l'una o l'altra problematica, ma non entrambe nello stesso momento.
Servirebbe per creare una specie di laboratorio virtuale di PC dove installare vari OS e vari applicativi.
Escludiamo quindi definitivamente il cluster HPC, che comunque, a fini puramente didattici, potrai poi installare successivamente creando macchine virtuali apposite (ma tieni conto che nel caso reale non si fa mai con le macchine virtuali).
Detta così e considerando che lo scopo è imparare, suggerisco di non usare nessun software specifico per ora, ma di usare solo KVM e libvirt, con i rispettivi comandi da terminale. Impari i concetti base e, chiariti quelli, sarà poi semplice anche per te scegliere il software che meglio si adatta alle esigenze reali di quello che eventualmente andrai a fare con quanto avrai imparato.
Se vuoi sommare lo spazio su disco di dischi fisicamente installati in server diversi, la strada si chiama SAN (Storage Area Network). Una SAN è una rappresentazione virtuale, utilizzabile attraverso la rete, di uno spazio di archiviazione (storage). Uno dei possibili protocolli per implementare una SAN è iSCSI (con la "i" davanti come se fosse un prodotto Apple, ma non lo è).
Una volta realizzata la SAN iSCSI, per esempio con una macchina virtuale per ognuno dei due server fisici, dovrai metterci sopra un filesystem (formattarla con LVM+ext4, btrfs o simili per intendersi). Anche per questo serve un'apposita macchina virtuale. Dovrai poi pubblicare lo stesso filesystem attraverso un opportuno protocollo di rete: scegli GFS2 di RedHat se vuoi fare le cose in grande, oppure pubblica semplicemente via NFS se non vuoi diventare vecchio prima di aver raggiunto il tuo scopo.
Arrivato qui avrai la macchina virtuale appena citata che condivide in rete un filesystem, per esempio via NFS, il cui spazio è la somma degli spazi delle partizioni dei singoli dischi sui singoli server che avevi deciso di dedicare al volume unico condiviso. Naturalmente se vuoi che tutto ciò sia anche affidabile oltre che figo a raccontarsi, i singoli dischi dei singoli server dovrebbero essere messi in RAID, ma per imparare non è necessario.
Da qui in avanti puoi iniziare a creare macchine viruali che vivono sul filesystem condiviso via NFS (ovvero il cui hard disk virtuale è semplicemente un file che risiede su quel filesystem) e che quindi possono essere migrate da un server fisico all'altro anche mentre sono accese (con opportuni comandi di libvirt).
Essendo tutto virtuale, avrai comunque un problema di dipendenze, ovvero dovrai fare in modo (attraverso uno script per esempio) che i server fisici prima di tutto facciano partire le macchine virtuali della SAN, poi montino il volume NFS e solo allora facciano partire le altre macchine virtuali del tuo laboratorio, perché prima di allora saranno inaccessibili.
-- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
-- Marco LIM Please don't print this message!! 3R Reuse, Reduce, Recycle!!!!
Il 09/07/19 14:10, Marco Lim ha scritto:
memoria RAM di un server sommate a quelle dell'altro (così come anche le potenze di calcolo dei processori), ma da quello che ho capito se non si usa HPC, non si può fare.
Confermo, hai capito bene.
però magari bisogna attaccare qualche altro applicativo per gestire il resto (Cluster ecc??) che mi sfugge...
In realtà no: per creare il cluster HA ed imparare, non ti serve altro, ti basta KVM e virsh (cioè libvirt), con la configurazione dei dischi che ti ho descritto. virt-manager è già un optional, ma convengo che possa tornare utile per semplificarsi un po' la vita.
Tra le ricerche avevo anche trovato PROMOX VE [2] che mi aveva già consigliato Davide che forse risponde al quesito.
Come (e più di) virt-manager, può semplificarti la vita, ma più semplifichi, meno impari.
Server1: HP Proliant DL360 G5 2 x Quad-Core Intel Xeon Processor L5420 (2.50 GHz, 50 Watts, 1333 FSB) 64GB di RAM 4 HDD da 500GB in RAID 1+0 (1,5TB) (il raid l'ho impostato così ma non è vincolante) con Smart Array E200 OS macchina fisica: debian buster 10.0
Server2: HP Proliant DL380 G5 2 x Quad-Core Intel Xeon Processor E5410 (2.33 GHz, 80 Watts, 1333 FSB) 64GB di RAM 2 HDD da 72GB in RAID 0 (140 GB) con Smart Array P400 OS Macchina fisica: debian buster 10.0
Per imparare direi che sono dei signori server, ma ben venga. Una cosa che io cambierei è sicuramente il RAID0 del Server2 e lo farei diventare RAID1, tanto fra avere un volume da 140GB ed averne uno da 70 non cambia molto dal punto di vista della capacità, visto che sull'altro server hai 1,5TB, mentre cambia parecchio dal punto di vista dell'affidabilità. Lo so, significa riformattare e reinstallare Debian, ma meglio adesso che sei all'inizio che dopo. Se vuoi seguire la rotta che ti ho indicato nel messaggio precedente, adesso dovresti partizionare il server1 (che significa reinstallare pure lui) lasciando circa 30GB per il sistema operativo ed il resto per il volume iSCSI. Lo stesso potresti farlo sul server2, se vuoi imparare come sommare lo spazio su dischi installati in server diversi. Se invece non ti interessa questa parte, puoi dimenticare tutto il discorso iSCSI e ti basta pubblicare via NFS una cartella vuota a tua scelta dal server1 (anche senza ripartizionarlo).
Perfetto, credo di aver capito quasi tutto. Dovrei avere tutte le info per poter iniziare in modo corretto. Credo che rifarò le installazioni, tanto come dicevi sono praticamente all'inizio. Grazie mille a tutti per suggerimenti. Strada facendo se avrò qualche dubbio, riscriverò in lista. Ciao.... Il mar 9 lug 2019, 21:50 Lucio Crusca via SLiP < slip@liszt.softwareliberopinerolo.org> ha scritto:
Il 09/07/19 14:10, Marco Lim ha scritto:
memoria RAM di un server sommate a quelle dell'altro (così come anche le potenze di calcolo dei processori), ma da quello che ho capito se non si usa HPC, non si può fare.
Confermo, hai capito bene.
però magari bisogna attaccare qualche altro applicativo per gestire il resto (Cluster ecc??) che mi sfugge...
In realtà no: per creare il cluster HA ed imparare, non ti serve altro, ti basta KVM e virsh (cioè libvirt), con la configurazione dei dischi che ti ho descritto. virt-manager è già un optional, ma convengo che possa tornare utile per semplificarsi un po' la vita.
Tra le ricerche avevo anche trovato PROMOX VE [2] che mi aveva già consigliato Davide che forse risponde al quesito.
Come (e più di) virt-manager, può semplificarti la vita, ma più semplifichi, meno impari.
Server1: HP Proliant DL360 G5 2 x Quad-Core Intel Xeon Processor L5420 (2.50 GHz, 50 Watts, 1333 FSB) 64GB di RAM 4 HDD da 500GB in RAID 1+0 (1,5TB) (il raid l'ho impostato così ma non è vincolante) con Smart Array E200 OS macchina fisica: debian buster 10.0
Server2: HP Proliant DL380 G5 2 x Quad-Core Intel Xeon Processor E5410 (2.33 GHz, 80 Watts, 1333 FSB) 64GB di RAM 2 HDD da 72GB in RAID 0 (140 GB) con Smart Array P400 OS Macchina fisica: debian buster 10.0
Per imparare direi che sono dei signori server, ma ben venga. Una cosa che io cambierei è sicuramente il RAID0 del Server2 e lo farei diventare RAID1, tanto fra avere un volume da 140GB ed averne uno da 70 non cambia molto dal punto di vista della capacità, visto che sull'altro server hai 1,5TB, mentre cambia parecchio dal punto di vista dell'affidabilità. Lo so, significa riformattare e reinstallare Debian, ma meglio adesso che sei all'inizio che dopo.
Se vuoi seguire la rotta che ti ho indicato nel messaggio precedente, adesso dovresti partizionare il server1 (che significa reinstallare pure lui) lasciando circa 30GB per il sistema operativo ed il resto per il volume iSCSI. Lo stesso potresti farlo sul server2, se vuoi imparare come sommare lo spazio su dischi installati in server diversi. Se invece non ti interessa questa parte, puoi dimenticare tutto il discorso iSCSI e ti basta pubblicare via NFS una cartella vuota a tua scelta dal server1 (anche senza ripartizionarlo).
-- SLiP mailing list SLiP@liszt.softwareliberopinerolo.org https://liszt.softwareliberopinerolo.org/listinfo/slip
partecipanti (5)
-
Alessandro Pasotti -
Davide Corio -
Lucio Crusca -
Marco Lim -
Stefano Pirra