Korzystanie z wtyczek

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Edge Microgateway wersja 2.4.x

Odbiorcy

Ten temat jest przeznaczony dla operatorów Edge Microgateway, którzy chcą używać istniejących wtyczek zainstalowanych z mikrobramą. Omawiany jest w nim również szczegółowo sposób zwiększenia limitu i największego zatrzymania (oba wtyczki są dołączone do instalacji). Jeśli jesteś deweloperem i chcesz tworzyć nowe wtyczki, przeczytaj artykuł o tworzeniu 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 przez Edge Microgateway, co umożliwia mikrobramę ich automatyczne wykrywanie i ładowanie. Edge Microgateway zawiera kilka istniejących wtyczek. Możesz też tworzyć niestandardowe wtyczki, zgodnie z opisem w sekcji Tworzenie wtyczek niestandardowych.

Istniejące wtyczki dołączone do Edge Microgateway

Podczas instalacji do Edge Microgateway jest dostarczanych kilka istniejących wtyczek. Do metod tych należą:

Wtyczka Ta opcja jest domyślnie włączona. Opis
Analytics Tak Wysyła dane analityczne z Edge Microgateway do Apigee Edge.
oauth Tak Dodaje token OAuth i weryfikację klucza interfejsu API do Edge Microgateway. Zobacz Konfigurowanie i konfigurowanie Edge Microgateway.
limit Nie Wymusza limit w przypadku żądań wysyłanych do Edge Microgateway. Wykorzystuje Apigee Edge do przechowywania limitów i zarządzania nimi. Zapoznaj się z sekcją o korzystaniu z wtyczki do limitów.
spikearrest Nie Chroni przed nagłym wzrostem natężenia ruchu i atakami typu DoS. Więcej informacji znajdziesz w artykule Korzystanie z wtyczki do aresztowania przyrostowego.
nagłówek-wielkie litery Nie Komentowany przykładowy serwer proxy, który ma służyć jako wskazówka ułatwiająca programistom pisanie niestandardowych wtyczek. Zobacz przykładową wtyczkę Edge Microgateway.
Zbieranie-żądań Nie Przed przekazaniem danych do następnego modułu obsługi w łańcuchu wtyczek gromadzi dane żądania w jednym obiekcie. Ta opcja jest przydatna do pisania wtyczek przekształcania, które muszą działać na pojedynczym, skumulowanym obiekcie treści żądania.
kumuluj-odpowiedź Nie Przed przekazaniem danych do kolejnego modułu obsługi w łańcuchu wtyczek kumuluje on dane odpowiedzi w jednym obiekcie. Ta opcja jest przydatna do pisania wtyczek przekształcania, które muszą działać na pojedynczym obiekcie z treścią odpowiedzi.
przekształć duże litery Nie Przekształca dane żądań lub odpowiedzi. Ta wtyczka reprezentuje sprawdzoną metodę implementacji wtyczki przekształcania. Przykładowa wtyczka przeprowadza proste przekształcenie (konwertuje dane żądań lub odpowiedzi na wielkie litery). Można ją jednak łatwo dostosować do wykonywania innych rodzajów przekształceń, np. z XML na JSON.
json2xml Nie Przekształca dane żądań lub odpowiedzi na podstawie nagłówków akceptacji lub zawartości typu content-type. Szczegółowe informacje znajdziesz w dokumentacji wtyczki na GitHubie.
pamięć-limitu Nie Wymusza limit w przypadku żądań wysyłanych do Edge Microgateway. Zapisuje limity w pamięci lokalnej i zarządza nimi.
healthcheck Nie Zwraca informacje o procesie Edge Microgateway – wykorzystania pamięci, wykorzystania procesora itp. Aby użyć wtyczki, wywołaj adres URL /healthcheck w instancji Edge Microgateway. Ta wtyczka to przykład, którego możesz użyć do zaimplementowania własnej wtyczki do kontroli stanu.

Gdzie znaleźć istniejące wtyczki

Tutaj znajdziesz istniejące wtyczki dołączone do Edge Microgateway, gdzie [prefix] to katalog prefiksu npm. Zobacz, gdzie jest zainstalowana Edge Microgateway.

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

Dodawanie i konfigurowanie wtyczek

Aby dodać i skonfigurować wtyczki, postępuj zgodnie z tym wzorcem:

  1. Zatrzymaj Edge Microgateway.
  2. Otwórz plik konfiguracji Edge Microgateway. Szczegółowe informacje znajdziesz w sekcji Wprowadzanie zmian w konfiguracji.
  3. Dodaj wtyczkę do elementu plugins:sequence w pliku konfiguracyjnym w podany niżej sposób. Wtyczki są stosowane 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żna skonfigurować w pliku konfiguracyjnym. Możesz na przykład dodać ten fragment, aby skonfigurować wtyczkę do zatrzymywania nagłych zdarzeń. Więcej informacji znajdziesz w artykule o korzystaniu z wtyczki do tymczasowego przechowywania danych.
    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. Ponownie uruchom lub załaduj ponownie Edge Microgateway, w zależności od tego, który plik konfiguracji został zmieniony, zgodnie z opisem w sekcji Wprowadzanie zmian w konfiguracji.

Konfiguracja specyficzna dla wtyczki

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

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

gdzie [prefix] to katalog prefiksów npm. Zobacz, gdzie jest zainstalowana Edge Microgateway.

plugins/<plugin_name>/config/default.yaml. Możesz na przykład umieścić ten blok w elemencie plugins/spikearrest/config/default.yaml, który zastąpi wszystkie inne ustawienia konfiguracji.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Korzystanie z wtyczki do aresztowania skokowego

W tej sekcji omawiamy wtyczkę do tymczasowego przechowywania danych.

Informacje o aresztowaniu

Spike Arrest chroni przed gwałtownym wzrostem natężenia ruchu. Ogranicza liczbę żądań przetwarzanych przez instancję Edge Microgateway. Więcej informacji znajdziesz w artykule Jak działa natychmiastowe aresztowanie? Zobacz też: Jaka jest różnica między nagłym aresztowaniem a limitem?.

Dodawanie wtyczki do szybkiego zatrzymania

Podstawowe czynności, które należy wykonać w przypadku dowolnej wtyczki, znajdziesz w sekcji Dodawanie i konfigurowanie wtyczek.

Przykładowa konfiguracja zatrzymania szybkiego ruchu

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 zatrzymania szybkiego ruchu

  • timeUnit: jak często resetuje się okres wykonywania tymczasowego przechowywania danych. Prawidłowe wartości to sekunda lub minuta.
  • allow: maksymalna liczba żądań dozwolonych w danej jednostce czasu.
  • bufferSize: (opcjonalny, domyślnie = 0) jeśli rozmiar bufora > 0 powoduje, że nagłe aresztowanie przechowuje tę liczbę żądań w buforze. Po upływie następnego „okna” wykonania żądania zbuforowane zostaną najpierw przetworzone. Patrz też Dodawanie bufora.

Na czym polega aresztowanie osób postronnych?

Gwałtowne zatrzymanie ruchu to raczej sposób ochrony przed nagłymi wzrostami ruchu, a nie sposób ograniczenia ruchu do określonej liczby żądań. Twoje interfejsy API i backend mogą obsłużyć określoną ilość ruchu, a zasada zatrzymania nagłego zwiększenia ruchu pozwala płynniej osiągnąć pożądane ogólne wartości.

Sposób zatrzymania nagłego żądania w środowisku wykonawczym różni się od tego, czego możesz się spodziewać po wpisanych wartościach na minutę lub sekundę.

Załóżmy na przykład, że określasz szybkość wysyłania 30 żądań na minutę:

spikearrest:
   timeUnit: minute
   allow: 30

Podczas testów możesz wydawało się, że możesz wysłać 30 żądań w ciągu 1 sekundy, o ile przychodzą w ciągu minuty. Jednak zasada egzekwuje to ustawienie w inny sposób. Jeśli się nad tym zastanowisz, w niektórych środowiskach 30 żądań w ciągu 1 sekundy możesz uznać za minimalny wzrost.

Co wtedy właściwie się dzieje? Aby zapobiec zachowaniu podobnego do nagłych wzrostów, aresztowanie skokowe wygładza dozwolony ruch, dzieląc ustawienia na mniejsze przedziały czasowe w następujący sposób:

Stawki za minutę

Stawki za minutę są wygładzone do dozwolonych przedziałów czasu w sekundach. Na przykład 30 żądań na minutę jest wygładzone w taki sposób:

60 sekund (1 minuta) / 30 = interwały 2-sekundowe, czyli około 1 żądania co 2 sekundy. Drugie żądanie w ciągu 2 sekund zakończy się niepowodzeniem. Poza tym 31 żądanie w ciągu minuty zakończy się niepowodzeniem.

Stawki za sekundę

Stawki za sekundę są wygładzone w żądaniach dozwolonych w odstępach milisekundowych. Na przykład 10 żądań na sekundę jest wygładzone w taki sposób:

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

Po przekroczeniu limitu

Jeśli liczba żądań przekracza limit w określonym przedziale czasu, alert o nagłej liczbie żądań zwraca 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 ustawiasz bufor na 10. Interfejs API nie zwraca błędu od razu, gdy przekroczysz limit maksymalnej liczby zatrzymań. Są one zamiast tego buforowane (do podanej liczby), a te zbuforowane są przetwarzane, gdy tylko będzie dostępne następne odpowiednie okno wykonywania. Domyślna wartość bufferSize to 0.

Korzystanie z wtyczki limitu

W tej sekcji omawiamy wtyczkę limitów.

Informacje o wtyczce limitów

Limit określa liczbę wiadomości z żądaniami, które aplikacja może przesłać do interfejsu API w ciągu godziny, dnia, tygodnia lub miesiąca. Po osiągnięciu limitu przez aplikację kolejne wywołania interfejsu API są odrzucane. Zobacz też Jaka jest różnica między nagłym aresztowaniem a limitem?

Dodawanie wtyczki limitu

Podstawowe czynności, które należy wykonać w przypadku dowolnej wtyczki, znajdziesz w sekcji Dodawanie i konfigurowanie wtyczek.

Konfiguracja usługi w Apigee Edge

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

  1. Zaloguj się na konto organizacji Apigee Edge.
  2. W interfejsie użytkownika Edge otwórz usługę powiązaną z rozpoznawanym przez mikrobramą serwerem proxy, do którego chcesz zastosować limit.
    1. W interfejsie wybierz Produkty z menu Opublikuj.
    2. Otwórz usługę zawierającą interfejs API, do którego chcesz zastosować limit.
    3. Kliknij Edytuj.
    4. W polu Limit określ odstęp czasu między limitami. Na przykład 100 żądań co minutę. lub 50 tys. żądań co 2 godziny.

  1. Kliknij Zapisz.
  2. Upewnij się, że usługa została dodana do aplikacji dewelopera. Aby wykonywać uwierzytelnione wywołania interfejsu API, będą Ci potrzebne klucze z tej aplikacji.

Przykładowa konfiguracja limitu

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 limitu

Nie ma dodatkowych opcji konfiguracji wtyczki limitu.

Testowanie wtyczki limitu

Po przekroczeniu limitu do klienta zostanie zwrócony kod HTTP 403 z komunikatem:

{"error": "exceeded quota"}

Jaka jest różnica między nagłym aresztowaniem a limitem?

Ważne jest, by wybrać odpowiednie narzędzie do danego zadania. Zasady dotyczące limitów określają liczbę wiadomości z żądaniami, które aplikacja kliencka może przesłać do interfejsu API w ciągu godziny, dnia, tygodnia lub miesiąca. Zasada limitu wymusza limity wykorzystania w aplikacjach klienckich przez utrzymywanie rozproszonego licznika, który zlicza żądania przychodzące.

Korzystaj z zasad dotyczących limitów, aby egzekwować umowy biznesowe lub gwarancje jakości usług z deweloperami i partnerami, a nie do operacyjnego zarządzania ruchem. Limit może służyć na przykład do ograniczenia ruchu w bezpłatnej usłudze przy jednoczesnym zapewnieniu pełnego dostępu klientom płacącym. Zapoznaj się też z artykułem Korzystanie z wtyczki limitów.

Użyj tymczasowego aresztowania, aby chronić się przed nagłym wzrostem natężenia ruchu przez interfejs API. Gwałtowne aresztowanie zwykle ma na celu powstrzymanie ofiar DDoS i innych złośliwych ataków.