Aproximação ao dimensionamento automático com o Amazon AWS

3

Eu quero saber sobre as possíveis opções para o dimensionamento automático da arquitetura do meu aplicativo da web. O que eu tenho no arquiteto é web-app (Tomcat), middleware (RabbitMQ), banco de dados (MongoDB), trabalhador (aplicativo Java independente). No momento, estou tentando escalar com base na utilização da CPU. Eu posso auto escalar meu web-app e worker como esperado, mas estou enfrentando problemas para escalar rabbitmq porque eu não sei como passar a carga para o servidor rabbtimq recém-instanciado.

Por exemplo, eu tenho 2 servidores Tomcat em execução. Sempre que a utilização da CPU da minha instância do RabbitMQ for maior que 80%, a AWS adicionará um novo servidor RabbitMQ. Mas meus servidores Tomcat não sabem que uma nova instância do RabbitMQ é incluída, então eles continuam referindo-se apenas ao servidor RabbitMQ original e não ao recém-criado.

O que eu posso fazer? Devo escalar automaticamente a arquitetura inteira quando a utilização de CPU Coelho aumenta? Ou eu deveria desistir completamente da idéia de escalonar automaticamente o RabbitMQ e criar as instâncias necessárias no estágio inicial da implantação? Existem outras opções?

    
por Anand Soni 10.05.2012 / 08:46

1 resposta

1

O problema é que seus servidores Tomcat (e provavelmente seus funcionários) não conhecem o servidor RabbitMQ. Você precisa fazer 1 de 2 coisas neste cenário: (a) Fale sobre o novo servidor ou (b) Faça com que eles não se importem

Para (a) acima, você poderia notificar cada servidor Tomcat e worker quando seu novo servidor RabbitMQ for iniciado, ou colocar as informações em alguma lista que seus outros componentes referenciem.

No entanto, neste cenário, supondo que você tenha uma fila no RabbitMQ # 1, o que acontece com essa fila se você iniciar o RabbitMQ # 2? Na verdade, você terá duas filas nesse caso, não uma única fila abrangendo dois servidores. Seu aplicativo lida com isso?

Para (b) acima, você pode dar uma olhada no Clustering do RabbitMQ . Meu entendimento é que, com o armazenamento em cluster do RabbitMQ, você pode ter nós indo e vindo, e os clientes não devem se importar.

    
por 10.05.2012 / 15:55