Is GlusterFS a good solution to share data across all the instances in the Autoscaling group?
Possivelmente .. A única maneira de obter uma resposta definitiva é com seus próprios testes, no entanto. No passado, eu configurei um cluster de webserver de 4 nós em instâncias Linode, usando o GlusterFS para distribuir / compartilhar o diretório de ativos de imagens e assim por diante. Encontramos dois problemas principais com esta abordagem:
- O GlusterFS é bastante intensivo em termos de E / S e funciona muito bem em hardware com IO não resolvido
- Ocasionalmente, um servidor Linode experimentaria um acesso abaixo do ideal para a SAN de back-end, e o tempo de espera de IO aumentaria drasticamente. Quando isso acontecia, o Gluster copiava mais dados entre os nós restantes, o que fazia com que o desempenho de IO sofresse nesses nós. O resultado disso foi que um pequeno erro de IO, causado por uma configuração SAN suboptimal, ou compartilhamento de tempo significaria que todo o cluster do servidor da Web ficaria sem destino, e todo o sistema de arquivos compartilhado poderia ficar indisponível.
Evidência puramente anedótica, mas eu nunca mais corri o GlusterFS em uma máquina virtual com SAN / armazenamento compartilhado.
Does Gluster ensure there is no loss of data ?
Pode ... No Gluster 3.0, há um melhor reconhecimento de "pools de replicação" onde você pode definir quantas cópias dos dados existem em todo o cluster. Definir um nível de replicação de 2 significa que há duas cópias em todo o cluster. Isso diminui de forma eficaz a capacidade de armazenamento, mas significa que você tem maior resiliência à falha do nó. Importante, isso também significa que você precisa adicionar mais nós como múltiplos do nível de replicação, neste caso, pares de nós.
What will happen if all the instances in Autoscaling are terminated, will I lose user data ?
Se as instâncias estiverem usando somente armazenamento de instância efêmera, sim. Se eles são baseados em EBS, ou usando instâncias montadas do EBS, então não.
What happens if a user uploads a image and the server processing the request goes down ?
Isso depende muito de como seu aplicativo foi criado. Eu suspeito strongmente que o usuário perderia seus dados (quase certo em uma solução ingenuamente arquitetada).
Is there an impact on IO if clients go down ?
Veja acima .. Se o cliente ficar inativo devido a problemas de armazenamento de backend, ele poderá destruir completamente o desempenho do cluster.