Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Edge Microgateway wer. 3.0.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:
- Zatrzymaj Edge Microgateway.
- Otwórz plik konfiguracji Edge Microgateway. Szczegółowe informacje można znaleźć w sekcji Wprowadzanie zmian w konfiguracji opcji.
- 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
- 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
- Zapisz plik.
- 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.
- Zaloguj się na konto organizacji Apigee Edge.
- W interfejsie Edge otwórz usługę powiązaną z serwerem proxy rozpoznającym mikrobramę, do którego
aby zastosować limit.
- W interfejsie wybierz Produkty z 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ń na każdy
1 minutę. lub 50 000 żądań co 2 godziny.
- Kliknij Zapisz.
- 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 useRedis: true redisHost: localhost redisPort: 6379 redisDb: 1 ...
Opcja | Opis |
---|---|
buffersize |
(Liczba całkowita) Rozmiar bufora do ustawienia w określonym przedziale czasu. Dozwolona godzina
jednostki to: hour , minute , day ,
week , month i default . (Dodano: wersja 3.0.9) |
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. (Dodano: wersja 3.0.9)
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. (Dodano: wersja 3.0.9)
Aby korzystać z tej funkcji, musisz zaktualizować
Twój serwer proxy edgemicro: ... quotas: useDebugMpId: true ...
Jeśli skonfigurowano ustawienie { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis |
(Wartość logiczna) Ustaw jako true , aby korzystać z modułu bazy danych limitów Redis. Kiedy
limit jest ograniczony tylko do tych instancji Edge Microgateway, które
połączyć się z Redis. W przeciwnym razie licznik limitów jest globalny. Domyślny: false
(Używany jest moduł redis-volos-apigee ) (Dodano: wersja 3.0.10) |
redisHost |
Host, na którym działa Twoja instancja Redis. Domyślnie: 127.0.0.1 (Dodano: wersja 3.0.10) |
redisPort |
Port instancji Redis. Domyślnie: 6379 (dodana wersja: 3.0.10) |
redisDb |
Baza danych Redis, która ma zostać użyta. Domyślnie: 0 (dodano wersję 3.0.10) |
Informacje o zakresie limitu
Liczba limitów jest ograniczona do usługi API. Jeśli aplikacja dewelopera ma kilka produktów, limit jest ograniczony do każdego z nich z osobna. Aby osiągnąć ten zakres, Edge Microgateway tworzy identyfikator limitu, który jest kombinacją „appName + productName”.
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.