Práticas recomendadas para escalonamento e planejamento de capacidade: somente VM? VM + Container? Recipiente apenas? Grupo ? Algo mais?

1

(não consigo encontrar uma pergunta semelhante que já tenha sido respondida, mas talvez eu não use as boas palavras como sou um estudante francês;))
A resposta mais próxima para o que estou procurando é: Melhor prática de topologia de hardware escalável de aplicativo da Web mas não responde a tudo

Eu construí uma pequena nuvem privada (Openstack) na qual eu executo VMs KVM, na maioria das vezes uma VM por domínio / site, para minhas dezenas de sites e também para alguns clientes.
Eu planejo testar se posso evoluir para uma "nuvem híbrida", tendo algumas coisas executadas dentro da minha nuvem, e outras no EC2, então eu quero descobrir se o meu "jeito de fazer" é o mais adequado para o meu uso .
Essas VMs executam o CoreOS, que executa então diferentes Docker Services (um contêiner para Nginx, um contêiner para pgsql, etc ...). Se um serviço começa a ficar "curto" demais em algo, eu então crio uma VM maior, copio a VM antiga para a VM maior e excluo a VM antiga ou crio uma VM dedicada para o serviço que precisa (por exemplo, segunda VM dedicada ao Nginx para lidar com mais conexões).

No entanto, estou me perguntando se não estou fazendo as coisas erradas.
Eu escolhi usar esse "modelo" porque quero um isolamento strong entre os diferentes domínios / clientes, porque eu queria voltar nos dias para brincar e me acostumar mais com o Docker, e porque acho o Docker ser uma das formas mais eficazes de implantar serviços rapidamente.

Devo usar somente VMs (sem contêineres) com uma VM por serviço (em vez de uma VM por domínio)?
Ou devo usar apenas recipientes para separar os diferentes serviços e executar todos eles misturados em meus nós? Como dezenas e dezenas de contêineres de diferentes serviços e clientes diferentes? Então, como posso isolar de forma eficaz os diferentes domínios / clientes? E então, como eu dimensiono esses serviços? Apenas adicionando mais nós?
Ou devo criar um cluster de grandes VMs ou máquinas bare-metal e depois usá-las para criar um grande cluster CoreOS que deve ser capaz de crescer adicionando mais nós bare-metal a ele? Em seguida, a mesma pergunta que para contêineres se aplica.

Desculpe se minha pergunta parece muito idiota ou nova ou não adequada, mas eu prefiro perguntar agora, e não quando será tarde demais para dar um passo para trás;)

Qualquer sugestão será bem-vinda:)

Y

    
por Yannovitch 23.06.2015 / 01:15

1 resposta

1

É totalmente adequado usar os contêineres de VMs e , especialmente nesse tipo de cenário.

As VMs fornecem uma camada de isolamento segura que é barata e cara: - é barato em mão de obra, porque você não precisa trabalhar muito para conseguir uma boa segurança com VMs; - é dispendioso em recursos, porque a sobrecarga das VMs pode ser significativa, especialmente para serviços pequenos que exigem quantidades modestas de RAM.

(A "taxa de virtualização" pode ser considerada uma constante pequena; para serviços grandes, essa constante é insignificante, mas para serviços pequenos, ela se torna uma fração significativa da área ocupada total.)

Os contêineres, por outro lado, fornecem a você um isolamento de software barato e eficiente e um método de implantação (no sentido de que você pode implantar vários contêineres lado a lado sem se preocupar com versões conflitantes). / p>

Além disso, se você quiser implementar a nuvem híbrida (ou seja, transbordamento de uma nuvem privada para uma nuvem pública), os contêineres são uma maneira muito fácil de unir os dois ambientes, abstraindo suas diferenças.

Minha estratégia pessoal (supondo que estou entendendo suas necessidades corretamente) seria isolar inquilinos com VMs e confiar em uma nuvem privada simples (OpenStack ou outra), implantar em contêineres e mover esses contêineres entre sua nuvem privada e uma nuvem pública, conforme necessário. É claro que você pode redimensionar suas VMs (em qualquer nuvem) para acomodar a flutuação nos requisitos de recursos.

    
por 30.07.2015 / 23:36