Quais são as opções para estabelecer uma VLAN para suportar sharding e replicação do banco de dados?

4

Histórico: Estou escrevendo um aplicativo da Web que estará disponível para o mundo todo em uma base de software como serviço. Como entrada para a minha escolha de uma plataforma de banco de dados, tenho lido em bancos de dados 'NoSQL' como Cassandra, Riak, MongoDB e Redis. Replicação, particionamento e particionamento são proeminentes nos conjuntos de recursos de todos esses bancos de dados.

Eu acabo escolhendo um deles e continuo desenvolvendo, mas o que me preocupa é se eu, realisticamente, serei capaz de tirar proveito de toda essa qualidade de sharding / distribuição do banco de dados na produção.

Sou uma start-up de um homem com uma infraestrutura de tecnologia de produção que consiste em uma fatia do SliceHost rodando o Centos. Eu não espero nunca executar meu próprio hardware de servidor. Eu só quero ter uma visão agora do tipo de arquitetura de servidor que eu poderia mover para quando meu produto se tornar extremamente bem sucedido. : -)

Como as pessoas configuram clusters de servidores para suportar seus esquemas bacanas de distribuição de banco de dados NoSQL em um ambiente VPS? Na maioria dos casos (todos?), Os produtos de banco de dados esperam ser executados em uma LAN privada e, portanto, não possuem os mecanismos de autenticação necessários para suportar clusters que abrangem o mundo lanoso da Internet. Como se estabelece uma LAN privada na 'nuvem'? Os provedores de VPS oferecem esse tipo de coisa? O SliceHost parece oferecer endereços IP privados , mas esses endereços são acessível por todos os seus clientes; eles não estão restritos a um cliente em particular.

    
por David Pinn 13.04.2011 / 12:02

3 respostas

3

Em primeiro lugar, não adicione datastores NoSQL altamente escaláveis antes de precisar desse nível de desempenho . Durante o desenvolvimento inicial, e enquanto você está recebendo seus primeiros milhares de clientes, você provavelmente pode executar muito bem fora de um banco de dados do SQL musculoso. Fique com a solução comprovada até precisar de mais; especialmente se sua estrutura de desenvolvimento de aplicativo tiver algum tipo de camada Mapeador de relação de objeto que espera um banco de dados SQL.

How does one establish a private LAN in 'the cloud'?

Depende do provedor, não há solução padrão. Alguns provedores podem não ter isso (você menciona que os IPs "privados" do Slicehost são acessíveis por todos os clientes do Slicehost).

O Amazon EC2 possui um firewall embutido chamado um "grupo de segurança" . Somente servidores sob seu controle podem enviar pacotes IP uns aos outros por padrão; e você obtém um gerenciamento refinado dessas regras. O chat de suporte do Rackspace Cloud Server diz que sua conexão de rede privada é privada para cada conta do cliente (presumivelmente, isso significa que algum tipo de VLAN por cliente é usado). Outros bons provedores de PaaS devem ter algo semelhante; se não, você pode considerar mudar de provedor.

Com provedores que não oferecem sub-redes verdadeiramente privadas, você poderia :

  • instale o firewall em cada host (IPTables do Linux, ou usando um front-end como o UFW no Ubuntu, Shorewall)
  • e / ou usar VPNs host-to-host como o OpenVPN

Isso funcionaria. Mas isso aumenta a complexidade, e o IMHO nega grande parte do simples provisionamento de hosts adicionais (porque quando você está adicionando um novo servidor, você também precisa alterar as regras de firewall para permitir o novo IP "privado"). O provisionamento simples é realmente uma parte essencial do que se deseja de um provedor de PaaS.

    
por 13.04.2011 / 12:17
1

Você não desejaria que o banco de dados fosse exposto ao mundo mais amplo, independentemente do tipo, por isso você precisa limitar as conexões apenas aos hosts autorizados.

Eu não tenho conhecimento dos sistemas nosql, mas como você está planejando utilizar servidores slicehost, seria simples limitar as conexões usando o iptables para que as conexões sejam explicitamente configuradas para permitir tráfego entre elas (via seus endereços IP privados) o que equivale à sua própria LAN privada.

    
por 13.04.2011 / 12:50
0

Estou investigando se o IPSec pode ser usado para o mesmo cenário em nossa inicialização. Essencialmente, o IPSec possui este subprotocolo Authentication Header, que pode autenticar um determinado pacote IP com base no fato de sua checksum md5 / sha-1 corresponder à payload + ip. Agora, a diferença é que podemos especificar um segredo compartilhado que também será usado ao calcular a soma de verificação no pacote. Se o remetente não souber o segredo, ele não poderá calcular uma soma de verificação que pode ser verificada pelo destinatário e, portanto, o pacote será descartado como corrompido.

Efetivamente, podemos agrupar nós em uma LAN com base em segredo compartilhado e somente nós intragrupo podem enviar pacotes IP uns aos outros resolvendo o problema.

    
por 04.07.2012 / 23:49