Mi piacciono queste domande perché sembrano sempre così semplici da rispondere quando in realtà non lo sono.
Per i principianti, il tuo SP2 BIGGEST è che tutto è su Amazon. Adoro AWS per molte ragioni, ma in tutte le situazioni in cui hai bisogno di reale disponibilità, ti stai essenzialmente prendendo in giro facendo affidamento su di loro al 100%. Quindi il tuo primo piano dovrebbe essere quello di distribuire i tuoi servizi a più di 1 fornitore (cloud, VPS o dedicato).
Voglio farti una domanda: se AWS va giù, quanto tempo/può/vorrà farti notare e poi fare qualcosa al riguardo, e quanto velocemente hai bisogno che i tuoi servizi siano di nuovo attivi e funzionanti ?
Il motivo che mi chiedo è questo: DNS bilanciamento del carico di record/AAAA A è una soluzione meravigliosa, purtroppo non è possibile impostare i pesi o priorità, come si può con i record SRV/MX. Ciò significa che se AWS diventa completamente non disponibile, dovrai effettuare rapidamente una modifica DNS per rimuovere l'IP. Che CAN essere automatizzato se il provider DNS ha un'API che lo consente. D'altra parte, il caching DNS viene eseguito in così tanti posti che potrebbe non valere la pena di effettuare il cambio DNS, il che significa che avrai una disponibilità dal 50% al 100% se 1 IP non è disponibile (supponendo che tu abbia 2 record A), perché alcuni browser sono in grado di provare il 2 ° IP se il primo non funziona.
A mio parere, considerando l'eccellente tempo di attività di AWS, non sarà impeccabile assegnare 2 diversi IP (su 2 provider diversi) al dominio. Penso che sia meglio che avere una disponibilità dello 0% quando 1 IP non funziona, ma non c'è ancora gioia nel perdere il 50% delle richieste.
È possibile disporre di 2 bilanciatori di carico su ciascun provider e inoltrare richieste all'altra provider se determinate istanze/server non sono disponibili. In altre parole, sono necessari solo load balancer funzionali presso ENTRAMBI i provider e server/istanze funzionali presso UN provider. Assicurati di selezionare un provider alternativo che non abbia troppa latenza in AWS;)
MMM è anche un ottimo strumento, ma non è correlato a Rails in alcun modo. Personalmente preferisco posizionare un bilanciatore del carico di fronte a tutti i miei server Database e lasciare che gestiscano chi riceve richieste ecc. Dal momento che i dati su un server di database sono così importanti, di solito è meglio avere un aspetto umano e assicurarci tutto è OK quando c'è un problema, invece di lasciare che uno strumento gestisca la sua disponibilità, configurazione, ecc. MMM funziona in molte situazioni, forse dovresti provarlo e vedere se risponde alle tue esigenze. Non posso dire niente di male a riguardo.
Non ho alcuna familiarità con il server multimediale Wowza, ma una rapida ricerca ha spiegato alcune cose. Poiché Wowza utilizza RTSP (UDP e TCP), HAProxy è NON una soluzione come solo TCP. Al contrario, Keepalived può eseguire il bilanciamento del carico UDP (utilizza IVPS/LVS). In effetti, Keepalived dovrebbe essere utilizzato anche per il bilanciamento del carico dello slave del database se si hanno richieste lunghe.
Un'ultima nota, ci sono molti modi per "roll your own" servizi simili a AWS come l'archiviazione S3. Se vuoi evitare di avere SPF ma hai ancora bisogno delle stesse funzionalità dei tuoi servizi AWS, dovresti controllare le varianti open source, come Eucalyptus/Cloud.com/Openstack/GlusterFS. C'è un sacco di lavoro nella creazione di tutte queste cose, ma sarai felice il giorno in cui puoi dire: "quindi, cosa succederebbe se il fornitore X fosse inattivo, che Y potesse subentrare".
Sono assolutamente d'accordo con te su ** AWS ** è il più grande ** SPF **, quindi non dipendiamo da specifiche cose AWS. Il nostro schema attuale è indipendente dalla piattaforma. Se AWS si interrompe, posso configurare lo stesso ambiente per 3 ore e 8-12 ore per recuperare il contenuto multimediale dai backup. – Anatoly
Mi chiedo come Github gestisce il failover? Posso leggere in un [blog] (https://github.com/blog/493-github-is-moving-to-rackspace) _On Rackspace, ogni parte della nostra infrastruttura avrà un failover. Ciò significa due server di database, quattro server Web, due istanze di GitHub Pages, due istanze di Gem Server, due istanze di Download archivio, percorsi di lavoro distribuiti, tre coppie di file server e molto altro._ – Anatoly
Non capisco il tuo suggerimento su DB ridimensionamento _Personalmente preferisco posizionare un bilanciatore del carico davanti a tutti i miei server di database e lasciare che gestiscano chi riceve le richieste_. Ad ogni modo può essere anche un SPF. – Anatoly