Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Edge Microgateway v. 3.1.x
Audiens
Topik ini ditujukan untuk operator Edge Microgateway yang ingin menggunakan plugin yang ada diinstal dengan microgateway. Artikel ini juga membahas tentang lonjakan penghentian dan kuota di (keduanya disertakan dengan instalasi). Jika Anda seorang developer yang ingin mengembangkan plugin, lihat Mengembangkan plugin kustom.
Apa itu plugin Edge Microgateway?
Plugin adalah modul Node.js yang menambahkan fungsionalitas ke Edge Microgateway. Modul plugin mengikuti pola yang konsisten dan disimpan di lokasi yang dikenal oleh Edge Microgateway, sehingga memungkinkan microgateway untuk menemukan dan memuatnya secara otomatis. Edge Microgateway menyertakan beberapa dan Anda juga dapat membuat plugin kustom, seperti yang dijelaskan dalam Mengembangkan plugin kustom.
Plugin yang ada yang dipaketkan dengan Edge Microgateway
Beberapa plugin yang ada disediakan dengan Edge Microgateway saat penginstalan. Ini termasuk:
{i>Plugin<i} | Diaktifkan secara default | Deskripsi |
---|---|---|
analytics | Ya | Mengirim data analisis dari Edge Microgateway ke Apigee Edge. |
oauth | Ya | Menambahkan token OAuth dan validasi Kunci API ke Edge Microgateway. Lihat Setelan dan mengonfigurasi Edge Microgateway. |
kuota | Tidak | Menerapkan kuota pada permintaan ke Edge Microgateway. Menggunakan Apigee Edge untuk menyimpan dan mengelola kuota. Lihat Menggunakan plugin kuota. |
sandang spikear | Tidak | Melindungi dari lonjakan lalu lintas dan serangan DoS. Lihat Menggunakan plugin penghentian lonjakan. |
header-huruf besar | Tidak | Proxy contoh yang diberi komentar yang dimaksudkan sebagai panduan untuk membantu developer menulis plugin kustom. Lihat Plugin contoh Edge Microgateway. |
accumulate-request | Tidak | Mengumpulkan data permintaan ke dalam satu objek sebelum meneruskan data ke objek berikutnya dalam rantai plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada objek konten permintaan tunggal yang terakumulasi. |
accumulate-response | Tidak | Mengumpulkan data respons ke dalam satu objek sebelum meneruskan data ke objek berikutnya dalam rantai plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada satu objek konten respons terakumulasi. |
transformasi huruf kapital | Tidak | Mentransformasi data permintaan atau respons. Plugin ini mewakili praktik terbaik implementasi plugin transformasi. Plugin contoh melakukan transformasi trivial (mengonversi data permintaan atau respons menjadi huruf besar); Namun, data ini dapat dengan mudah disesuaikan dengan melakukan jenis transformasi lain, seperti XML ke JSON. |
json2xm | Tidak | Mentransformasi data permintaan atau respons berdasarkan header jenis konten atau terima. Sebagai detail, lihat plugin dokumentasi di GitHub. |
kuota-memori | Tidak | Menerapkan kuota pada permintaan ke Edge Microgateway. Menyimpan dan mengelola kuota di penyimpanan lokal memori. |
pemeriksaan kesehatan | Tidak | Menampilkan informasi tentang proses Edge Microgateway -- penggunaan memori, penggunaan cpu, dll. Untuk menggunakan plugin, panggil URL /healthcheck di Edge Anda di instance Microgateway. Plugin ini dimaksudkan sebagai contoh yang dapat Anda gunakan untuk mengimplementasikan plugin health check Anda sendiri. |
Tempat menemukan plugin yang ada
Plugin yang sudah ada yang dipaketkan dengan Edge Microgateway berada di sini, tempat [prefix]
adalah direktori awalan npm
. Lihat
Lokasi Edge Microgateway terinstal jika Anda tidak dapat menemukan direktori ini.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
Menambahkan dan mengonfigurasi plugin
Ikuti pola ini untuk menambahkan dan mengonfigurasi plugin:
- Hentikan Edge Microgateway.
- Buka file konfigurasi Edge Microgateway. Untuk detailnya, lihat Membuat perubahan konfigurasi untuk opsi.
- Tambahkan plugin ke elemen
plugins:sequence
file konfigurasi, seperti berikut. Plugin dijalankan sesuai urutan kemunculannya dalam daftar ini.
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
- Konfigurasikan plugin. Beberapa plugin memiliki parameter opsional yang dapat Anda konfigurasi di
file konfigurasi. Misalnya, Anda dapat menambahkan stanza berikut untuk mengonfigurasi penghentian lonjakan
plugin. Lihat Menggunakan plugin penghentian lonjakan
untuk informasi selengkapnya.
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
- Simpan file.
- Mulai ulang atau muat ulang Edge Microgateway, bergantung pada file konfigurasi yang Anda edit.
Konfigurasi khusus plugin
Anda dapat mengganti parameter plugin yang ditentukan dalam file konfigurasi dengan membuat konfigurasi khusus plugin di direktori ini:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
dengan [prefix]
adalah direktori awalan npm
. Lihat
Lokasi Edge Microgateway terinstal jika Anda tidak dapat menemukan direktori ini.
plugins/<plugin_name>/config/default.yaml
. Misalnya, Anda bisa menempatkan
diblokir di plugins/spikearrest/config/default.yaml
, dan akan menggantikan
pengaturan konfigurasi.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Menggunakan plugin penghentian lonjakan
Plugin penangkapan lonjakan melindungi dari lonjakan traffic. Membatasi jumlah permintaan diproses oleh instance Edge Microgateway.
Menambahkan plugin penangkapan lonjakan
Lihat Menambahkan dan mengonfigurasi plugin.
Contoh konfigurasi untuk penangkapan lonjakan
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
Opsi konfigurasi untuk penangkapan lonjakan
- timeUnit: Seberapa sering jendela eksekusi penghentian lonjakan direset. Nilai valid adalah detik atau menit.
- allow: Jumlah permintaan maksimum yang diizinkan selama timeUnit. Lihat Jika Anda menjalankan beberapa Edge Micro proses ini.
- bufferSize: (opsional, default = 0) jika bufferSize > 0, penangkapan lonjakan menyimpan jumlah permintaan ini dalam {i>buffer.<i} Segera setelah "jendela" eksekusi berikutnya muncul, permintaan yang di-buffer akan diproses terlebih dahulu. Lihat juga Menambahkan {i>buffer<i}.
Bagaimana cara kerja penghentian lonjakan?
Bayangkan lonjakan traffic sebagai cara untuk melindungi secara umum dari lonjakan traffic, bukan sebagai membatasi traffic ke jumlah permintaan tertentu. API dan backend Anda dapat menangani jumlah lalu lintas, dan kebijakan penghentian lonjakan membantu Anda memperlancar lalu lintas ke jumlah umum yang diinginkan.
Perilaku penghentian lonjakan runtime berbeda dari yang mungkin Anda lihat nilai per-menit atau per-detik yang Anda masukkan.
Misalnya, Anda menetapkan tarif 30 permintaan per menit, seperti ini:
spikearrest: timeUnit: minute allow: 30
Dalam pengujian, Anda mungkin berpikir bisa mengirim 30 permintaan dalam 1 detik, selama permintaan itu dalam satu menit. Tapi itu bukanlah cara kebijakan menerapkan pengaturan itu. Jika Anda memikirkannya, 30 permintaan di dalam periode 1 detik dapat dianggap sebagai lonjakan mini di beberapa lingkungan.
Apa yang sebenarnya terjadi? Untuk mencegah perilaku seperti lonjakan, penghentian lonjakan akan traffic dengan membagi setelan Anda menjadi interval yang lebih kecil, sebagai berikut:
Tarif per menit
Tarif per menit akan dihaluskan menjadi permintaan dengan interval detik yang diizinkan. Misalnya, 30 tahun permintaan per menit akan dihaluskan seperti ini:
60 detik (1 menit) / 30 = interval 2 detik, atau sekitar 1 permintaan yang diizinkan setiap 2 detik. J permintaan kedua dalam waktu 2 detik akan gagal. Selain itu, permintaan ke-31 dalam satu menit akan gagal.
Tarif per detik
Laju per detik akan dihaluskan menjadi permintaan yang diizinkan dalam interval milidetik. Misalnya, 10 permintaan/detik akan dihaluskan seperti ini:
1.000 milidetik (1 detik) / 10 = interval 100 milidetik, atau sekitar 1 permintaan yang diizinkan setiap 100 md . Permintaan kedua dalam waktu 100 md akan gagal. Selain itu, permintaan ke-11 dalam satu detik akan gagal.
Saat batas terlampaui
Jika jumlah permintaan melebihi batas dalam interval waktu yang ditentukan, penghentian lonjakan mengembalikan pesan error ini dengan status HTTP 503:
{"error": "spike arrest policy violated"}
Menambahkan buffer
Anda memiliki opsi untuk menambahkan buffer ke kebijakan. Katakanlah Anda menetapkan {i>buffer<i} ke 10. Anda akan melihat bahwa API tidak langsung menampilkan error saat Anda melampaui hambatan lonjakan batas tersebut. Sebagai gantinya, permintaan di-buffer (hingga jumlah yang ditentukan), dan permintaan yang di-buffer diproses segera setelah jendela eksekusi berikutnya yang sesuai tersedia. Default bufferSize adalah 0.
Jika Anda menjalankan beberapa Edge Micro proses
Jumlah permintaan yang diizinkan bergantung pada jumlah proses pekerja Edge Micro yang
sedang berjalan. Lonjakan hambatan menghitung jumlah permintaan yang diizinkan per proses pekerja. Secara {i>default<i},
jumlah proses Edge Micro sama dengan jumlah CPU di mesin yang memiliki Edge Micro
terinstal. Namun, Anda dapat mengonfigurasi jumlah proses pekerja saat memulai Edge Micro
menggunakan opsi --processes
pada perintah start
. Misalnya, jika Anda
ingin memicu penghentian lonjakan pada 100 permintaan dalam jangka waktu tertentu, dan jika Anda memulai Edge
Microgateway dengan opsi --processes 4
, lalu setel allow: 25
di
konfigurasi penahanan lonjakan. Singkatnya, aturan praktisnya adalah menetapkan konfigurasi allow
parameter ke nilai "jumlah pemrosesan lonjakan yang diinginkan / jumlah proses".
Menggunakan plugin kuota
Kuota menentukan jumlah pesan permintaan yang boleh dikirimkan oleh aplikasi ke API selama satu jam, hari, minggu, atau bulan. Ketika aplikasi mencapai batas kuota, Panggilan API ditolak. Lihat juga Apa perbedaan antara penahanan dan kuota lonjakan?
Menambahkan plugin kuota
Lihat Menambahkan dan mengonfigurasi plugin.
Konfigurasi produk di Apigee Tepi
Anda mengonfigurasi kuota di UI Apigee Edge tempat Anda mengonfigurasi produk API. Anda perlu mengetahui produk mana berisi {i>microgateway-aware proxy<i} yang ingin Anda batasi dengan kuota. Ini harus ditambahkan ke aplikasi pengembang. Saat Anda melakukan panggilan API yang diautentikasi menggunakan di aplikasi developer, kuota akan diterapkan ke panggilan API tersebut.
- Login ke akun organisasi Apigee Edge Anda.
- Di UI Edge, buka produk yang terkait dengan microgateway-aware proxy yang
Anda ingin menerapkan kuota.
- Di UI, pilih Produk dari menu Publikasikan.
- Buka produk yang berisi API tempat Anda ingin menerapkan kuota.
- Klik Edit.
- Di kolom Quota, tentukan interval kuota. Misalnya, 100 permintaan setiap
satu menit. Atau 50.000 permintaan setiap 2 jam.
- Klik Simpan.
- Pastikan produk ditambahkan ke aplikasi developer. Anda akan membutuhkan kunci dari aplikasi ini untuk membuat panggilan API yang diautentikasi.
Contoh konfigurasi untuk kuota
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
Opsi konfigurasi untuk kuota
Untuk mengonfigurasi plugin kuota, tambahkan elemen quotas
ke file konfigurasi Anda,
seperti yang ditunjukkan dalam contoh berikut:
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 ...
Opsi | Deskripsi |
---|---|
buffersize |
(Bilangan bulat) Ukuran buffer yang akan ditetapkan untuk interval waktu yang ditentukan. Waktu yang diizinkan
unit mencakup: hour , minute , day ,
week , month , dan default . |
failOpen |
Saat fitur ini diaktifkan, jika terjadi error pemrosesan kuota
atau jika "kuota berlaku" permintaan ke Edge gagal memperbarui penghitung kuota jarak jauh, kuota
akan diproses berdasarkan jumlah lokal hanya hingga kuota jarak jauh berikutnya berhasil
sinkronisasi akan terjadi. Dalam kedua kasus ini, flag quota-failed-open disetel di
objek permintaan.
Untuk mengaktifkan kuota "gagal dibuka" , setel konfigurasi berikut: edgemicro: ... quotas: failOpen: true |
useDebugMpId |
Setel tanda ini ke true untuk mengaktifkan logging MP
ID (pemroses pesan)
dalam respons kuota.
Untuk menggunakan fitur ini, Anda harus menyetel konfigurasi berikut: edgemicro: ... quotas: useDebugMpId: true ...
Jika { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis |
Jika ditetapkan ke true , plugin akan menggunakan Redis untuk penyimpanan pendukung kuota.
Untuk mengetahui detailnya, lihat Menggunakan backing store Redis untuk mendapatkan kuota. |
Menggunakan penyimpanan pendukung Redis untuk mendapatkan kuota
Agar dapat menggunakan penyimpanan cadangan Redis untuk kuota, gunakan konfigurasi yang sama dengan yang digunakan untuk Fitur sinkronisasi. Berikut adalah konfigurasi dasar yang diperlukan untuk menggunakan Redis untuk kuota penyimpanan:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: true
edgemicro.redis*
, lihat Menggunakan sinkronisasi.
Menguji plugin kuota
Ketika kuota terlampaui, status HTTP 403 dikembalikan ke klien, bersama dengan pesan berikut:
{"error": "exceeded quota"}
Apa perbedaannya antara penahanan lonjakan dan kuota?
Penting untuk memilih alat yang tepat untuk pekerjaan yang sedang Anda lakukan. Kebijakan kuota dikonfigurasi jumlah pesan permintaan yang diizinkan untuk dikirimkan oleh aplikasi klien ke API selama kursus dalam satu jam, hari, minggu, atau bulan. Kebijakan kuota memberlakukan batas konsumsi pada aplikasi klien dengan dan mempertahankan penghitung terdistribusi yang menghitung permintaan masuk.
Gunakan kebijakan kuota untuk menerapkan kontrak bisnis atau SLA dengan developer dan partner, bukan dibandingkan untuk pengelolaan lalu lintas operasional. Misalnya, kuota dapat digunakan untuk membatasi lalu lintas untuk layanan gratis sekaligus memberikan akses penuh untuk pelanggan yang membayar.
Gunakan penghentian lonjakan untuk melindungi dari lonjakan traffic API yang tiba-tiba. Biasanya, lonjakan berhenti digunakan untuk mencegah kemungkinan terjadinya serangan DDoS atau serangan berbahaya lainnya.