Gestisco un'applicazione Web che sta superando un singolo VPS. L'architettura è composta da un gran numero di piccoli utenti, ciascuno con il proprio sottodominio. Gli utenti non interagiscono. Il caricamento indica che devo spostare alcuni utenti e tutti i nuovi utenti in un'altra installazione dell'applicazione Web su un server separato.Ridimensionamento orizzontale: instradamento dei sottodomini generati dall'utente tra i server
Attualmente, ogni sottodominio utente cade sullo stesso virtualhost, dove un singolo front controller PHP visualizza il contenuto appropriato in base al nome host. Un singolo record DNS con caratteri jolly per * .mydomain.com punta al server corrente.
Qual è la mia opzione migliore per il routing di diversi sottodomini utente a server diversi?
I miei pensieri:
- un nuovo dominio di primo livello per tutti i server. user.s1.mydomain.com, user.s2.mydomain.com e così via (informazioni ineleganti e perdite)
- Eseguire il mio server DNS per instradare gli utenti tra server (punto di errore aggiuntivo, tecnologia non familiare)
- A anteriore di controllo/sistema di bilanciamento centrale che reverse-proxy ogni richiesta al server appropriato (punto in più di guasto, i collegamenti potenzialmente limitato)
I contenuti generati dall'utente per ogni sottodominio sono tutti in un database o caricano i propri dati sul filesystem sul server? – drew010
@ drew010 Il contenuto dell'utente viene memorizzato sia in un database che nel filesystem. Poiché gli utenti non interagiscono, posso liberamente impostare istanze multiple di database ... il problema è solo il routing di query di pagina. Suppongo che separare i server web db + sarebbe un altro possibile modo di ridimensionare, ma alla fine dovrò dividere il server web e avrò bisogno di una soluzione – mappu
Ecco cosa stavo immaginando. Sono più incline al DNS, ma ciò significa che avrete bisogno di un record A per ogni sottodominio o una soluzione DNS personalizzata che possa interrogare la vostra applicazione per determinare quale indirizzo IP utilizzare per il sottodominio specificato.Potresti avere risultati migliori chiedendo questo su ServerFault ora che ci penso. – drew010