Que fatores devo considerar ao criar um host de máquina virtual?

Que fatores devo considerar ao criar um host de máquina virtual?

Quero construir um servidor que será usado para hospedar máquinas virtuais. Essas máquinas virtuais desempenhariam funções diferentes, como:

  • Servidor de banco de dados
  • Servidor de aplicativos JBoss
  • Instâncias de desenvolvimento Eclipse (Java EE, Scala, etc)

O número de usuários que acessarão o servidor será de cerca de 5 pessoas por vez. O sistema operacional pode ser Windows ou Linux, o que funcionar melhor. Os usuários precisarão de acesso gráfico/desktop às instâncias de desenvolvimento do Eclipse.

  • Como posso descobrir quais especificações de hardware preciso para oferecer suporte adequado a um determinado número de usuários e máquinas virtuais? Existem diretrizes sobre recursos mínimos por usuário, etc?
  • Supondo que os desenvolvedores estejam fisicamente localizados nas proximidades do servidor, seria viável configurar uma caixa multi-assento com vários conjuntos de display/teclado/mouse e atribuir um convidado, teclado, mouse e display head para cada usuário? Como o software e o hardware desta configuração seriam arquitetados?

Responder1

Como posso descobrir quais especificações de hardware preciso para oferecer suporte adequado a um determinado número de usuários e máquinas virtuais? Existem diretrizes sobre recursos mínimos por usuário, etc?

Vejamos os vários casos do software que você deseja executar:

  • Servidor de banco de dados

Se você tiver um servidor de banco de dados compartilhado entre todos os desenvolvedores, deverá executar seu servidor de banco de dados com acesso a muitos núcleos de CPU e ao máximo de RAM possível. Um disco rápido (mas não necessariamente grande) é importante. O tamanho do disco dependerá se você está planejando armazenar dados completos em escala de produção para desenvolvimento ou se você consegue sobreviver com alguns gigabytes. Ter o gargalo do banco de dados seria uma coisa ruim, mas lembre-se de que uma carga de trabalho de banco de dados de desenvolvimento pode ser muito diferente de uma carga de trabalho de banco de dados de produção. O primeiro provavelmente será menor em escala e envolverá consultas mais ineficientes (enquanto as consultas ainda estão sendo desenvolvidas e os dados estão sendo explorados por consultas ad-hoc), enquanto um banco de dados de produção provavelmente terá consultas otimizadas executadas nele e operando em enormes conjuntos de dados que (espero) são amplamente armazenados em cache na RAM.

  • Servidor de aplicativos JBoss

O JBoss usará principalmente tempo de CPU (durante a execução de servlets), muita RAM (porque é Java) e largura de banda de rede. Assim como um banco de dados, um servidor de aplicativos avançado pode se beneficiar de múltiplos núcleos. A melhor maneira de descobrir o número certo de núcleos virtuais a serem atribuídos é testá-lo em diferentes números de núcleos. Mas, como regra geral, nunca atribua mais núcleos virtuais do que núcleos físicos.

  • Ambientes de desktop de desenvolvimento Eclipse

Isso é complicado. O próprio Eclipse consumirá várias centenas de megas de RAM, mas esse número deve permanecer bastante estático e nivelado quando todos os seus plug-ins forem carregados. Portanto, você pode verificar quanta RAM é necessária com base em quantos plug-ins você executa. Os aplicativos Eclipse RCP mais simples podem usar apenas 10 ou 20 MB de RAM, mas um ambiente JavaEE completo com ferramentas GEF, ferramentas de controle de versão e ferramentas de banco de dados pode consumir mais de um gigabyte de memória. A compilação de arquivos de origem Java não depende tanto da CPU quanto do código nativo, mas ainda pode se beneficiar de vários núcleos. Em geral, porém, suas instâncias do Eclipse provavelmente usarão relativamente menos recursos (CPU, RAM, disco) do que o banco de dados ou as instâncias do JBoss.

No geral, com cinco usuários e alguns aplicativos do lado do servidor que são conhecidos por serem ávidos por recursos, você deve parecer sofisticado. Sem nomear marcas, algo como: quad core, 24 GB de RAM ou mais, talvez um SSD ou um array RAID de hardware rápido de HDDs.

Supondo que os desenvolvedores estejam fisicamente localizados nas proximidades do servidor, seria viável configurar uma caixa multi-assento com vários conjuntos de display/teclado/mouse e atribuir um convidado, teclado, mouse e display head para cada usuário? Como o software e o hardware desta configuração seriam arquitetados?

Primeiro, alguns assuntos iniciais:aquieaqui.

O que você aprenderá rapidamente é quehá muitas opçõese não há um líder forte neste espaço. Não existe uma maneira óbvia que 99,9% das pessoas usem. Alguns nem usam virtualização. Alguns usam múltiplas instâncias do Xorg. Alguns usam o Windows Multipoint Server. Alguns usam ... você entendeu. É definitivamente uma configuração viável, especialmente para apenas cinco usuários... a vantagem é que você não precisa ter PCs desktop para cada pessoa, apenas um monitor/teclado/mouse. A desvantagem é que você precisa de um servidor central mais robusto para suportar todos os usuários, e a configuração do software é mais complexa.

Para uma configuração multiterminal, você precisará de placas gráficas suficientes para ter portas suficientes para todos os monitores necessários. Você também precisará de um hub USB para todos os teclados e mouses.

Esteja ciente de que, ao se comprometer com uma configuração multiterminal, você estará fazendo um investimento em placas gráficas (e possivelmente em software multiterminal) que o vinculará à presença física de desenvolvedores no servidor. Portanto, se você decidir mais tarde trazer outro desenvolvedor que trabalhe em outra parte do mundo, ele não poderá (facilmente) ingressar na sua configuração existente apenas puxando uma cadeira e trazendo um teclado/mouse/monitor. Também pode ser difícil expandir sua configuração para mais desenvolvedores depois que você atingir o limite de portas da placa de vídeo.

informação relacionada