Utrzymuję aplikację internetową, która wyrasta z pojedynczego serwera VPS. Architektura składa się z dużej liczby małych użytkowników, każdy z własną subdomeną. Użytkownicy nie wchodzą w interakcje. Load oznacza, że muszę przenieść niektórych użytkowników i wszystkich nowych użytkowników do innej instalacji aplikacji internetowej na oddzielnym serwerze.Skalowanie poziome: routing generowanych przez użytkownika poddomen między serwerami
Obecnie każda poddomena użytkownika przypada na ten sam serwer wirtualny, w którym pojedynczy front kontroler PHP wyświetla odpowiednią treść na podstawie nazwy hosta. Pojedynczy rekord DNS z wildcard dla * .mydomain.com wskazuje na bieżący serwer.
Jaki jest mój najlepszy sposób na przekierowanie różnych poddomen do różnych serwerów?
Myślami:
- nowej domeny najwyższego poziomu dla każdego serwera. user.s1.mydomain.com, user.s2.mydomain.com itd. (informacje nieeleganckie i informacje o wyciekach)
- Uruchom mój własny serwer DNS, aby kierować użytkowników między serwerami (dodatkowy punkt awarii, nieznana technologia)
- A centralny kontroler frontowy/układ równoważący odwrotnie - przesyła wszystkie żądania do odpowiedniego serwera (dodatkowy punkt awarii, potencjalnie ograniczone połączenia).
Czy treść generowana przez użytkownika dla każdej subdomeny znajduje się w bazie danych, czy też przesyła własne dane do systemu plików na serwerze? – drew010
@ rys010 Treści użytkownika są przechowywane zarówno w bazie danych, jak iw systemie plików. Ponieważ użytkownicy nie wchodzą w interakcje, mogę dowolnie konfigurować wiele instancji bazy danych ... problem polega tylko na kierowaniu zapytań do strony. Przypuszczam, że oddzielenie serwerów db + web byłoby kolejnym możliwym sposobem skalowania, ale ostatecznie będę musiał podzielić serwer WWW i będę potrzebował rozwiązania – mappu
To właśnie wymyśliłem. Najbardziej skłaniam się ku DNS, ale to oznacza, że będziesz potrzebował rekordu A dla każdej subdomeny lub niestandardowego rozwiązania DNS, które może przesyłać zapytanie do twojej aplikacji, aby określić, który adres IP będzie używany dla danej poddomeny.Możesz mieć lepsze wyniki pytając o to na ServerFault teraz, gdy o tym myślę. – drew010