Quali fattori dovrei prendere in considerazione quando si costruisce un host di macchine virtuali?


2

Voglio costruire un server che verrà utilizzato per ospitare macchine virtuali. Queste macchine virtuali avrebbero ruoli diversi, come:

  • Server di database
  • JBoss application server
  • Istanze di sviluppo di Eclipse (Java EE, Scala, ecc.)

Il numero di utenti che accederanno al server sarà di circa 5 persone alla volta. Il sistema operativo potrebbe essere Windows o Linux, qualunque cosa funzioni meglio. Gli utenti avranno bisogno di accesso grafico / desktop alle istanze di sviluppo di Eclipse.

  • Come posso capire quali sono le specifiche hardware necessarie per supportare adeguatamente un determinato numero di utenti e macchine virtuali? Esistono linee guida sulle risorse minime per utente, ecc.?
  • Supponendo che gli sviluppatori si trovino fisicamente nelle vicinanze del server, sarebbe possibile impostare un box multi-posto con più set di display / tastiera / mouse e assegnare un ospite, una tastiera, un mouse e un display a ciascun utente? Come dovrebbero essere progettati il ​​software e l'hardware di questa installazione?

Risposte:


0

Come posso capire quali sono le specifiche hardware necessarie per supportare adeguatamente un determinato numero di utenti e macchine virtuali? Esistono linee guida sulle risorse minime per utente, ecc.?

Diamo un'occhiata ai vari casi per il software che si desidera eseguire:

  • Server di database

Se si dispone di un server di database condiviso tra tutti gli sviluppatori, è necessario eseguire il server del database con accesso a molti core della CPU e alla quantità di RAM possibile. Un disco veloce (ma non necessariamente grande) è importante. Le dimensioni del disco dipendono dal fatto che si stia pianificando di archiviare dati di scala di produzione completi per lo sviluppo, o se si può ottenere su alcuni gigabyte. Avere il collo di bottiglia del database sarebbe una brutta cosa, ma tieni presente che un carico di lavoro del database di sviluppo può essere molto diverso dal carico di lavoro del database di produzione. È probabile che il primo sia di dimensioni più ridotte e implichi query più inefficienti (mentre le query sono ancora in fase di sviluppo e i dati vengono esplorati da query ad hoc), mentre un database di produzione probabilmente avrà query ottimizzate eseguite su di esso e opereranno su enormi set di dati che sono (si spera) in gran parte memorizzati nella RAM.

  • JBoss application server

JBoss userà principalmente il tempo della CPU (durante l'esecuzione dei servlet), molta RAM (perché è Java) e larghezza di banda della rete. Come un database, un server di applicazioni avanzato può trarre vantaggio da più core. Il modo migliore per capire il giusto numero di core virtuali da assegnare è quello di testarlo su diversi numeri di core. Ma come regola generale, non assegnare mai più core virtuali di quelli che hai core fisici.

  • Ambienti desktop di sviluppo Eclipse

Questo è difficile. Eclipse stesso mangerà diverse centinaia di mega di RAM, ma quel numero dovrebbe rimanere abbastanza statico e di livello una volta caricati tutti i plugin. Quindi potresti voler controllare quanta RAM è necessaria in base al numero di plug-in che esegui. Le applicazioni Eclipse RCP più semplici possono utilizzare un minimo di 10 o 20 MB di RAM, ma un ambiente JavaEE completo con strumenti GEF, strumenti di controllo delle versioni e strumenti di database può contenere oltre un gigabyte di memoria. La compilazione dei file di origine Java non dipende dalla CPU come codice nativo, ma può comunque beneficiare di più core. In generale, tuttavia, le istanze di Eclipse probabilmente utilizzeranno relativamente meno risorse (CPU, RAM, disco) rispetto alle istanze di database o JBoss.

Nel complesso, con cinque utenti più alcune applicazioni lato server che sono note per essere avide di risorse, dovresti sembrare di alto livello. Senza nominare marchi, qualcosa come: quad core, 24 GB di RAM o più, forse un SSD o un array RAID hardware veloce di HDD.

Supponendo che gli sviluppatori si trovino fisicamente nelle vicinanze del server, sarebbe possibile impostare un box multi-posto con più set di display / tastiera / mouse e assegnare un ospite, una tastiera, un mouse e un display a ciascun utente? Come dovrebbero essere progettati il ​​software e l'hardware di questa installazione?

Prima di tutto una questione frontale: Qui e Qui .

Quello che imparerai velocemente è quello ci sono molte opzioni e non c'è un leader forte in questo spazio. Non c'è un modo ovvio che usa il 99,9% delle persone. Alcuni non usano affatto la virtualizzazione. Alcuni usano più istanze di Xorg. Alcuni usano Windows Multipoint Server. Alcuni usano ... hai l'idea. È sicuramente una configurazione fattibile, soprattutto per soli cinque utenti ... il lato positivo è che non è necessario avere PC desktop per ogni persona, solo un monitor / tastiera / mouse. Lo svantaggio è che devi avere un server centrale più robusto per supportare tutti gli utenti e la configurazione del software è più complessa.

Per una configurazione multiseat, avrai bisogno di abbastanza schede grafiche in modo da avere abbastanza porte per tutti i monitor di cui hai bisogno. Avrai anche bisogno di un hub USB per tutte le tastiere e i mouse.

Siate consapevoli del fatto che una volta che vi impegnate in una configurazione multi-sede, farete un investimento in schede grafiche (e possibilmente software multi-posto) che vi legheranno al fatto che gli sviluppatori si trovino fisicamente sul server. Quindi, se in seguito deciderai di portare un altro sviluppatore che lavora in un'altra parte del mondo, non sarà in grado di (facilmente) unirsi alla tua configurazione esistente semplicemente sollevando una sedia e portando una tastiera / mouse / monitor. Può anche essere difficile espandere la configurazione a più sviluppatori una volta raggiunto il limite della porta della scheda video.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.