Load balanceamento de servidores db postgresql em aws

1

Estou executando um nó de cadeia de blocos (para aqueles que não sabem, blockchains essencialmente mantêm as instâncias de banco de dados sincronizadas por meio de um protocolo de consenso). Por enquanto eu tenho um servidor web que fala diretamente com o banco de dados dentro do nó.

No entanto, em antecipação a uma carga maior, eu gostaria de colocar um balanceador de carga na frente do db (para que eu possa adicionar mais nós como eu gosto por trás do balanceador e dimensionar dessa maneira).

Estou hospedando o nó no AWS (apenas uma instância do EC2). Eu estava esperando poder adicionar um balanceador de carga de classe da AWS na frente da instância do EC2, mas não consigo encontrar nenhum tutorial sobre como fazer isso.

Pergunta: Isso pode ser feito (de alguma forma) e como posso fazer isso? Novamente, o objetivo é ter uma única cadeia de conexão que minha camada de serviço da Web possa conectar, a qual, por trás das cenas, roteará a solicitação para várias instâncias de db.

Obrigado antecipadamente.

Edit: Basicamente, apenas suponha que eu tenha várias instâncias de db que estão sendo mantidas em sincronia pela rede blockchain. Só preciso executar leituras nas instâncias (as gravações são enviadas à rede para consenso antes de serem confirmadas no banco de dados por meio do protocolo). Eu preciso encontrar uma maneira de balancear as leituras em várias instâncias (que, novamente, têm a garantia de estar em sincronia).

    
por istrau2 26.06.2017 / 22:51

1 resposta

1

Bancos de dados de balanceamento de carga são mais difíceis do que balanceamento de carga, dizem os servidores da web stateless. Você não pode carregar automaticamente um banco de dados usando os recursos da AWS. A principal maneira de aumentar o desempenho do banco de dados é usar uma instância maior ou alocar mais capacidade de E / S.

O Amazon RDS tem o conceito de uma " réplica de leitura ". Eles usam a replicação nativa para manter mais um banco de dados adicional em sincronia com o mestre. Seu aplicativo deve ser inteligente o suficiente para usar o banco de dados correto, mestre para gravações ou uma réplica para leituras.

Você terá que fazer algumas das suas próprias leituras para entender as arquiteturas de banco de dados e como ele irá interagir com o seu caso de uso. Você não nos contou o suficiente para lhe dar uma resposta definitiva. Este artigo fala sobre o clustering do PostgreSQL e tal.

Sugiro que você amplie para uma instância maior como sua primeira etapa, com vários clientes usando esse banco de dados. Em seguida, você terá que expandir e de alguma forma manter os bancos de dados em sincronia.

Na AWS, você pode reescrever seu aplicativo para usar o DynamoDB , um banco de dados no-sql altamente dimensionável. Isso tende a ser uma grande mudança.

Se você editar sua pergunta para dar mais detalhes sobre o que está fazendo, poderá obter mais ajuda.

    
por 26.06.2017 / 23:08