I'm planning to use EFS to share all Wordpress files and likely Redis for shared session management, however this is not the topic of this question.
Hmm, é uma pena. Eu estava prestes a sugerir que você descarregasse todos os dados de configuração e usuário das instâncias para um armazenamento compartilhado durável e usasse as instâncias puramente como servidores da Web sem estado - fáceis de dimensionar, fáceis de substituir. A conversão do armazenamento local para o EFS é fácil (não é realmente uma nova arquitetura do sistema, movendo apenas alguns diretórios para o EFS) e pode ser feita com muito pouco tempo de inatividade.
Todos os arquivos de configuração do Apache / Nginx / PHP e do Wordpress, bem como os arquivos de mídia do usuário carregados serão então armazenados no sistema de arquivos compartilhado e as instâncias se auto-configuram a partir dali.
De qualquer forma, se você descartar imediatamente a melhor e óbvia solução , ficaremos sugerindo algumas opções inferiores. Eu tenho um modelo do CloudFormation que faz algo próximo do que você deseja:
- A instância do EC2 está no grupo AutoScaling de min = 1 / max = 1. Ou seja se ele morrer, reinicia automaticamente.
- Toda noite, um Lambda cria um instantâneo da instância como uma nova AMI e atualiza a Configuração de inicialização do ASG com o novo ID da AMI. Ou seja se a instância morrer no dia seguinte, ela será criada a partir do instantâneo da última noite.
Isso funciona bem em instâncias que não mudam com muita frequência. Por exemplo. nosso CMS tem todos os dados em um banco de dados e todos os arquivos de configuração e usuário do aplicativo no EFS e apenas alguns pacotes e arquivos de configuração do sistema são atualizados na instância de tempos em tempos, mas não com muita frequência.
Pode algo assim funcionar para você? No entanto, o esforço para implementar isso é provavelmente maior do que migrar para o EFS em primeiro lugar e o resultado não é tão bom e tão resiliente.
Espero que ajude:)