Opções
A opção 2 não pode ser confiável em um único URL, pois dependeria de geolocalização. A geolocalização não selecionará com confiança o mesmo servidor para um determinado usuário ao longo do tempo. Para isso, você precisaria de URLs diferentes para cada região.
Você perdeu várias opções:
- Use uma instância central do RDS para gravações, com réplicas de leitura em cada região.
- Use a replicação incorporada do MySQL, em vez dos recursos da AWS. Eu não sei se você pode fazer isso com o RDS - eu suspeito que você teria que executar o MySQL no EC2. Isso é semelhante ao # 4, mas não exatamente o mesmo.
- Tenha uma única instância / cluster do EC2 e uma instância do RDS. Acelere o aplicativo usando uma distribuição de conteúdo, como o CloudFront.
Análise de opções
Eu sempre usaria a opção mais simples primeiro, que nesse caso é o EC2 e o RDS no mesmo local, usando um CDN para aumentar o desempenho. Você não disse por que acha que precisa de vários servidores de aplicativos em regiões diferentes, por isso estou confuso por que você pulou direto para opções relativamente complexas.
Se um único local não atender às necessidades de desempenho, você poderia considerar colocar servidores de aplicativos em cada região com um único banco de dados RDS. Isso pode ser mais rápido, depende do comportamento do seu aplicativo. Você teria que avaliar.
Só então eu consideraria a complexidade adicional de vários bancos de dados.
Réplicas de leitura
Se você tiver controle sobre o aplicativo, criaria a capacidade de ter URLs de banco de dados diferentes para leitura e gravação desde o início. Isso permite que você se mova para ler réplicas mais tarde, se precisar.