Múltiplos AWS EC2 executando Auto Scaling e Distributed Memcache

3

Estou planejando usar o Memcache distribuído em uma série de servidores da Web Linux no Amazon EC2. Atualmente, esses EC2s executam o escalonamento automático, aumentando e diminuindo com a carga.

Eu usei este post para guiar a configuração inicial.

prática recomendada com os nós memcache / php - multi memcache

E outro link que ele faz referência em uma resposta.

link

Estou um pouco inseguro sobre como os IPs da AWS locais dos servidores da Web serão atualizados na lista de nós dentro do código do cliente Memcache à medida que os servidores aumentam e diminuem.

Atualmente, estou usando o PHP PECL - Memcache no cliente.

Alguém sabe a melhor implementação para gerenciar isso com o ambiente da AWS?

Agradecemos antecipadamente por qualquer sugestão.

Dave

    
por daviemanchester 20.03.2011 / 23:01

2 respostas

3

Parece que você está projetando um sistema bastante grande para lidar com um pouco de carga. Em caso afirmativo, você provavelmente deseja ter instâncias separadas para nós do Memcache e da Web, pois suas características de desempenho são bem diferentes. Ao separar os dois, você pode usar um tipo de instância mais adequado a cada um deles.

O Memcache quase não usa CPU em circunstâncias normais, portanto, usar uma instância de memória alta faz sentido. Da mesma forma, os servidores da web geralmente são intensivos no processador. Use instâncias de alta CPU para elas.

Tenha em mente que o próprio memcached é muito simples. Ele se senta e espera por um comando dizendo "pegue-me esta chave" ou "defina esta chave para este valor" (existem alguns outros, mas isso é o básico). Qualquer hash / etc é puramente feito na biblioteca de memcached do cliente.

Com isso em mente, o autoescalonamento do memcached é bastante ambicioso, embora certamente possa ser feito. Se você constantemente atualiza e desativa servidores, você terá que aceitar que alguns dados armazenados em cache serão periodicamente perdidos, presumivelmente colocando mais carga em seus bancos de dados, ou assegurando que todos os dados armazenados em uma instância memcached sejam primeiro copiados para outra instância.

    
por 30.05.2011 / 22:52
0

Um pouco atrasado nisso, mas você não quer realmente ter escalonamentos de nós de memcache. O hashing irá se desviar, assim você estará perdendo uma grande porcentagem de seu cache toda vez que houver um evento de aumento ou redução de escala.

    
por 02.02.2012 / 22:37