Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Edge Microgateway w wersji 3.1.5 i nowszych
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 ...
Opcja | Opis |
---|---|
bufferSize |
(Liczba całkowita) Konfiguracja 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: |
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 { "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
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.