Jestem nowy w równoważeniu obciążenia i zastanawiam się, czy można użyć wielu modułów równoważenia obciążenia w celu przekierowania ruchu do moich serwerów aplikacji. Naprawdę nie rozumiem, jak można to zrobić. Czy nazwa domeny nie powinna pasować jeden do jednego z adresem IP określonego serwera (w tym przypadku IP jednego modułu równoważenia obciążenia)? Jeśli każdy serwer równoważenia obciążenia ma inny adres IP, w jaki sposób żądanie może zostać odebrane przez oba moduły równoważące obciążenie (lub przez 10 modułów równoważących obciążenie lub 50 lub 100)?
domain-name-system
nginx
load-balancing
haproxy
high-load
użytkownik3790827
źródło
źródło
Odpowiedzi:
Korzystanie z Round Robin DNS nie jest tak świetne ze względu na wysoką dostępność - jeśli jeden serwer przejdzie w tryb offline, klienci nadal będą próbowali się z nim połączyć i czekać na limit czasu.
Istnieją inne sposoby osiągnięcia tego celu.
1) Aktywne / pasywne usługi równoważenia obciążenia
Zasadniczo jeden moduł równoważenia obciążenia obsługuje cały ruch dla jednego adresu IP.
Jeśli moduł równoważący ulegnie awarii, węzeł pasywny włączy się i przejmie adres IP.
Należy pamiętać, że usługi równoważenia obciążenia są w zasadzie tylko ruchem przekierowującym, więc w przypadku małych i średnich witryn może to działać poprawnie.
2) Aktywne / aktywne równoważenia obciążenia
Ten sam adres IP ruchu jest skonfigurowany na obu (lub wielu) równoważeniach obciążenia.
Ruch przychodzący jest wysyłany do wszystkich modułów równoważących obciążenie, ale algorytm wybiera, który moduł równoważący powinien odpowiedzieć, wszystkie inne odrzucają ten ruch.
Prosty sposób myślenia o tym, masz dwa moduły równoważące obciążenie:
gdy żądający adres IP kończy się liczbą parzystą, moduł równoważenia obciążenia A odpowiada, w przeciwnym razie moduł równoważenia obciążenia B odpowiada.
Oczywiście twoja infrastruktura musi to obsługiwać i jest narzut z powodu wysyłania ruchu, ale odrzucania.
Więcej informacji, np. Tutaj: http://community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Stingray/ta-p/73867
źródło
Wysoka dostępność z modułami równoważenia obciążenia jest zwykle implementowana przy użyciu protokołu wirtualnego adresu IP (VIP), który pozwala kilku hostom (tj. Modułom równoważącym obciążenie) odpowiadać na jeden wspólny adres IP na jeden z kilku możliwych sposobów (warianty na aktywny / pasywny, aktywny / aktywny) .
Istnieje wiele takich protokołów, te, które widziałem najczęściej przy zwykłych modułach równoważenia obciążenia to VRRP i NLB (a także wiele nieokreślonych protokołów blackboxed w urządzeniach). Rozszerzanie routery i zapory można także napotkać CARP , HRSP , GLSP na przykład.
Ta strategia ma wiele zalet w porównaniu z równoważeniem obciążenia DNS, która jest prostszą strategią (o której jest mowa w innej odpowiedzi).
Równoważenie obciążenia DNS jest obciążone na przykład:
Korzystając z wirtualnego protokołu IP dla HA, można wybrać między innymi:
Tylko Ty wiesz, która strategia i protokół najlepiej pasuje do Twojego scenariusza.
źródło
Wymagania: mieć praktyczne rozwiązanie, które działa w chmurze lub w dowolnym środowisku, w którym nie ma dostępu do sprzętowych mechanizmów równoważenia obciążenia, protokołów BGP i tym podobnych.
Numer wniosku o dochód aplikacji jest nieznany, ale powinien być na tyle wysoki, aby bez obawy spełniać zwiększone oczekiwania dotyczące obciążenia.
Znajdźmy aplikację o podobnym charakterze obciążenia, na przykład rejestrowanie sklepu i aplikację do wyszukiwania. Znalazłem jeden .
Czego chcą:
Czego się nauczyli o ELB:
Dlaczego wybrali z Route53:
Ten konkretny przykład pokazuje, że w niektórych scenariuszach (moduł gromadzący dzienniki, usługa reklamowa itp.) Moduł równoważenia obciążenia jest zbędny, a „rozwiązanie sprawdzania poprawności DNS za pomocą okradzin” działa bardzo dobrze.
Zobaczmy, co AWS mówi o przełączeniu awaryjnym DNS:
Ta technika sprawia, że ELB (niewymagany, tylko dla notatki) jest bardziej niezawodny, ponownie opiera się na RR + Health Check:
Zobaczmy teraz, jak to działa za sceną. Oczywistym pytaniem jest, jak radzić sobie z buforowaniem DNS:
i zdefiniuj symbol wieloznaczny
Algolia wprowadziła „strategię ponownych prób klienta”, która działa całkiem dobrze, jeśli twój klient (JS w twoim przypadku) może sobie z tym poradzić:
źródło