Korzystanie z wtyczek

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Edge Microgateway wer. 3.2.x

Odbiorcy

Ten temat jest przeznaczony dla operatorów Edge Microgateway, którzy chcą korzystać z istniejących wtyczek, które są instalowane za pomocą mikrobramki. Omawiamy również funkcje zatrzymania gwałtownych skoków i wtyczki do limitów szczegóły (oba są dołączone do instalacji). Jeśli jesteś deweloperem i chcesz tworzyć nowe można znaleźć w artykule Programowanie niestandardowe wtyczki.

Czym jest wtyczka Edge Microgateway?

Wtyczka to moduł Node.js, który zapewnia dodatkowe funkcje do Edge Microgateway. Moduły wtyczek są zgodne ze spójnym wzorcem i przechowywane w lokalizacji znanej Edge Microgateway, co umożliwia do ich automatycznego wykrywania i wczytywania. Edge Microgateway obejmuje kilka istniejących możesz też tworzyć wtyczki niestandardowe, jak opisano w artykule Tworzenie wtyczek niestandardowych.

Istniejące wtyczki połączone z Edge Mikrobrama

Kilka istniejących wtyczek dostarcza podczas instalacji Edge Microgateway. Te uwzględnij:

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. Patrz: Ustawienie i skonfigurować Edge Microgateway.
limit Nie Wymusza limit żądań wysyłanych do Edge Microgateway. Wykorzystuje Apigee Edge do przechowywania danych i zarządzania nimi limity. Zapoznaj się z sekcją Korzystanie z wtyczki limitów.
spikearrest, Nie Chroni przed nagłymi wzrostami natężenia ruchu i atakami typu DoS. Zapoznaj się z sekcją Korzystanie z wtyczki do zatrzymania szczytu.
nagłówek pisany wielkimi literami Nie Skomentowany, przykładowy serwer proxy ma pomóc programistom w pisaniu niestandardowych wtyczek. Zobacz Przykładowa wtyczka Edge Microgateway.
accumulate-request Nie Zbiera dane żądania w jeden obiekt przed przekazaniem ich do następnego obiektu w łańcuchu wtyczek. Przydatne przy tworzeniu wtyczek przekształcających, które muszą działać na pojedynczy, skumulowany obiekt treści żądania.
accumulate-response Nie Zbiera dane odpowiedzi do pojedynczego obiektu przed przekazaniem ich do następnego obiektu w łańcuchu wtyczek. Przydatne przy tworzeniu wtyczek przekształcających, które muszą działać na pojedynczy, skumulowany obiekt treści odpowiedzi.
transform-wielkie litery Nie Przekształca dane żądań lub odpowiedzi. Ta wtyczka reprezentuje sprawdzoną metodę i wdrożyć wtyczkę do przekształcania. Przykładowa wtyczka wykonuje trywialne przekształcenie (konwertuje dane żądań lub odpowiedzi na wielkie litery); ale można go łatwo dostosować do wykonywać inne rodzaje przekształceń, np. z XML-a na JSON.
json2xml Nie Przekształca dane żądań lub odpowiedzi na podstawie nagłówków Accept lub Content-type. Dla: Więcej informacji znajdziesz w tym artykule na temat wtyczki znajdziesz w GitHubie.
quota-memory Nie Wymusza limit żądań wysyłanych do Edge Microgateway. Przechowuje limity i zarządza nimi w regionie lokalnym pamięci.
kontrola stanu Nie Zwraca informacje o procesie Edge Microgateway – wykorzystanie pamięci, wykorzystania procesora itp. Aby użyć wtyczki, wywołaj URL /healthcheck na Edge Instancja Microgateway. Ta wtyczka to przykład, którego możesz użyć do wdrożyć własną wtyczkę do kontroli stanu.

Gdzie można znaleźć istniejące wtyczki

Tutaj znajdują się istniejące wtyczki połączone z Edge Microgateway, gdzie [prefix] to katalog prefiksów npm. Zobacz Gdzie jest zainstalowana Edge Microgateway, jeśli nie możesz znaleźć tego katalogu.

[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 można znaleźć w sekcji Wprowadzanie zmian w konfiguracji opcji.
  3. Dodaj wtyczkę do elementu plugins:sequence pliku konfiguracyjnego w następujący 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 . Możesz na przykład dodać następującą myśl, aby skonfigurować zatrzymanie gwałtownego skoku: wtyczki. Zapoznaj się z sekcją Korzystanie z wtyczki do zatrzymania szczytu. .
    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 załaduj ponownie Edge Microgateway, w zależności od tego, który plik konfiguracji został zmodyfikowany.

Konfiguracja wtyczki

Parametry wtyczki określone w pliku konfiguracyjnym możesz zastąpić, tworząc konfiguracji wtyczki w tym katalogu:

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

gdzie [prefix] to katalog prefiksów npm. Zobacz Gdzie jest zainstalowana Edge Microgateway, jeśli nie możesz znaleźć tego katalogu.

plugins/<plugin_name>/config/default.yaml Możesz na przykład umieścić to zostaną zablokowane w plugins/spikearrest/config/default.yaml i zastąpią wszystkie inne .

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Korzystanie z wtyczki do zatrzymania szczytu

Wtyczka do zatrzymania szczytu chroni przed nagłym wzrostem natężenia ruchu. Ogranicza liczbę żądań przetwarzane przez instancję Edge Microgateway.

Dodanie wtyczki do zatrzymania szczytu

Przeczytaj artykuł Dodawanie i konfigurowanie wtyczek.

Przykładowa konfiguracja dla gwałtowne aresztowanie

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 dla gwałtowne aresztowanie

  • timeUnit: jak często resetuje się okno wykonywania zatrzymania gwałtownego wzrostu. Prawidłowe wartości to sekundy lub minuty.
  • allow: maksymalna liczba żądań dozwolonych w danym czasie. Zobacz Jeśli korzystasz z wielu urządzeń Edge Micro .
  • bufferSize: (opcjonalnie, domyślnie = 0), jeśli rozmiar bufferSize > 0, aresztowanie gwałtowne przechowuje tę liczbę żądań w buforze. Gdy tylko następny „okno” wykonania zachodzi, najpierw zostaną przetworzone żądania zbuforowane. Zobacz też Dodawanie bufora.

Jak działa zatrzymywanie gwałtownego wzrostu?

Potraktuj zatrzymania gwałtownego ruchu jako metodę ochrony przed gwałtownym wzrostem natężenia ruchu, a nie pozwala ograniczyć ruch do określonej liczby żądań. Interfejsy API i backend mogą obsługiwać takich jak natężenie ruchu, a zasada aresztowania gwałtownego wzrostu pozwala zmniejszyć ruch w skali ogólnej w dowolnym momencie.

Sposób zatrzymywania gwałtownego wzrostu w czasie działania aplikacji różni się od tego, czego można się spodziewać na minutę lub na sekundę.

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

spikearrest:
   timeUnit: minute
   allow: 30

Podczas testów możesz pomyśleć, że uda Ci się wysłać 30 żądań w ciągu 1 sekundy, o ile tylko te dotarły w ciągu minuty. Jednak nie w ten sposób zasada wymusza to ustawienie. Jeśli się nad tym zastanowić, 30 żądań w ciągu 1 sekundy można w niektórych środowiskach uznać za niewielki wzrost.

Co właściwie się wtedy dzieje? Aby zapobiec gwałtownym zmianom, ruchu, dzieląc ustawienia na mniejsze przedziały czasu:

Stawki za minutę

Stawki za minutę są wygładzone w dozwolonych odstępach czasu (w sekundach). Na przykład: 30 liczba żądań na minutę jest wygładzana w następujący sposób:

60 sekund (1 minuta) / 30 = odstępy 2-sekundowe lub około 1 żądania co 2 sekundy. O 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 na sekundę są wygładzone w żądaniach dozwolonych w odstępach milisekundowych. Przykład: 10 żądań na sekundę jest wygładzane w ten sposób:

1000 milisekund (1 sekunda) / 10 = odstępy 100 milisekund lub dozwolone około 1 żądania co 100 milisekund . Drugie żądanie w ciągu 100 ms zakończy się niepowodzeniem. Ponadto 11. prośba w ciągu ani sekundy.

Po przekroczeniu limitu

Jeśli liczba żądań przekracza limit w określonym przedziale czasu, gwałtowny wzrost liczby zatrzymania 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 ustawiłeś bufor na 10. Przekonasz się, że interfejs API nie zwraca błędu od razu po przekroczeniu limitu nagłego zwiększenia ruchu. . Zamiast tego są buforowane (do określonej liczby), a żądania buforowane są przetworzone, gdy tylko będzie dostępne następne odpowiednie okno wykonania. Domyślny bufferSize to 0.

Jeśli korzystasz z wielu urządzeń Edge Micro procesy

Liczba dozwolonych żądań zależy od liczby procesów instancji roboczych Edge Micro, które są w domu. Nagłe aresztowanie oblicza dopuszczalną liczbę żądań na proces instancji roboczej. Domyślnie liczba procesów Edge Micro jest równa liczbie procesorów na komputerze, na którym znajduje się Edge Micro Zainstalowano. Możesz jednak skonfigurować liczbę procesów instancji roboczych po uruchomieniu Edge Micro za pomocą opcji --processes w poleceniu start. Jeśli na przykład chcesz, aby w wyniku nagłego zwiększenia liczby żądań w danym okresie uaktywniało się po 100 żądaniach, a jeśli uruchomisz Edge Mikrobrama z opcją --processes 4, a następnie ustaw allow: 25 w konfiguracji zatrzymania szczytu. Podsumowując, ogólną zasadą jest ustawienie konfiguracji allow na wartość „oczekiwany wzrost liczby zatrzymania / liczba procesów”.

Korzystanie z wtyczki do limitów

Limit określa liczbę komunikatów z żądaniami, które aplikacja może przesł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 gwałtowny wzrost aresztowań i limitu?

Dodawanie wtyczki do obsługi limitów

Przeczytaj artykuł Dodawanie i konfigurowanie wtyczek.

Konfiguracja usługi w Apigee Krawędź

Limity konfiguruje się w interfejsie użytkownika Apigee Edge, w którym konfigurujesz usługi API. Co musisz wiedzieć Która usługa zawiera serwer proxy rozpoznający mikrobramę, który chcesz ograniczyć do limitu. Ten należy dodać do aplikacji dewelopera. Gdy wykonujesz wywołania interfejsu API uwierzytelnione za pomocą w aplikacji dla programistów, limit będzie stosowany do tych wywołań interfejsu API.

  1. Zaloguj się na konto organizacji Apigee Edge.
  2. W interfejsie Edge otwórz usługę powiązaną z serwerem proxy rozpoznającym mikrobramę, do którego aby 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 interwał limitu. Na przykład 100 żądań na każdy 1 minutę. lub 50 000 żądań co 2 godziny.

  1. Kliknij Zapisz.
  2. Pamiętaj, aby dodać produkt do aplikacji dewelopera. Potrzebne są klucze z tej aplikacji, uwierzytelnionych wywołań interfejsu API.

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

Aby skonfigurować wtyczkę limitów, dodaj element quotas do pliku konfiguracji, jak w tym przykładzie:

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
quotas:
    bufferSize:
      hour: 20000
      minute: 500
      month: 1
      default: 10000
    useDebugMpId: true
    failOpen: true
...
Opcja Opis
bufferSize

(Liczba całkowita) Konfiguracja bufferSize pozwala dostosować częstotliwość Edge Microgateway. synchronizuje liczbę limitów z Apigee Edge. Aby zrozumieć bufferSize, zapoznaj się z tą przykładową konfiguracją:

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

Domyślnie mikrobrama synchronizuje licznik limitów z Apigee Edge co 5 sekund, jeśli interwał limitu jest ustawiony na „minute” (minuty). W powyższej konfiguracji wynika, że jeśli interwał limitu jest ustawiony w usłudze API na "minuta", Edge Microgateway zsynchronizuje się z Edge, aby uzyskać bieżącą liczbę limitów po każdym 500 żądań lub po 5 sekundach, w zależności od tego, co nastąpi wcześniej. Aby dowiedzieć się więcej, Więcej informacji znajdziesz w artykule na temat sposobu obliczania limitów.

Dozwolona godzina jednostki to: minute, hour, day, week, month i default.

failOpen Gdy ta funkcja jest włączona i wystąpi błąd przetwarzania limitu lub w przypadku, gdy obowiązuje „limit” żądań do Edge nie aktualizuje zdalnych liczników limitów, limit będzie przetwarzany na podstawie liczb lokalnych tylko do następnego pomyślnego limitu zdalnego synchronizacja. W obu tych przypadkach flaga quota-failed-open jest ustawiona w do obiektu żądania.

Włączanie limitu „nie uda się” ustaw tę konfigurację:

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId Ustaw tę flagę na true, aby włączyć logowanie MP Identyfikator (procesora wiadomości) w odpowiedziach dotyczących limitu.

Aby korzystać z tej funkcji, musisz ustawić następującą konfigurację:

edgemicro:
...
quotas:
  useDebugMpId: true
...

Jeśli skonfigurowano ustawienie useDebugMpId, odpowiedzi z przeglądarki Edge będą zawierać identyfikator MP i zostanie zarejestrowany przez Edge Microgateway. Na przykład:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis Jeśli jest ustawiona na true, wtyczka używa Redis na potrzeby magazynu kopii zapasowych limitów. Szczegółowe informacje znajdziesz w artykule o używaniu magazynu kopii zapasowych Redis na potrzeby limitu.

Wyjaśnienie sposobu liczenia limitów

Domyślnie mikrobrama synchronizuje licznik limitów z Apigee Edge co 5 sekund, jeśli interwał limitu jest ustawiony na „minute” (minuty). Jeśli interwał jest ustawiony na poziom wyższy niż „minuta”, na przykład „tydzień” lub „miesiąc”, domyślny okres odświeżania to 1 minuta.

Pamiętaj, że przedziały limitu zostały określone w usługach API zdefiniowanych w Apigee Edge. Przedziały limitu określają, ile żądań jest dozwolonych dla minuty, godziny, dnia, tygodnia lub miesiąca. Na przykład produkt A może mieć limit przydziału wynoszący 100 żądań na minutę i usługa B może mieć limit 10 000 żądań na godzinę.

Plik YAML wtyczki Edge Microgateway quota konfiguracja nie ustawia limitu interval; ale daje możliwość dostosowania częstotliwości, z jaką lokalna Edge Microgateway instancja synchronizuje swój limit z Apigee Edge.

Załóżmy na przykład, że w Apigee Edge są zdefiniowane 3 usługi API o poniższym określone interwały limitów:

  • Produkt A ma limit 100 żądań na minutę
  • Produkt B ma limit 5000 żądań na godzinę
  • Produkt C ma limit 1 000 000 żądań miesięcznie.

Mając na uwadze te ustawienia limitów, jak powinna wyglądać wtyczka Edge Microgateway quota, skonfigurować? Sprawdzoną metodą jest skonfigurowanie Edge Microgateway z odstępami synchronizacji, które są mniejsze niż przedziały czasu zdefiniowane w usługach API. Na przykład:

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

Ta konfiguracja definiuje następujące odstępy czasu synchronizacji dla opisanych usług API poprzednio:

  • Produkt A jest ustawiony na „minutę” interwału. Edge Microgateway zsynchronizuje się z Edge po co 50. lub 5 sekund, zależnie od tego, co nastąpi wcześniej.
  • Produkt B ma ustawiony czas wyświetlania interwału. Edge Microgateway zsynchronizuje się z Edge po co 2000 żądań lub co 1 minutę, w zależności od tego, co nastąpi wcześniej.
  • Produkt C został ustawiony na „miesiąc” interwału. Edge Microgateway zsynchronizuje się z Edge po na każde żądanie lub minutę, w zależności od tego, co nastąpi wcześniej.

Za każdym razem, gdy instancja mikrobramy synchronizuje się z Edge, licznik limitów jest ustawiony na wartość pobranych limitów.

Ustawienia funkcji bufferSize umożliwiają dostosowanie sposobu, w jaki licznik limitów jest zsynchronizowany z urządzeniem Edge. W przypadku dużego ruchu ustawienia bufferSize pozwolić na synchronizację licznika bufora przed aktywacją domyślnej synchronizacji opartej na czasie.

Informacje o zakresie limitu

Liczba limitów jest ograniczona do środowiska w organizacji. Aby osiągnąć ten zakres, Edge Microgateway tworzy identyfikator limitu składający się z kombinacji znaków „org + env + appName + productName”.

Używanie magazynu kopii zapasowych Redis na potrzeby limitu

Aby używać magazynu kopii zapasowych Redis na potrzeby limitu, użyj tej samej konfiguracji, która została użyta w przypadku Funkcja synchronizatora. Poniżej znajduje się podstawowa konfiguracja wymagana do korzystania z Redis dla limit miejsca na dane:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
Szczegółowe informacje o parametrach edgemicro.redis* znajdziesz w artykule Korzystanie z synchronizatora.

Testowanie wtyczki do zarządzania limitami

Po przekroczeniu limitu do klienta zwracany jest stan HTTP 403 wraz z następujący komunikat:

{"error": "exceeded quota"}

Na czym polega różnica między aresztowaniem gwałtownym a limitem?

Ważne jest, aby wybrać odpowiednie narzędzie do wykonywania danej pracy. Konfiguracja zasad dotyczących limitów liczba wiadomości z żądaniami, które aplikacja kliencka może przesłać do interfejsu API w trakcie szkolenia godziny, dnia, tygodnia lub miesiąca. Zasada limitów wymusza limity wykorzystania w aplikacjach klienckich przez utrzymywania rozproszonego licznika, który zlicza żądania przychodzące.

Użyj zasad dotyczących limitów, aby egzekwować umowy biznesowe lub gwarancje jakości usług z deweloperami i partnerami zamiast niż w przypadku zarządzania ruchem. Limit może służyć np. do ograniczania ruchu w przypadku To bezpłatna usługa, a jednocześnie pełny dostęp dla płacących klientów.

Korzystaj z nagłego wzrostu, aby uchronić się przed nagłymi wzrostami natężenia ruchu z interfejsu API. Zazwyczaj nagłe zatrzymanie używane do ochrony przed możliwymi atakami DDoS lub innymi złośliwymi atakami.