Dividindo conjuntos de serviços em um único servidor

2

Um grupo do qual faço parte cresceu e está prestes a passar do uso de VPSs da DigitalOcean para um único servidor colocado. Neste ponto, não temos necessidade de distribuir nosso serviço muito bem. Esse servidor monolítico estará executando praticamente todos os nossos sistemas, desde o nosso site voltado ao público até nosso serviço de e-mail, até painéis de controle e daemons personalizados.

Tem havido preocupação, no entanto, com a possibilidade de um serviço ficar comprometido (já fomos alvo de intrusões no passado) e causar estabilidade ou uma falha de segurança em outras partes do servidor.

O que estamos procurando fazer é "sandbox" certos serviços e processos, restringindo a quantidade de recursos (RAM, CPU) que eles podem usar. Tem sido sugerido executar cada "conjunto" de serviços em uma VM diferente, mas isso parece desajeitado e difícil de manter para mim. Eu acho que o Linux teria uma maneira mais elegante de lidar com isso. Alguém tem alguma sugestão sobre a melhor maneira de conseguir isso?

Estamos usando o CentOS 6.4 de 64 bits.

    
por Connor Peet 13.08.2013 / 19:16

2 respostas

4

Um projeto chamado Docker recebeu recentemente muita atenção por tentar resolver este problema.

Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.

Esta tecnologia aproveita os cgroups do Linux e algumas outras coisas para construir "contêineres" que podem conter todos os recursos e configurações necessários para executar um serviço específico, que pode ser gerenciado como pacotes, eles podem ser distribuídos, versionados e usados em uma ampla variedade de ambientes. (Esta é uma simplificação grosseira.)

Veja Quais são os principais recursos do Docker para saber mais sobre como ele realmente funciona .

    
por 13.08.2013 / 19:48
2

Tradicionalmente, você faria isso com uma cadeia chroot , mas eu recomendo strongmente que cada um deles seja colocado em sua própria VM. Muito melhor isolamento uns dos outros e você obtém melhor granularidade ao atualizar / solucionar problemas / alterar os serviços. Ser capaz de reiniciar / corrigir o (s) seu (s) front-end (s) da Web sem levar o servidor de banco de dados offline pode ser muito bom, especialmente se você acabar com a redundância.

A sobrecarga de uma caixa do CentOS é relativamente pequena em relação à maioria dos aplicativos.

    
por 13.08.2013 / 19:26