Po pierwsze, wyjaśnię ci moją sytuację. Prowadzę dość popularną stronę internetową jako projekt poboczny, więc nie mogę naprawdę zainwestować w to mnóstwo pieniędzy. Obecnie mam tylko jeden serwer z HAProxy z przodu wysyłającym normalne żądania do Apache i wszystkie żądania plików statycznych do Lighttpd. Działa to naprawdę dobrze, ponieważ wszystkie żądania php i post są obsługiwane przez Apache, podczas gdy wszystkie obrazy są wysyłane do szybszego Lighttpd (strona to głównie obrazy, więc jest to naprawdę ważne). Byłoby miło nie musieć konfigurować subdomeny do obsługi obrazów, ponieważ krótkie adresy URL są również bardzo ważne, dlatego mój powód do korzystania z HAProxy.
Znalazłem dostawcę hostingu, który oferuje dość tanią, niepomierną przepustowość, z której korzystałem, problem pojawia się, gdy zaczynam wypychać tyle przepustowości, ile karta sieciowa 100 Mb / s może obsłużyć, a zatem potrzebuje drugiego serwera.
Zastanawiałem się nad moimi opcjami, więc wyjaśnię wam każdą z nich. Mam nadzieję, że możesz podać wgląd w to, która z nich jest dla mnie najlepsza, a może jest jeszcze jedna opcja, o której jeszcze nie myślałem.
Wymagania:
Nawet dystrybucja przepustowości jest koniecznością. Mam dość wydajny serwer, więc skalowanie w górę nie wchodzi w grę. Muszę zwiększyć skalę, aby uzyskać większą przepustowość.
Krótkie adresy URL. Naprawdę nie zamierzam konfigurować poddomeny, takiej jak img.example.com, aby wyświetlać moje obrazy. przyklad.com/image.jpg jest taki, jaki jest teraz i jak bardzo chciałbym, aby został. Ale jeśli nie ma innego wyjścia, rozumiem.
Serwer Clostest obsługujący żądanie byłby naprawdę fajny, ale nie był koniecznością. O czym należy pamiętać.
HAProxy do loadbalance:
- Byłoby to naprawdę łatwe, ponieważ i tak już używam HAProxy. Myślę jednak, że problem pojawia się przy rozdzielaniu przepustowości. Mogę się mylić, ale czy HAProxy nie wysyła żądania do serwera, na którym serwer je przetwarza, a następnie odsyła za pośrednictwem HAProxy do klienta? W ten sposób cały ruch jest wycofywany przez moduł równoważenia obciążenia, co powoduje, że zużywa tyle pasma, co wszystkie serwery łącznie.
DNS Round Robin:
- To może być moja najlepsza opcja. Po prostu powiel stronę internetową na wielu serwerach i rób to, co teraz robię. Minusem jest to, że jeśli jeden serwer ulegnie awarii, klienci nadal będą do niego wysyłani. Musiałbym również replikować witrynę na wielu serwerach. Miałem nadzieję, że mogę mieć jeden główny serwer, który obsługuje wszystko oprócz plików statycznych, a następnie mieć kilka statycznych serwerów plików. Przeczytałem również, że było to coś w rodzaju „równoważenia obciążenia biednego człowieka” i byłoby miło mieć coś bardziej wyrafinowanego.
Bezpośredni zwrot z serwera:
- Wydaje się to bardzo skomplikowane, ale może być dobrą opcją. Czy nadal będę mógł wysyłać określone adresy URL do niektórych serwerów? Podobnie jak w przypadku HAProxy, każdy adres URL, który kończy się odpowiednim rozszerzeniem pliku, jest wysyłany do Lighttpd, podczas gdy inne rozszerzenia są wysyłane do Apache. Potrzebowałbym więc czegoś podobnego. Podobnie, wszystkie żądania php są obsługiwane przez ten sam serwer, na którym działa oprogramowanie równoważące, podczas gdy wszystkie żądania jpg są wysyłane do wielu serwerów.
Idealnie, gdyby HAProxy obsługiwał Direct Server Return, wtedy mój problem zostałby rozwiązany. Nie chcę też korzystać z CDN, ponieważ są naprawdę drogie, a przecież to tylko poboczny projekt.
Czy rozumiesz mój problem? Daj mi znać, jeśli nie wyjaśniłem czegoś poprawnie lub potrzebujesz więcej informacji.