Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Edge Microgateway w wersji 3.0.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 do ochrony przed nagłymi wzrostami ruchu i limitów (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. Należą do nich:
| 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. Przeczytaj artykuł Konfigurowanie Edge Microgateway. |
| Limit | Nie | Wymusza limit żądań do Edge Microgateway. Do przechowywania limitów i zarządzania nimi używa Apigee Edge the quotas. Przeczytaj artykuł Korzystanie z wtyczki limitów. |
| Ochrona przed nagłymi wzrostami ruchu | Nie | Chroni przed nagłymi wzrostami ruchu i atakami DoS. Przeczytaj artykuł Korzystanie z wtyczki ochrony przed nagłymi wzrostami ruchu. |
| Nagłówek – wielkie litery | Nie | Przykładowy serwer proxy z komentarzami, który ma pomóc deweloperom w pisaniu wtyczek niestandardowych. Przeczytaj artykuł Edge Microgateway sample plugin. |
| Gromadzenie żądań | Nie | Gromadzi dane żądań 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. |
| Gromadzenie odpowiedzi | 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. |
| Transformacja – wielkie litery | Nie | Przekształca dane żądania lub odpowiedzi. Ta wtyczka stanowi przykład najlepszej praktyki implementacji wtyczki transformującej. 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. 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 w GitHubie. |
| Limit – pamięć | Nie | Wymusza limit żądań do Edge Microgateway. Przechowuje limity i zarządza nimi w pamięci lokalnej. |
| Sprawdzanie stanu | 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, którego możesz użyć do zaimplementowania własnej wtyczki sprawdzającej 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, przeczytaj artykuł
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:
- Zatrzymaj Edge Microgateway.
- Otwórz plik konfiguracji Edge Microgateway. Szczegółowe informacje znajdziesz w artykule Wprowadzanie zmian w konfiguracji opcji.
- Dodaj wtyczkę do elementu
plugins:sequencew pliku konfiguracyjnym 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
- Skonfiguruj wtyczkę. Niektóre wtyczki mają opcjonalne parametry, które możesz skonfigurować w pliku konfiguracyjnym. Możesz na przykład dodać ten fragment kodu, aby skonfigurować wtyczkę ochrony przed nagłymi wzrostami ruchu. Więcej informacji znajdziesz w artykule Korzystanie z wtyczki ochrony przed nagłymi wzrostami 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
- Zapisz plik.
- Uruchom ponownie lub przeładuj Edge Microgateway w zależności od tego, który plik konfiguracyjny został edytowany.
Konfiguracja specyficzna dla wtyczki
Możesz zastąpić parametry wtyczki określone w pliku konfiguracyjnym, 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, przeczytaj artykuł
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 ochrony przed nagłymi wzrostami ruchu
Wtyczka ochrony przed nagłymi wzrostami ruchu chroni przed nagłymi wzrostami ruchu. Ogranicza liczbę żądań przetwarzanych przez instancję Edge Microgateway.
Dodawanie wtyczki ochrony przed nagłymi wzrostami ruchu
Przeczytaj artykuł Dodawanie i konfigurowanie wtyczek.
Przykładowa konfiguracja ochrony przed nagłymi wzrostami 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 ochrony przed nagłymi wzrostami ruchu
- timeUnit: jak często resetuje się okno wykonywania ochrony przed nagłymi wzrostami ruchu. Prawidłowe wartości to second lub minute.
- allow: maksymalna liczba żądań dozwolonych w czasie timeUnit. Przeczytaj też artykuł Jeśli używasz wielu procesów Edge Micro.
- bufferSize: (opcjonalnie, wartość domyślna to 0) jeśli bufferSize > 0, ochrona przed nagłymi wzrostami ruchu przechowuje tę liczbę żądań w buforze. Gdy tylko pojawi się następne „okno” wykonywania, żądania w buforze zostaną przetworzone jako pierwsze. Przeczytaj też artykuł Dodawanie bufora.
Jak działa ochrona przed nagłymi wzrostami ruchu?
Ochronę przed nagłymi wzrostami ruchu należy traktować jako sposób na ogólną ochronę przed nagłymi wzrostami 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 ochrony przed nagłymi wzrostami ruchu pomaga w wygładzaniu ruchu do ogólnych wartości które Cię interesują.
Działanie ochrony przed nagłymi wzrostami ruchu w czasie działania różni się od tego, czego można się spodziewać po dosłownych wartościach 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. Ale 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 nagłym wzrostom ruchu, ochrona przed nagłymi wzrostami ruchu wygładza dozwolony ruch, dzieląc ustawienia na mniejsze przedziały, w ten sposób:
Limity na minutę
Limity na minutę są wygładzane do przedziałów dozwolonych żądań w sekundach. Na przykład 30 żądań na minutę jest wygładzane 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ą wygładzane do przedziałów dozwolonych żądań w milisekundach. Na przykład, 10 żądań na sekundę jest wygładzane 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, ochrona przed nagłymi wzrostami ruchu 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 błędu od razu po przekroczeniu limitu ochrony przed nagłymi wzrostami ruchu. 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. Ochrona przed nagłymi wzrostami ruchu 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 jest zainstalowana 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 ochrona przed nagłymi wzrostami ruchu była wyzwalana przy 100 żądaniach w danym okresie, a Edge
Microgateway uruchamiasz z opcją --processes 4, ustaw allow: 25 w konfiguracji ochrony przed nagłymi wzrostami ruchu. Podsumowując, ogólna zasada jest taka, aby ustawić parametr konfiguracji allow
na wartość „pożądana liczba ochrony przed nagłymi wzrostami ruchu / liczba procesów”.
Korzystanie z wtyczki limitów
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 zostaną odrzucone. Przeczytaj też artykuł Jaka jest różnica między ochroną przed nagłymi wzrostami ruchu a limitami?.
Dodawanie wtyczki limitów
Przeczytaj artykuł 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, które są uwierzytelniane za pomocą kluczy w aplikacji dewelopera, limit zostanie zastosowany do tych wywołań.
- Zaloguj się na konto organizacji Apigee Edge.
- W interfejsie Edge otwórz usługę powiązaną z serwerem proxy obsługującym mikrobramę, do którego
chcesz zastosować limit.
- W interfejsie wybierz Usługi w menu Opublikuj.
- Otwórz usługę zawierającą interfejs API, do którego chcesz zastosować limit.
- Kliknij Edytuj.
- W polu Limit określ interwał limitu. Na przykład 100 żądań co
minutę. Lub 50 000 żądań co 2 godziny.

- Kliknij Zapisz.
- 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 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 konfiguracyjnego,
jak pokazano 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
useRedis: true
redisHost: localhost
redisPort: 6379
redisDb: 1
...| Opcja | Opis |
|---|---|
buffersize |
(Liczba całkowita) Rozmiar bufora do ustawienia dla określonego przedziału czasu. Dozwolone jednostki czasu to: hour, minute, day, week, month i default. (Dodano w wersji 3.0.9) |
failOpen |
Gdy ta funkcja jest włączona, jeśli wystąpi błąd przetwarzania limitu
lub jeśli żądanie "zastosuj limit" do Edge nie zaktualizuje zdalnych liczników limitów, limit
będzie przetwarzany tylko na podstawie lokalnych liczników do czasu następnej udanej synchronizacji limitu zdalnego. W obu tych przypadkach w obiekcie żądania ustawiana jest flaga quota-failed-open. (Dodano w wersji 3.0.9)
Aby włączyć funkcję „fail open” limitu, ustaw tę konfigurację: edgemicro: ... quotas: failOpen: true |
useDebugMpId |
Ustaw tę flagę na true, aby włączyć logowanie identyfikatora MP
(procesora wiadomości) ID
w odpowiedziach na limity. (Dodano w wersji 3.0.9)
Aby korzystać z tej funkcji, musisz zaktualizować
swój edgemicro: ... quotas: useDebugMpId: true ...
Gdy ustawiona jest opcja {
"allowed": 20,
"used": 3,
"exceeded": 0,
"available": 17,
"expiryTime": 1570748640000,
"timestamp": 1570748580323,
"debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
} |
useRedis |
(Wartość logiczna) Ustaw na true, aby używać modułu bazy danych limitów Redis. Gdy
ta opcja jest ustawiona, limit jest ograniczony tylko do tych instancji Edge Microgateway, które
łączą się z Redis. W przeciwnym razie licznik limitów jest globalny. Wartość domyślna: false
(używany jest moduł redis-volos-apigee) (Dodano w wersji 3.0.10) |
redisHost |
Host, na którym działa instancja Redis. Wartość domyślna: 127.0.0.1 (Dodano w wersji 3.0.10) |
redisPort |
Port instancji Redis. Wartość domyślna: 6379 (Dodano w wersji 3.0.10) |
redisDb |
Baza danych Redis do użycia. Wartość domyślna: 0 (Dodano w wersji 3.0.10) |
Omówienie zakresu limitu
Liczba limitów jest ograniczona do usługi API. Jeśli aplikacja dewelopera ma kilka usług, limit jest ograniczony do każdej z nich. Aby osiągnąć ten zakres, Edge Microgateway tworzy identyfikator limitu, który jest połączeniem "appName + productName".
Testowanie wtyczki limitów
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 ochroną przed nagłymi wzrostami ruchu a limitami?
Ważne jest, aby wybrać odpowiednie narzędzie do danego zadania. Zasady 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 limitów wymusza limity zużycia w aplikacjach klienckich, utrzymując rozproszony licznik, który zlicza przychodzące żądania.
Zasady 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, a jednocześnie do zapewniania pełnego dostępu płacącym klientom.
Używaj ochrony przed nagłymi wzrostami ruchu, aby chronić się przed nagłymi wzrostami ruchu w interfejsie API. Ochrona przed nagłymi wzrostami ruchu jest zwykle używana do zapobiegania możliwym atakom DDoS lub innym złośliwym atakom.