2011-07-06 24 views
9

Pracujemy nad skalowaniem naszej architektury EC2 do punktu, w którym chcielibyśmy zarządzać własnym równoważeniem obciążenia. Obecnie mamy serię maszyn skonfigurowanych na HAProxy do podstawowego równoważenia obciążenia, ale szukamy "najlepszej praktyki" oznacza, że ​​nowe wystąpienie pojawi się w Internecie i automatycznie (lub prawie automatycznie) dołącza do HAProxy.Jaka jest najlepsza praktyka uzyskiwania instancji EC2 automatycznie dołączających do HAProxy?

Idealnie byłoby monitorować obciążenie naszych systemów lub polegać na danych analitycznych z kilku lat, aby opracować harmonogram rytmu, a kiedy osiągniemy próg lub zaplanowany czas, zlecić procesowi uruchomienie nowej instancji, niech ten nowy węzeł połączy się z systemem na naszej maszynie HAProxy, aby zapisać jego nazwę hosta w config i przeładować HAProxy, aby stała się częścią puli.

Zastanawiamy się nad ELB firmy Amazon, gdy tylko osiągniemy rozmiar wystarczający do pokrycia wieloma strefami, ale do tego czasu potrzebujemy prostej konfiguracji, która umożliwia dodawanie/usuwanie maszyn z HAProxy.

Wiem, że istnieją usługi, za które możemy zapłacić, aby zarządzać tymi rzeczami, ale Scalr wydaje się ograniczać nas do bardzo konkretnych typów instancji, a Rightscale jest zbyt kosztowne, więc podobnie jak wiele innych, zamierzamy własne rozwiązanie.

Niestety, osoby, które przetasują własne rozwiązanie, wydają się być cicho przy swoim procesie.

+1

Jakie były Twoje problemy ze skalr? możesz używać niestandardowych typów instancji, o ile instalujesz klienta skalr. używamy ich mechanizmu równoważenia obciążenia nginx i do tej pory działa świetnie. – aporat

+0

Ah, nie wiedziałem, że Scalr pozwoli na niestandardowe kompilacje. Moje spojrzenie na ich ofertę wyglądało tak, jakby miały wstępnie skonfigurowane instancje, których musieliście użyć, aby działać poprawnie. – iandouglas

Odpowiedz

10

Nie trzeba do nadmiernej że to rozwiązanie;)

może po prostu "pre-Configure" serwery w swojej HAProxy pliku konfiguracyjnego Ty. Pojawią się "w dół" i nigdy nie otrzymają próśb, dopóki nie wprowadzisz ich online.

Oto przykład, zakładając, że masz tylko 5 maszyn online, a spodziewać się 10 w ciągu najbliższych 2 lat:

listen web *:80 
    balance source 
    server web1 192.168.0.101:80 check inter 2000 fall 3 
    server web2 192.168.0.102:80 check inter 2000 fall 3 
    server web3 192.168.0.103:80 check inter 2000 fall 3 
    server web4 192.168.0.104:80 check inter 2000 fall 3 
    server web5 192.168.0.105:80 check inter 2000 fall 3 
    server web6 192.168.0.106:80 check inter 2000 fall 3 
    server web7 192.168.0.107:80 check inter 2000 fall 3 
    server web8 192.168.0.108:80 check inter 2000 fall 3 
    server web9 192.168.0.109:80 check inter 2000 fall 3 
    server web10 192.168.0.110:80 check inter 2000 fall 3 

Dzięki tej konfiguracji, nie będzie konieczne ponowne uruchomienie HAProxy czy jakiejkolwiek brzydkich hacków przez co najmniej rok (chyba że potrzebujesz więcej niż 10, po prostu dodaj 100, a zostaniesz ustawiony).

Możesz również napisać skrypt z szybką powłoką, aby automatycznie wygenerować tę konfigurację. W rzeczywistości, jeśli chcesz dodać 100 serwerów do swojej puli, napisz o tym skrypt, POWRÓT.

+1

Po prostu dostosuj się do sugestii powyżej, i coś, z czym walczę przez ostatnie kilka godzin ... Wymuszone wskazywanie bezpośrednio na wewnętrzny adres IP, ponieważ na Amazon nie masz statycznego wewnętrznego IP, nawet jeśli możesz użyć statycznego Zewnętrzne adresy IP, istnieje opłata za ich nieprzypisanie, a możesz mieć problemy z zaporami ogniowymi/wykryciem ruchu, moją sugestią jest użycie usługi DynDNS (np. Dyndns.org) lub dostawcy DNS, który zapewnia interfejs API (jak Zerigo) i skonfigurować niektóre hosty na komputerze. jeśli utworzysz, powiedzmy 10 hostów, i przypisz im wewnętrzny adres IP Amazona, powinien działać. – TiernanO

+1

odkąd zabrakło miejsca w powyższym komentarzu, zauważę: może trzeba wyczyścić DNS co jakiś czas, ponieważ jeśli skalować do, powiedzmy 6 wystąpień, a następnie z powrotem do zaledwie 4, pozostałe 2 nadal mają Adresy IP, które teraz mogą należeć do nowej instancji. może skrypt na uruchamianie i zamykanie, a następnie użyć danych instancji w Amazon, aby nazwać maszynę ... to sposób, w jaki mam rozwiązać mój problem. – TiernanO

+1

Aktualizacja: w mojej nowej pracy od ostatniego opublikowania tego pytania, mam do czynienia z tym samym problemem, ale w skali setek maszyn używających RackSpace, co będzie wymagało sposobu, aby te maszyny pingowały demona na maszynie haproxy, aby uzyskać dodano do konfiguracji. – iandouglas

Powiązane problemy