Chcę ustawić automatyczne skalowanie w AWS. Nie chcę używać modułu równoważenia obciążenia elastycznego.
Automatyczne skalowanie w Amazon tworzy instancje EC2 płynnie podczas skoków popytu, aby utrzymać wydajność, i automatycznie zmniejsza się w czasie przerw w popycie, aby zminimalizować koszty.
Ponieważ te instancje EC2 są tworzone automatycznie, ich nazwy hostów są nieznane NGINX.
Wiem i mam już konfigurację wstępną w nginx do 10 instancji EC2.
Chcę, aby móc dodać / update / delete automatycznie nazwy serwerów do moich wystąpień przed nginx konfiguracja, gdy autoskalowanie dodaje / aktualizacje / usuwa EC2.
nginx
amazon-ec2
amazon-web-services
autoscaling
Luis Lobo Borobia
źródło
źródło
Odpowiedzi:
Można to osiągnąć za pomocą Amazon SDK (już prawie z tym skończyłem, umieściłem go na github), korzystając z usług SNS, EC2 i Autoscaling.
Aby to osiągnąć, wykonałem następujące kroki:
Skrypt można znaleźć tutaj https://github.com/singhupendra/aws-autoscale
źródło
Dziękuję @talonx, przeprowadziłem badania, Amazon Autoscale ma interfejs API do sprawdzania aktualnego statusu grupy automatycznego skalowania i wylicza jej członków. Zwraca identyfikator instancji ( http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/api_requests.html#query-example ), a następnie można użyć narzędzi opisujących, aby uzyskać nazwę serwera ( http: // docs .aws.amazon.com / AWSEC2 / latest / CommandLineReference / ApiReference-cmd-DescribeInstances.html ) i na koniec odtwórz plik dołączany wcześniej. Mogłem wyczuć powiadomienia skalowania automatycznego, aby uruchomić proces, który wykonuje te zadania.
Nadal go nie wdrożyłem, ale jest to dobra droga.
Można także korzystać z Autocaling w SNS http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html
źródło
I nie wdrożyły jeszcze ten sam, ale szukam w użyciu On-the-fly rekonfiguracji z nginx Plus . Myślę, że albo AMI, albo zarządzanie konfiguracją (Puppet, Salt itp.), Które konfiguruje instancję Auto Scaling Group, może osiągnąć interfejs API rekonfiguracji NGiNX (być może poprzez wewnętrzną nazwę domeny Route53, więc żadne ustalone IP nie należy użyć) i dodać się do klastra nadrzędnego dla zwrotnego serwera proxy. Następnie wbudowana kontrola stanu NGiNX przejmie kontrolę nad [dodaną] instancją i upuści ją na wypadek, gdyby stała się niedostępna. Wydaje się to najczystszym rozwiązaniem i nie ma opóźnienia w dodawaniu instancji i prawie żadnego opóźnienia w jej upuszczeniu, ponieważ NGiNX Plus oferuje poza pasmową kontrolę stanu.
Podejście to pozwala uniknąć konieczności konfigurowania systemu automatycznego wykrywania (Consul, Serf itp.), Który w przypadku mniejszych konfiguracji często wydaje się być dużym obciążeniem zarówno pod względem konfiguracji / administracji, jak i wymaganych instancji EC2. Na przykład konsul wymaga co najmniej trzech instancji, aby był stabilny. Serf może być może uruchamiałby same instancje ASG, ale nadal jest narzut związany z ich utrzymaniem, a jeśli ASG zmniejszy się do jednego lub dwóch instancji, stracisz kworum.
Wreszcie można to połączyć z automatycznym powiadamianiem o zmianach w Grupie automatycznego skalowania, być może na serwerach serwerowych NGiNX, które są wykorzystywane do równoważenia obciążenia. Słuchacz wywołany przez takie powiadomienie (może to być również to, o czym wspomniała Upendra) może następnie natychmiast dodać nową instancję do NGiNX za pośrednictwem interfejsu API modyfikacji w locie. Oprócz kosztów NGiNX Plus, zastanawia nas to, dlaczego ktokolwiek miałby używać Elastic Load Balancer z jego licznymi problemami.
Edycja 07.12.2015: ngx_openresty jest Wyważarka po lua ( patrz wątek GitHub ) oferty A Innym możliwym rozwiązaniem open source gorąco dodawania / usuwania serwerami z Nginx wlotowej grupy. Sam jeszcze z tym nie eksperymentowałem, ale chciałem tutaj wspomnieć o każdym, kto natknie się na ten post.
źródło