Korzystanie z wtyczek

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Edge Microgateway w wersji 2.5.x

Odbiorcy

Ten temat jest przeznaczony dla operatorów Edge Microgateway, którzy chcą korzystać z istniejących wtyczek, które są zainstalowane razem z mikrobramą. Omówiono w nim też szczegółowo wtyczki spike arrest i quota w szczegółach (obie są dostępne w ramach instalacji). Jeśli jesteś deweloperem, który chce tworzyć nowe wtyczki, przeczytaj artykuł Tworzenie wtyczek niestandardowych.

Co to jest wtyczka Edge Microgateway?

Wtyczka to moduł Node.js, który dodaje funkcje do Edge Microgateway. Moduły wtyczek mają spójny wzorzec i są przechowywane w lokalizacji znanej Edge Microgateway, co umożliwia mikrobramie automatyczne wykrywanie i wczytywanie tych modułów. Edge Microgateway zawiera kilka istniejących wtyczek. Możesz też tworzyć wtyczki niestandardowe, jak opisano w artykule Tworzenie wtyczek niestandardowych.

Istniejące wtyczki dołączone do Edge Microgateway

Podczas instalacji Edge Microgateway jest dostarczanych kilka istniejących wtyczek. Obejmują one:

Wtyczka Ta opcja jest domyślnie włączona. Opis
Analytics Tak Wysyła dane Analytics z Edge Microgateway do Apigee Edge.
OAuth Tak Dodaje do Edge Microgateway weryfikację tokena OAuth i klucza interfejsu API. Zobacz Konfigurowanie Edge Microgateway.
Quota Nie Wymusza limit żądań wysyłanych do Edge Microgateway. Do przechowywania limitów i zarządzania nimi używa Apigee Edge the quotas. Zobacz Korzystanie z wtyczki quota.
Spike Arrest Nie Chroni przed nagłymi wzrostami natężenia ruchu i atakami DoS. Zobacz Korzystanie z wtyczki spike arrest.
Header Uppercase Nie Przykładowy serwer proxy z komentarzami, który ma pomóc deweloperom w pisaniu wtyczek niestandardowych. Zobacz przykładową wtyczkę Edge Microgateway.
Accumulate Request Nie Gromadzi dane żądania w jednym obiekcie przed przekazaniem ich do następnego modułu obsługi w łańcuchu wtyczek. Przydatne do pisania wtyczek transformujących, które muszą działać na jednym, zgromadzonym obiekcie treści żądania.
Accumulate Response Nie Gromadzi dane odpowiedzi w jednym obiekcie przed przekazaniem ich do następnego modułu obsługi w łańcuchu wtyczek. Przydatne do pisania wtyczek transformujących, które muszą działać na jednym, zgromadzonym obiekcie treści odpowiedzi.
Transform Uppercase Nie Przekształca dane żądania lub odpowiedzi. Ta wtyczka stanowi przykład implementacji wtyczki transformującej zgodnie ze sprawdzonymi metodami. Przykładowa wtyczka wykonuje prostą transformację (konwertuje dane żądania lub odpowiedzi na wielkie litery), ale można ją łatwo dostosować do wykonywania innych rodzajów transformacji, np. z XML na JSON.
JSON2XML Nie Przekształca dane żądania lub odpowiedzi na podstawie nagłówków Accept lub Content-Type. Szczegółowe informacje znajdziesz w dokumentacji wtyczki na GitHubie.
Quota Memory Nie Wymusza limit żądań wysyłanych do Edge Microgateway. Przechowuje limity i zarządza nimi w pamięci lokalnej.
Healthcheck Nie Zwraca informacje o procesie Edge Microgateway – wykorzystanie pamięci, wykorzystanie procesora itp. Aby użyć wtyczki, wywołaj adres URL /healthcheck w instancji Edge Microgateway. Ta wtyczka ma być przykładem, na podstawie którego możesz zaimplementować własną wtyczkę sprawdzającą stan.

Gdzie znaleźć istniejące wtyczki

Istniejące wtyczki dołączone do Edge Microgateway znajdują się tutaj, gdzie [prefix] to katalog prefiksu npm. Jeśli nie możesz znaleźć tego katalogu, zobacz Gdzie jest zainstalowana Edge Microgateway.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

Dodawanie i konfigurowanie wtyczek

Aby dodać i skonfigurować wtyczki, wykonaj te czynności:

  1. Zatrzymaj Edge Microgateway.
  2. Otwórz plik konfiguracji Edge Microgateway. Więcej informacji znajdziesz w artykule Wprowadzanie zmian w konfiguracji opcji.
  3. Dodaj wtyczkę do elementu plugins:sequence w pliku konfiguracji w ten sposób. Wtyczki są wykonywane w kolejności, w jakiej występują na tej liście.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. Skonfiguruj wtyczkę. Niektóre wtyczki mają opcjonalne parametry, które możesz skonfigurować w pliku konfiguracji. Możesz na przykład dodać ten fragment, aby skonfigurować wtyczkę spike arrest plugin. Więcej informacji znajdziesz w artykule Korzystanie z wtyczki spike arrest.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. Zapisz plik.
  2. Uruchom ponownie lub przeładuj Edge Microgateway w zależności od tego, który plik konfiguracji został edytowany.

Konfiguracja specyficzna dla wtyczki

Możesz zastąpić parametry wtyczki określone w pliku konfiguracji, tworząc konfigurację specyficzną dla wtyczki w tym katalogu:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

gdzie [prefix] to katalog prefiksu npm. Jeśli nie możesz znaleźć tego katalogu, zobacz Gdzie jest zainstalowana Edge Microgateway.

plugins/<plugin_name>/config/default.yaml. Możesz na przykład umieścić ten blok w plugins/spikearrest/config/default.yaml. Zastąpi on wszystkie inne ustawienia konfiguracji.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Korzystanie z wtyczki spike arrest

Wtyczka spike arrest chroni przed nagłymi wzrostami natężenia ruchu. Ogranicza liczbę żądań przetwarzanych przez instancję Edge Microgateway.

Dodawanie wtyczki spike arrest

Zobacz Dodawanie i konfigurowanie wtyczek.

Przykładowa konfiguracja wtyczki spike arrest

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

Opcje konfiguracji wtyczki spike arrest

  • timeUnit: jak często resetuje się okno wykonywania wtyczki spike arrest. Prawidłowe wartości to second lub minute.
  • allow: maksymalna liczba żądań dozwolonych w jednostce czasu. Zobacz też Jeśli używasz wielu procesów Edge Micro procesów.
  • bufferSize: (opcjonalnie, domyślnie 0) jeśli bufferSize > 0, wtyczka spike arrest przechowuje tę liczbę żądań w buforze. Gdy tylko pojawi się następne „okno” wykonywania, żądania w buforze zostaną przetworzone w pierwszej kolejności. Zobacz też Dodawanie bufora.

Jak działa wtyczka spike arrest?

Wtyczka spike arrest służy do ogólnej ochrony przed nagłymi wzrostami natężenia ruchu, a nie jako sposób na ograniczenie ruchu do określonej liczby żądań. Twoje interfejsy API i backend mogą obsługiwać określoną ilość ruchu, a zasada spike arrest pomaga w jego wyrównaniu do ogólnych wartości które Cię interesują.

Działanie wtyczki spike arrest w czasie działania różni się od tego, czego można się spodziewać na podstawie dosłownych wartości na minutę lub na sekundę.

Załóżmy na przykład, że określisz limit 30 żądań na minutę w ten sposób:

spikearrest:
   timeUnit: minute
   allow: 30

Podczas testowania możesz sądzić, że możesz wysłać 30 żądań w ciągu 1 sekundy, o ile mieszczą się one w ciągu minuty. Jednak zasada nie wymusza tego ustawienia w ten sposób. Jeśli się nad tym zastanowisz, 30 żądań w ciągu 1 sekundy można w niektórych środowiskach uznać za mini-wzrost.

Co się wtedy dzieje? Aby zapobiec zachowaniu przypominającemu wzrost, wtyczka spike arrest wyrównuje dozwolony ruch, dzieląc ustawienia na mniejsze przedziały, w ten sposób:

Limity na minutę

Limity na minutę są wyrównywane do przedziałów dozwolonych żądań w sekundach. Na przykład 30 żądań na minutę jest wyrównywane w ten sposób:

60 sekund (1 minuta) / 30 = 2-sekundowe przedziały, czyli około 1 żądanie dozwolone co 2 sekundy. A Drugie żądanie w ciągu 2 sekund zakończy się niepowodzeniem. Nie powiedzie się też 31. żądanie w ciągu minuty.

Limity na sekundę

Limity na sekundę są wyrównywane do przedziałów dozwolonych żądań w milisekundach. Na przykład, 10 żądań na sekundę jest wyrównywane w ten sposób:

1000 milisekund (1 sekunda) / 10 = 100-milisekundowe przedziały, czyli około 1 żądanie dozwolone co 100 milisekund . Drugie żądanie w ciągu 100 ms zakończy się niepowodzeniem. Nie powiedzie się też 11. żądanie w ciągu sekundy.

Gdy limit zostanie przekroczony

Jeśli liczba żądań przekroczy limit w określonym przedziale czasu, wtyczka spike arrest zwróci ten komunikat o błędzie ze stanem HTTP 503:

{"error": "spike arrest policy violated"}

Dodawanie bufora

Możesz dodać do zasady bufor. Załóżmy, że ustawisz bufor na 10. Zobaczysz, że interfejs API nie zwraca od razu błędu, gdy przekroczysz limit wtyczki spike arrest limit. Zamiast tego żądania są buforowane (do określonej liczby), a żądania w buforze są przetwarzane, gdy tylko będzie dostępne następne odpowiednie okno wykonywania. Domyślna wartość bufferSize to 0.

Jeśli używasz wielu procesów Edge Micro

Liczba dozwolonych żądań zależy od liczby uruchomionych procesów roboczych Edge Micro, które są uruchomione. Wtyczka spike arrest oblicza dopuszczalną liczbę żądań na proces roboczy. Domyślnie, liczba procesów Edge Micro jest równa liczbie procesorów na maszynie, na której zainstalowano Edge Micro. Możesz jednak skonfigurować liczbę procesów roboczych podczas uruchamiania Edge Micro za pomocą opcji --processes w poleceniu start. Jeśli na przykład chcesz, aby wtyczka spike arrest była wyzwalana przy 100 żądaniach w danym okresie, a Edge Microgateway uruchamiasz z opcją --processes 4, ustaw allow: 25 w konfiguracji wtyczki spike arrest. Podsumowując, ogólna zasada jest taka, aby ustawić parametr konfiguracji allow na wartość „pożądana liczba wtyczki spike arrest / liczba procesów”.

Korzystanie z wtyczki quota

Limit określa liczbę wiadomości z żądaniami, które aplikacja może wysłać do interfejsu API w ciągu godziny, dnia, tygodnia lub miesiąca. Gdy aplikacja osiągnie limit, kolejne wywołania interfejsu API są odrzucane. Zobacz też Jaka jest różnica między wtyczkami spike arrest i quota?.

Dodawanie wtyczki quota

Zobacz Dodawanie i konfigurowanie wtyczek.

Konfiguracja usługi w Apigee Edge

Limity konfigurujesz w interfejsie Apigee Edge, w którym konfigurujesz usługi API. Musisz wiedzieć która usługa zawiera serwer proxy obsługujący mikrobramę, który chcesz ograniczyć limitem. Tę usługę należy dodać do aplikacji dewelopera. Gdy wykonujesz wywołania interfejsu API uwierzytelniane za pomocą kluczy w aplikacji dewelopera, limit zostanie zastosowany do tych wywołań.

  1. Zaloguj się na konto organizacji Apigee Edge.
  2. W interfejsie Edge otwórz usługę powiązaną z serwerem proxy obsługującym mikrobramę, do którego chcesz zastosować limit.
    1. W interfejsie wybierz Usługi w menu Publikuj.
    2. Otwórz usługę zawierającą interfejs API, do którego chcesz zastosować limit.
    3. Kliknij Edytuj.
    4. W polu Limit określ interwał limitu. Na przykład 100 żądań co minutę. Lub 50 000 żądań co 2 godziny.

  1. Kliknij Zapisz.
  2. Upewnij się, że usługa jest dodana do aplikacji dewelopera. Będziesz potrzebować kluczy z tej aplikacji, aby wykonywać uwierzytelnione wywołania interfejsu API.

Przykładowa konfiguracja wtyczki quota

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

Opcje konfiguracji wtyczki quota

Wtyczka quota nie ma dodatkowych opcji konfiguracji.

Testowanie wtyczki quota

Gdy limit zostanie przekroczony, do klienta zostanie zwrócony stan HTTP 403 wraz z tym komunikatem:

{"error": "exceeded quota"}

Jaka jest różnica między wtyczkami spike arrest i quota?

Ważne jest, aby wybrać odpowiednie narzędzie do danego zadania. Zasady dotyczące limitów konfigurują liczbę wiadomości z żądaniami, które aplikacja kliencka może wysłać do interfejsu API w ciągu godziny, dnia, tygodnia lub miesiąca. Zasada dotycząca limitów wymusza limity wykorzystania w aplikacjach klienckich, utrzymując rozproszony licznik, który zlicza przychodzące żądania.

Zasady dotyczące limitów używaj do egzekwowania umów handlowych lub umów SLA z deweloperami i partnerami, a nie do operacyjnego zarządzania ruchem. Limit może być na przykład używany do ograniczania ruchu w przypadku bezpłatnej usługi, przy jednoczesnym umożliwieniu pełnego dostępu płacącym klientom.

Używaj wtyczki spike arrest, aby chronić się przed nagłymi wzrostami natężenia ruchu w interfejsie API. Zwykle wtyczka spike arrest jest używana do zapobiegania możliwym atakom DDoS lub innym złośliwym atakom.