Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Edge Microgateway v. 2.5.x
Audiens
Topik ini ditujukan untuk operator Edge Microgateway yang ingin menggunakan plugin yang ada yang diinstal dengan microgateway. Topik ini juga membahas plugin spike arrest dan kuota secara mendetail (keduanya disertakan dengan penginstalan). Jika Anda adalah developer yang ingin mengembangkan plugin baru, lihat Mengembangkan plugin kustom.
Apa yang dimaksud dengan plugin Edge Microgateway?
Plugin adalah modul Node.js yang menambahkan fungsi ke Edge Microgateway. Modul plugin mengikuti pola yang konsisten dan disimpan di lokasi yang diketahui oleh Edge Microgateway, sehingga microgateway dapat menemukan dan memuatnya secara otomatis. Edge Microgateway menyertakan beberapa plugin yang ada dan Anda juga dapat membuat plugin kustom, seperti yang dijelaskan dalam Mengembangkan plugin kustom.
Plugin yang ada yang disertakan dengan Edge Microgateway
Beberapa plugin yang ada disediakan dengan Edge Microgateway saat penginstalan. Plugin ini mencakup:
| Plugin | Diaktifkan secara default | Deskripsi |
|---|---|---|
| analytics | Ya | Mengirim data analisis dari Edge Microgateway ke Apigee Edge. |
| oauth | Ya | Menambahkan validasi Kunci API dan token OAuth ke Edge Microgateway. Lihat Menyiapkan dan mengonfigurasi Edge Microgateway. |
| quota | Tidak | Menerapkan kuota pada permintaan ke Edge Microgateway. Menggunakan Apigee Edge untuk menyimpan dan mengelola kuota. Lihat Menggunakan plugin kuota. |
| spikearrest | Tidak | Melindungi dari lonjakan traffic dan serangan DoS. Lihat Menggunakan plugin spike arrest. |
| header-uppercase | Tidak | Proxy contoh yang dikomentari, 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 pengendali berikutnya dalam rantai plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada satu objek konten permintaan yang dikumpulkan. |
| accumulate-response | Tidak | Mengumpulkan data respons ke dalam satu objek sebelum meneruskan data ke pengendali berikutnya dalam rantai plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada satu objek konten respons yang dikumpulkan. |
| transform-uppercase | Tidak | Mengubah data permintaan atau respons. Plugin ini mewakili penerapan praktik terbaik implementasi dari plugin transformasi. Plugin contoh melakukan transformasi trivial (mengonversi data permintaan atau respons menjadi huruf besar); namun, plugin ini dapat dengan mudah diadaptasi untuk melakukan jenis transformasi lainnya, seperti XML ke JSON. |
| json2xml | Tidak | Mengubah data permintaan atau respons berdasarkan header accept atau content-type. Untuk mengetahui detailnya, lihat dokumentasi plugin di GitHub. |
| quota-memory | Tidak | Menerapkan kuota pada permintaan ke Edge Microgateway. Menyimpan dan mengelola kuota dalam memori lokal memory. |
| healthcheck | Tidak | Menampilkan informasi tentang proses Edge Microgateway -- penggunaan memori, penggunaan CPU, dll. Untuk menggunakan plugin, panggil URL /healthcheck di instance Edge Microgateway Anda. Plugin ini dimaksudkan sebagai contoh yang dapat Anda gunakan untuk menerapkan plugin pemeriksaan kesehatan Anda sendiri. |
Tempat menemukan plugin yang ada
Plugin yang ada yang disertakan dengan Edge Microgateway terletak di sini, dengan [prefix]
adalah direktori awalan npm. Lihat
Tempat Edge Microgateway diinstal 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 mengetahui detailnya, lihat Melakukan perubahan konfigurasi untuk opsi.
- Tambahkan plugin ke elemen
plugins:sequencefile konfigurasi, sebagai berikut. Plugin dieksekusi 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
- Konfigurasi plugin. Beberapa plugin memiliki parameter opsional yang dapat Anda konfigurasi dalam file konfigurasi. Misalnya, Anda dapat menambahkan stanza berikut untuk mengonfigurasi plugin spike arrest
plugin. Lihat Menggunakan plugin spike arrest
untuk mengetahui 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
Tempat Edge Microgateway diinstal jika Anda tidak dapat menemukan direktori ini.
plugins/<plugin_name>/config/default.yaml. Misalnya, Anda dapat menempatkan blok ini
di plugins/spikearrest/config/default.yaml, dan blok ini akan mengganti setelan konfigurasi lainnya.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Menggunakan plugin spike arrest
Plugin spike arrest melindungi dari lonjakan traffic. Plugin ini membatasi jumlah permintaan yang diproses oleh instance Edge Microgateway.
Menambahkan plugin spike arrest
Lihat Menambahkan dan mengonfigurasi plugin.
Contoh konfigurasi untuk 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
Opsi konfigurasi untuk spike arrest
- timeUnit: Seberapa sering jendela eksekusi spike arrest direset. Nilai yang valid adalah second atau minute.
- allow: Jumlah maksimum permintaan yang diizinkan selama timeUnit. Lihat juga Jika Anda menjalankan beberapa proses Edge Micro proses.
- bufferSize: (opsional, default = 0) jika bufferSize > 0, spike arrest akan menyimpan jumlah permintaan ini dalam buffer. Segera setelah "jendela" eksekusi berikutnya terjadi, permintaan yang di-buffer akan diproses terlebih dahulu. Lihat juga Menambahkan buffer.
Bagaimana cara kerja spike arrest?
Anggap spike arrest sebagai cara untuk melindungi secara umum dari lonjakan traffic, bukan sebagai a cara untuk membatasi traffic ke jumlah permintaan tertentu. API dan backend Anda dapat menangani jumlah traffic tertentu, dan kebijakan spike arrest membantu Anda memperlancar traffic ke jumlah umum yang Anda inginkan.
Perilaku spike arrest runtime berbeda dengan yang mungkin Anda harapkan dari nilai per menit atau per detik literal yang Anda masukkan.
Misalnya, Anda menentukan kecepatan 30 permintaan per menit, seperti ini:
spikearrest: timeUnit: minute allow: 30
Dalam pengujian, Anda mungkin berpikir dapat mengirim 30 permintaan dalam 1 detik, selama permintaan tersebut masuk dalam satu menit. Namun, kebijakan tersebut tidak menerapkan setelan tersebut. Jika Anda memikirkannya, 30 permintaan dalam periode 1 detik dapat dianggap sebagai lonjakan mini di beberapa lingkungan.
Lalu, apa yang sebenarnya terjadi? Untuk mencegah perilaku seperti lonjakan, spike arrest memperlancar traffic yang diizinkan dengan membagi setelan Anda ke dalam interval yang lebih kecil, sebagai berikut:
Kecepatan per menit
Kecepatan per menit diperlancar menjadi interval detik permintaan yang diizinkan. Misalnya, 30 permintaan per menit diperlancar seperti ini:
60 detik (1 menit) / 30 = interval 2 detik, atau sekitar 1 permintaan diizinkan setiap 2 detik. Permintaan kedua dalam 2 detik akan gagal. Selain itu, permintaan ke-31 dalam satu menit akan gagal.
Kecepatan per detik
Kecepatan per detik diperlancar menjadi permintaan yang diizinkan dalam interval milidetik. Misalnya, 10 permintaan/detik diperlancar seperti ini:
1.000 milidetik (1 detik) / 10 = interval 100 milidetik, atau sekitar 1 permintaan diizinkan setiap 100 milidetik. Permintaan kedua dalam 100 md akan gagal. Selain itu, permintaan ke-11 dalam satu detik akan gagal.
Jika batas terlampaui
Jika jumlah permintaan melebihi batas dalam interval waktu yang ditentukan, spike arrest akan menampilkan pesan error ini dengan status HTTP 503:
{"error": "spike arrest policy violated"}Menambahkan buffer
Anda memiliki opsi untuk menambahkan buffer ke kebijakan. Misalnya, Anda menetapkan buffer ke 10. Anda akan melihat bahwa API tidak langsung menampilkan error saat Anda melampaui batas spike arrest limit. Sebagai gantinya, permintaan akan di-buffer (hingga jumlah yang ditentukan), dan permintaan yang di-buffer akan diproses segera setelah jendela eksekusi yang sesuai berikutnya tersedia. bufferSize default adalah 0.
Jika Anda menjalankan beberapa proses Edge Micro
Jumlah permintaan yang diizinkan bergantung pada jumlah proses pekerja Edge Micro yang sedang
berjalan. Spike arrest menghitung jumlah permintaan yang diizinkan per proses pekerja. Secara default,
jumlah proses Edge Micro sama dengan jumlah CPU di mesin tempat Edge Micro diinstal. Namun, Anda dapat mengonfigurasi jumlah proses pekerja saat memulai Edge Micro
menggunakan opsi --processes pada perintah start. Misalnya, jika Anda
ingin spike arrest dipicu pada 100 permintaan dalam jangka waktu tertentu, dan jika Anda memulai Edge
Microgateway dengan opsi --processes 4, tetapkan allow: 25 dalam konfigurasi
spike arrest. Singkatnya, aturan umumnya adalah menetapkan parameter konfigurasi allow config
ke nilai "jumlah spike arrest yang diinginkan / jumlah proses".
Menggunakan plugin kuota
Kuota menentukan jumlah pesan permintaan yang diizinkan untuk dikirimkan aplikasi ke API selama satu jam, hari, minggu, atau bulan. Jika aplikasi mencapai batas kuotanya, panggilan API berikutnya akan ditolak. Lihat juga Apa perbedaan antara spike arrest dan kuota?.
Menambahkan plugin kuota
Lihat Menambahkan dan mengonfigurasi plugin.
Konfigurasi produk di Apigee Edge
Anda mengonfigurasi kuota di UI Apigee Edge tempat Anda mengonfigurasi produk API. Anda harus mengetahui produk mana yang berisi proxy yang mendukung microgateway yang ingin Anda batasi dengan kuota. Produk ini harus ditambahkan ke aplikasi developer. Saat Anda melakukan panggilan API yang diautentikasi menggunakan kunci 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 proxy yang mendukung microgateway yang ingin Anda terapkan kuotanya.
- Di UI, pilih Products dari menu Publish.
- Buka produk yang berisi API yang ingin Anda terapkan kuotanya.
- Klik Edit.
- Di kolom Quota, tentukan interval kuota. Misalnya, 100 permintaan setiap
satu menit. Atau 50.000 permintaan setiap 2 jam.

- Klik Save.
- Pastikan produk ditambahkan ke aplikasi developer. Anda akan memerlukan kunci dari aplikasi ini untuk melakukan 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
Tidak ada opsi konfigurasi tambahan untuk plugin kuota.
Menguji plugin kuota
Jika kuota terlampaui, status HTTP 403 akan ditampilkan ke klien, beserta pesan berikut:
{"error": "exceeded quota"}Apa perbedaan antara spike arrest dan kuota?
Penting untuk memilih alat yang tepat untuk tugas yang sedang dikerjakan. Kebijakan kuota mengonfigurasi jumlah pesan permintaan yang diizinkan untuk dikirimkan aplikasi klien ke API selama satu jam, hari, minggu, atau bulan. Kebijakan kuota menerapkan batas penggunaan pada aplikasi klien dengan mempertahankan penghitung terdistribusi yang menghitung permintaan masuk.
Gunakan kebijakan kuota untuk menerapkan kontrak bisnis atau SLA dengan developer dan partner, bukan untuk pengelolaan traffic operasional. Misalnya, kuota dapat digunakan untuk membatasi traffic untuk layanan gratis, sekaligus mengizinkan akses penuh untuk pelanggan berbayar.
Gunakan spike arrest untuk melindungi dari lonjakan traffic API yang tiba-tiba. Biasanya, spike arrest is digunakan untuk mencegah kemungkinan DDoS atau serangan berbahaya lainnya.