<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Edge Microgateway Version 3.2.x
Zielgruppe
Dieses Thema richtet sich an Edge Microgateway-Operatoren, die vorhandene Plug-ins verwenden möchten, die mit dem Microgateway installiert. Außerdem werden Spike Arrest und Kontingent-Plug-ins (beides sind bei der Installation enthalten). Wenn Sie als Entwickler neue finden Sie unter Entwickeln von benutzerdefinierte Plug-ins.
Was ist ein Edge Microgateway-Plug-in?
Ein Plug-in ist ein Node.js-Modul, das Edge Microgateway um Funktionen ergänzt. Plug-in-Module einem einheitlichen Muster folgen und an einem Edge Microgateway bekannten Speicherort gespeichert werden. um sie automatisch zu erkennen und zu laden. Edge Microgateway enthält mehrere vorhandene und benutzerdefinierte Plug-ins erstellen. Weitere Informationen hierzu finden Sie unter Benutzerdefinierte Plug-ins entwickeln.
Vorhandene Plug-ins gebündelt mit Edge Mikrogateway
Edge Microgateway enthält bei der Installation mehrere vorhandene Plug-ins. Diese umfassen:
Plug-in | Standardmäßig aktiviert | Beschreibung |
---|---|---|
Analytics | Ja | Sendet Analysedaten von Edge Microgateway an Apigee Edge. |
oauth | Ja | Fügt eine OAuth-Token- und API-Schlüsselvalidierung zu Edge Microgateway hinzu. Weitere Informationen finden Sie unter Einstellungen Edge Microgateway konfigurieren |
Kontingent | Nein | Erzwingt ein Kontingent für Anfragen an Edge Microgateway. Verwendet Apigee Edge zum Speichern und Verwalten die Kontingente. Siehe Kontingent-Plug-in verwenden. |
Spitzarmlehne | Nein | Schützt vor Traffic-Spitzen und DoS-Angriffen. Siehe Spitzarrest-Plug-in verwenden. |
header-großbuchstaben | Nein | Ein kommentierter Beispiel-Proxy, der als Leitfaden für Entwickler beim Schreiben benutzerdefinierter Plug-ins dient. Weitere Informationen finden Sie unter . Edge Microgateway-Beispiel-Plug-in |
accumulate-request | Nein | Fasst Anfragedaten in einem einzelnen Objekt zusammen, bevor die Daten an das nächste Objekt übergeben werden Handler in der Plug-in-Kette ab. Nützlich zum Schreiben von Transformations-Plug-ins, die auf einem ein kumuliertes Anfrageinhaltsobjekt. |
accumulate-response | Nein | Akkumuliert Antwortdaten in einem einzelnen Objekt, bevor sie an das nächste Objekt übergeben werden. Handler in der Plug-in-Kette ab. Nützlich zum Schreiben von Transformations-Plug-ins, die auf einem ein kumuliertes Antwortinhaltsobjekt. |
großbuchstaben umwandeln | Nein | Transformiert Anfrage- oder Antwortdaten. Dieses Plug-in stellt eine Best Practice dar, Implementierung eines Transformations-Plug-ins. Das Beispiel-Plug-in führt eine einfache Transformation durch. (wandelt Anfrage- oder Antwortdaten in Großbuchstaben um); kann jedoch leicht an die andere Arten von Transformationen ausführen, z. B. XML zu JSON. |
json2xml | Nein | Transformiert Anfrage- oder Antwortdaten basierend auf Akzeptanz- oder Inhaltstyp-Headern. Für finden Sie im Plug-in Dokumentation in GitHub |
Kontingentspeicher | Nein | Erzwingt ein Kontingent für Anfragen an Edge Microgateway. Speichert und verwaltet Kontingente lokal zu speichern. |
Systemdiagnose | Nein | Gibt Informationen über den Edge Microgateway-Prozess zurück, Rufen Sie zur Verwendung des Plug-ins die URL /healthcheck auf Ihrem Edge-Edge auf. Microgateway-Instanz. Dieses Plug-in ist als Beispiel gedacht, ein eigenes Plug-in für die Systemdiagnose implementieren. |
Wo finde ich meine vorhandenen Plug-ins?
Vorhandene Plug-ins, die mit Edge Microgateway gebündelt sind, befinden sich hier, wo [prefix]
ist das Präfixverzeichnis npm
. Weitere Informationen finden Sie unter .
Wo ist Edge Microgateway installiert, wenn Sie dieses Verzeichnis nicht finden können.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
Plug-ins hinzufügen und konfigurieren
Folgen Sie diesem Muster, um Plug-ins hinzuzufügen und zu konfigurieren:
- Beenden Sie Edge Microgateway.
- Öffnen Sie eine Edge Microgateway-Konfigurationsdatei. Einzelheiten finden Sie unter . Konfigurationsänderungen für Optionen vornehmen
- Fügen Sie das Plug-in dem
plugins:sequence
-Element der Konfigurationsdatei hinzu: Plug-ins werden in der Reihenfolge ausgeführt, in der sie in dieser Liste aufgeführt sind.
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
- Plug-in konfigurieren Einige Plug-ins haben optionale Parameter, die Sie in der
Konfigurationsdatei. Sie können beispielsweise die folgende Stanza hinzufügen, um den Spike Arrest zu konfigurieren.
. Siehe Spitzarrest-Plug-in verwenden
.
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
- Speichern Sie die Datei.
- Starten Sie Edge Microgateway neu oder laden Sie es neu, je nachdem, welche Konfigurationsdatei Sie bearbeitet haben.
Plug-in-spezifische Konfiguration
Sie können die in der Konfigurationsdatei angegebenen Plug-in-Parameter überschreiben, indem Sie eine Plug-in-spezifische Konfiguration in diesem Verzeichnis:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
Dabei ist [prefix]
das Präfixverzeichnis npm
. Weitere Informationen finden Sie unter .
Wo ist Edge Microgateway installiert, wenn Sie dieses Verzeichnis nicht finden können.
plugins/<plugin_name>/config/default.yaml
Sie könnten beispielsweise
in plugins/spikearrest/config/default.yaml
blockieren, sodass sie alle anderen
Konfigurationseinstellungen.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Spitzarrest-Plug-in verwenden
Das Spike Arrest-Plug-in schützt vor Traffic-Spitzen. Die Anzahl der Anfragen wird gedrosselt. die von einer Edge Microgateway-Instanz verarbeitet werden.
Spike Arrest-Plug-in hinzufügen
Siehe Plug-ins hinzufügen und konfigurieren.
Beispielkonfiguration für Spike Arrest
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
Konfigurationsoptionen für Spike Arrest
- timeUnit: Wie oft das Ausführungsfenster für den Spike Arrest zurückgesetzt wird. Gültige Werte sind Sekunde oder Minute.
- allow: Die maximale Anzahl von Anfragen, die während der timeUnit erlaubt sind. Weitere Informationen finden Sie unter Wenn Sie mehrere Edge Micro- Prozesse.
- bufferSize: (optional, Standard = 0), wenn "bufferSize" > 0, Spike Arrest speichert diese Anzahl von Anfragen in einem Zwischenspeicher. Sobald das nächste „Fenster“ der Ausführung erfolgt die zwischen gepufferten Anfragen zuerst verarbeitet werden. Siehe auch Hinzufügen eines Zwischenspeicher verwenden.
Wie funktioniert der Spike Arrest?
Der Spike Arrest ist eher eine Möglichkeit, sich vor Traffic-Spitzen zu schützen, um den Traffic auf eine bestimmte Anzahl von Anfragen zu beschränken. Ihre APIs und Ihr Back-End können eine bestimmte Traffic-Menge und die Spike Arrest-Richtlinie hilft Ihnen, den Traffic auf die allgemeinen ganz nach Ihren Vorstellungen.
Das Laufzeitverhalten Spike Arrest unterscheidet sich von dem, was Sie vom Literal erwarten würden. oder sekundengenau eingeben.
Angenommen, Sie geben eine Rate von 30 Anfragen pro Minute an:
spikearrest: timeUnit: minute allow: 30
Beim Testen könnte man meinen, 30 Anfragen in einer Sekunde zu senden, innerhalb einer Minute. Allerdings wird die Einstellung nicht auf diese Weise durch die Richtlinie erzwungen. Wenn Sie darüber nachdenken, 30 Anfragen innerhalb eines 1-Sekunden-Zeitraums könnten in einigen Umgebungen als Mini-Anstieg betrachtet werden.
Was geschieht dann tatsächlich? Um ein akustisches Verhalten zu vermeiden, glättet der Spike Arrest die erlaubten indem Sie die Einstellungen wie folgt in kleinere Intervalle aufteilen:
Preise pro Minute
Die Raten pro Minute werden in zulässige Anfragenintervalle in Sekunden geglättet. Beispiel: 30 Anfragen pro Minute werden wie folgt geglättet:
60 Sekunden (1 Minute) ÷ 30 = 2-Sekunden-Intervalle, d. h. etwa eine Anfrage, die alle 2 Sekunden zulässig ist. A innerhalb von 2 Sekunden schlägt fehl. Auch die 31. Anfrage innerhalb einer Minute schlägt fehl.
Raten pro Sekunde
Die Raten pro Sekunde werden in zulässige Anfragen in Intervallen von Millisekunden geglättet. Beispiel: 10 Anfragen pro Sekunde werden wie folgt geglättet:
1.000 Millisekunden (1 Sekunde) / 10 = 100-Millisekunden-Intervalle oder etwa 1 Anfrage zulässig alle 100 Millisekunden . Eine zweite Anfrage innerhalb von 100ms schlägt fehl. Eine elfte Anfrage innerhalb in einer Sekunde scheitert.
Wenn das Limit überschritten wird
Wenn die Anzahl der Anfragen das Limit innerhalb des angegebenen Zeitintervalls überschreitet, wird Spike Arrest eingesetzt. gibt folgende Fehlermeldung mit HTTP 503-Status zurück:
{"error": "spike arrest policy violated"}
Zwischenspeicher hinzufügen
Sie haben die Möglichkeit, der Richtlinie einen Puffer hinzuzufügen. Angenommen, Sie setzen den Puffer auf 10. Sie werden feststellen, dass die API nicht sofort einen Fehler zurückgibt, wenn Sie den Spike Arrest überschreiten. Limit Stattdessen werden Anfragen bis zur angegebenen Anzahl zwischengespeichert und die zwischengespeicherten Anfragen verarbeitet werden, sobald das nächste entsprechende Ausführungsfenster verfügbar ist. Standardeinstellung bufferSize ist 0.
Wenn Sie mehrere Edge Micro-Geräte verwenden Prozesse
Die Anzahl der zulässigen Anfragen hängt von der Anzahl der Edge Micro-Worker-Prozesse ab, die
ausgeführt wird. Spike Arrest berechnet die zulässige Anzahl von Anfragen pro Worker-Prozess. Standardmäßig
Die Anzahl der Edge Micro-Prozesse entspricht der Anzahl der CPUs auf dem Computer, auf dem Edge Micro ist.
installiert haben. Sie können jedoch die Anzahl der Worker-Prozesse konfigurieren, wenn Sie Edge Micro starten
mit der Option --processes
im Befehl start
. Wenn Sie beispielsweise
Sie möchten, dass der Spike Arrest bei 100 Anfragen in einem bestimmten Zeitraum ausgelöst wird, und wenn Sie Edge starten.
Microgateway mit der Option --processes 4
. Legen Sie dann allow: 25
im
Spike Arrest-Konfiguration. Faustregel: Legen Sie die allow
-Konfiguration fest.
auf den Wert "gewünschte Spike Arrest-Anzahl / Anzahl der Prozesse".
Kontingent-Plug-in verwenden
Ein Kontingent gibt die Anzahl der Anfragenachrichten an, die eine App an eine API senden darf im Lauf einer Stunde, eines Tages, einer Woche oder eines Monats. Wenn eine Anwendung ihr Kontingentlimit erreicht, werden nachfolgende API-Aufrufe werden abgelehnt. Siehe auch Unterschied zwischen Spike Arrest und Kontingent?
Kontingent-Plug-in hinzufügen
Siehe Plug-ins hinzufügen und konfigurieren.
Produktkonfiguration in Apigee Rand
Sie konfigurieren Kontingente in der Apigee Edge-Benutzeroberfläche, wo Sie API-Produkte konfigurieren. Wichtige Informationen welches Produkt den Microgateway-fähigen Proxy enthält, den Sie mit einem Kontingent begrenzen möchten. Dieses muss das Produkt einer Entwickler-App hinzugefügt werden. Wenn Sie API-Aufrufe durchführen, die mithilfe von in der Entwickler-App enthält, wird das Kontingent auf diese API-Aufrufe angewendet.
- Melden Sie sich in Ihrem Apigee Edge-Organisationskonto an.
- Öffnen Sie in der Edge-Benutzeroberfläche das Produkt, das mit dem Microgateway-fähigen Proxy verknüpft ist, zu dem
Sie das Kontingent anwenden möchten.
- Wählen Sie in der Benutzeroberfläche im Menü „Veröffentlichen“ die Option Produkte aus.
- Öffnen Sie das Produkt mit der API, auf die Sie das Kontingent anwenden möchten.
- Klicken Sie auf Bearbeiten.
- Geben Sie im Feld Kontingent das Kontingentintervall an. Beispiel: 100 Anfragen pro
einer Minute. Oder 50.000 Anfragen alle 2 Stunden.
- Klicken Sie auf Speichern.
- Achten Sie darauf, dass das Produkt einer Entwickler-App hinzugefügt wurde. Du brauchst die Schlüssel aus dieser App, um authentifizierte API-Aufrufe.
Beispielkonfiguration für Kontingent
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
Konfigurationsoptionen für Kontingent
Fügen Sie Ihrer Konfigurationsdatei das Element quotas
hinzu, um das Kontingent-Plug-in zu konfigurieren.
Dies wird im folgenden Beispiel gezeigt:
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 ...
Option | Beschreibung |
---|---|
bufferSize |
(Ganzzahl) Mit der Konfiguration quotas: bufferSize: minute: 500 default: 10000 useDebugMpId: true failOpen: true Standardmäßig synchronisiert das Microgateway seinen Kontingentzähler alle 5 Sekunden mit Apigee Edge, wenn ist das Kontingentintervall auf „Minute“ festgelegt. Die obige Konfiguration besagt, dass, wenn das Kontingentintervall im API-Produkt auf "Minute", Edge Microgateway synchronisiert sich mit Edge, um die aktuelle Kontingentanzahl nach jedem 500 Anfragen oder nach 5 Sekunden, je nachdem, was zuerst eintritt. Weitere Informationen Siehe So werden Kontingente gezählt.
Zulässige Zeit
Beispiele für Einheiten: |
failOpen |
Wenn diese Funktion aktiviert ist und ein Fehler bei der Kontingentverarbeitung auftritt
oder wenn das „Kontingent angewendet“ wenn die Anfrage an Edge die Remote-Kontingentzähler nicht aktualisiert,
werden basierend auf der lokalen Anzahl nur bis zum nächsten erfolgreichen Remote-Kontingent verarbeitet.
findet eine Synchronisierung statt. In beiden Fällen wird das Flag quota-failed-open in
das Anfrageobjekt.
„Fail-Open“ für das Kontingent aktivieren die folgende Konfiguration: edgemicro: ... quotas: failOpen: true |
useDebugMpId |
Legen Sie dieses Flag auf true fest, um das Logging des MP zu aktivieren
(Nachrichtenprozessor) ID
in Kontingentantworten.
Um diese Funktion zu verwenden, müssen Sie die folgende Konfiguration festlegen: edgemicro: ... quotas: useDebugMpId: true ...
Wenn { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis |
Wenn true festgelegt ist, verwendet das Plug-in Redis für den Speicher für die Kontingentsicherung.
Weitere Informationen finden Sie unter Redis-Sicherungsspeicher für Kontingente verwenden. |
Informationen zur Zählung von Kontingenten
Standardmäßig synchronisiert das Microgateway seinen Kontingentzähler alle 5 Sekunden mit Apigee Edge, wenn ist das Kontingentintervall auf „Minute“ festgelegt. Wenn das Intervall auf einen Wert höher eingestellt ist als „Minute“, z. B. „Woche“ oder „Monat“ angezeigt wird, beträgt der standardmäßige Aktualisierungszeitraum 1 Minute.
Es ist wichtig zu beachten, dass Kontingentintervalle angegeben werden, in den API-Produkten, die in Apigee Edge definiert sind. Kontingentintervalle geben an, wie viele Anfragen zulässig sind für eine Minute, eine Stunde, einen Tag, eine Woche oder einen Monat. Produkt A kann beispielsweise ein Kontingentintervall von 100 Anfragen pro Minute und Produkt B kann ein Kontingentintervall von 10.000 Anfragen pro Stunde haben.
YAML des Edge Microgateway-quota
-Plug-ins
In der Konfiguration wird das Kontingent nicht festgelegt.
interval; Vielmehr bietet es eine Möglichkeit, die Häufigkeit anzupassen, mit der ein lokales Edge Microgateway
Instanz synchronisiert ihr Kontingent
mit Apigee Edge zählen.
Angenommen, in Apigee Edge sind drei API-Produkte mit den folgenden Parametern definiert: Angegebene Kontingentintervalle:
- Produkt A hat ein Kontingent von 100 Anfragen pro Minute.
- Produkt B hat ein Kontingent von 5.000 Anfragen pro Stunde.
- Produkt C hat ein Kontingent von 1.000.000 Anfragen pro Monat.
Wie sollte das Edge Microgateway quota
-Plug-in mit diesen Kontingenteinstellungen
konfiguriert werden? Am besten konfigurieren Sie Edge Microgateway
mit Synchronisierungsintervallen,
die unter den in den API-Produkten definierten Kontingentintervallen liegen. Beispiel:
quotas: bufferSize: hour: 2000 minute: 50 month: 1 default: 10000
Diese Konfiguration definiert die folgenden Synchronisierungsintervalle für die beschriebenen API-Produkte zuvor:
- Produkt A ist auf die „Minute“ festgelegt Intervall. Edge Microgateway wird mit Edge synchronisiert nach dem bei jeder 50. Anfrage oder nach 5 Sekunden, je nachdem, was zuerst eintritt.
- Produkt B ist auf „Stunde“ festgelegt Intervall. Edge Microgateway wird mit Edge synchronisiert nach dem jede 2.000. Anfrage oder nur eine Minute, je nachdem, was zuerst eintritt.
- Produkt C ist auf „Monat“ festgelegt Intervall. Edge Microgateway wird mit Edge synchronisiert nach dem oder nach einer Minute, je nachdem, was zuerst eintritt.
Jedes Mal, wenn eine Microgateway-Instanz mit Edge synchronisiert wird, Die Kontingentanzahl ist auf die abgerufene Kontingentanzahl festgelegt.
Mit den Einstellungen für bufferSize
können Sie festlegen, wie der Kontingentzähler
wird mit Edge synchronisiert. Bei hohem Traffic-Aufkommen werden die bufferSize
-Einstellungen
Zwischenspeicherzähler zulassen, bevor die standardmäßige zeitbasierte Synchronisierung ausgelöst wird.
Informationen zum Kontingentbereich
Die Kontingentanzahl gilt für eine Umgebung in einer Organisation. Um diesen Umfang zu erreichen, Edge Microgateway erstellt eine Kontingentkennung, die eine Kombination aus "Organisation + env + appName + productName“.
Redis-Sicherungsspeicher für Kontingente verwenden
Um einen Redis-Sicherungsspeicher für das Kontingent zu nutzen, verwenden Sie dieselbe Konfiguration wie für den Synchronizer-Funktion. Im Folgenden finden Sie die grundlegende Konfiguration, die zur Verwendung von Redis für Kontingentspeicher:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: true
edgemicro.redis*
-Parametern finden Sie unter Synchronisierer verwenden.
Kontingent-Plug-in testen
Wird das Kontingent überschritten, wird der HTTP-Statuscode 403 zusammen mit dem Fehlercode folgende Nachricht:
{"error": "exceeded quota"}
Was ist der Unterschied? zwischen dem Spike Arrest und der Quote?
Es ist wichtig, das richtige Tool für die jeweilige Aufgabe auszuwählen. Kontingentrichtlinien konfigurieren die Anzahl der Anfragenachrichten, die eine Client-App im Laufe des Kurses an eine API senden darf einer Stunde, eines Tages, einer Woche oder eines Monats. Die Kontingentrichtlinie erzwingt Nutzungslimits für Client-Apps durch einen verteilten Zähler pflegen, der eingehende Anfragen erfasst.
Nutzen Sie eine Kontingentrichtlinie, um Geschäftsverträge oder SLAs mit Entwicklern und Partnern durchzusetzen, als für das operative Traffic-Management. Mit einem Kontingent kann z. B. der Traffic für ein kostenloser Dienst, während zahlende Kunden vollen Zugriff haben.
Verwenden Sie Spike Arrest, um sich vor plötzlichen Spitzen im API-Traffic zu schützen. Meist ist es bei einem Spike Arrest um mögliche DDoS- oder andere schädliche Angriffe abzuwehren.