Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Semua tingkatan API Management
Sebuah backend (atau backend API) di API Management adalah layanan HTTP yang mengimplementasikan API front-end dan operasinya.
Saat mengimpor API tertentu, API Management mengonfigurasi backend API secara otomatis. Misalnya, API Management mengonfigurasi layanan web backend saat mengimpor:
- Spesifikasi OpenAPI.
- API SOAP.
- Sumber daya Azure, seperti Azure OpenAI API, Aplikasi Fungsi Azure yang dipicu HTTP, atau Aplikasi Logika.
API Management juga mendukung penggunaan sumber daya Azure lainnya sebagai backend API, seperti:
- Kluster Microsoft Azure Service Fabric.
- Layanan khusus.
Manfaat dari backend
API Management mendukung entitas backend sehingga Anda dapat mengelola layanan backend API Anda. Entitas backend merangkum informasi tentang layanan backend, mempromosikan penggunaan kembali di seluruh API dan meningkatkan tata kelola.
Gunakan backend untuk satu atau beberapa hal berikut:
- Mengotorisasi kredensial permintaan ke layanan backend
- Manfaatkan fungsionalitas API Management untuk mempertahankan rahasia di Azure Key Vault jika nilai yang diberi nama dikonfigurasi untuk autentikasi parameter di header atau kueri.
- Tentukan aturan pemutus sirkuit untuk melindungi backend Anda dari terlalu banyak permintaan
- Mengalihkan atau menyeimbangkan beban permintaan ke beberapa layanan backend
Mengonfigurasi dan mengelola entitas backend di portal Azure, atau menggunakan API atau alat Azure.
Membuat backend
Anda dapat membuat backend di portal Microsoft Azure, atau menggunakan API atau alat Azure.
Untuk membuat backend di portal:
- Masuk ke portal dan buka instans API Management Anda.
- Di menu sebelah kiri, pilih API>Backends>+ Buat backend baru.
- Pada halaman Backend , lakukan hal berikut:
- Masukkan Nama untuk deskripsi backend dan opsional.
- Pilih jenis hosting Backend, misalnya, sumber daya Azure untuk sumber daya Azure seperti Aplikasi Fungsi atau Aplikasi Logika, URL Kustom untuk layanan kustom, atau kluster Service Fabric .
- Di URL Runtime, masukkan URL layanan backend tempat permintaan API diteruskan.
- Di bawah Tingkat Lanjut, secara opsional nonaktifkan rantai sertifikat atau validasi nama sertifikat untuk backend.
- Di bawah Tambahkan layanan backend ini ke kumpulan backend, secara opsional pilih atau buat kumpulan seimbang beban untuk backend.
- Di bawah Aturan pemutus arus, secara opsional konfigurasikan pemutus sirkuit untuk backend.
- Di bawah Kredensial otorisasi, konfigurasikan kredensial secara opsional untuk mengotorisasi akses ke backend. Opsi termasuk header permintaan, parameter kueri, sertifikat klien, atau identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna yang dikonfigurasi dalam instans API Management.
- Pilih Buat.
Setelah membuat backend, Anda dapat memperbarui pengaturan backend kapan saja. Misalnya, tambahkan aturan pemutus sirkuit, ubah URL runtime, atau tambahkan kredensial otorisasi.
Mengonfigurasi identitas terkelola untuk kredensial otorisasi
Anda dapat menggunakan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna yang dikonfigurasi dalam instans API Management untuk mengotorisasi akses ke layanan backend. Untuk mengonfigurasi identitas terkelola untuk kredensial otorisasi, lakukan hal berikut:
Di bagian Kredensial otorisasi dari konfigurasi backend, pilih tab Identitas terkelola , dan pilih Aktifkan.
Di Identitas klien, pilih Identitas yang ditetapkan sistem atau identitas yang ditetapkan pengguna yang dikonfigurasi dalam instans Anda.
Di ID Sumber Daya, masukkan layanan Azure target atau ID aplikasi aplikasi Microsoft Entra Anda sendiri yang mewakili backend. Contoh:
https://cognitiveservices.azure.com
untuk layanan Azure OpenAI.Untuk contoh selengkapnya, lihat referensi kebijakan identitas terkelola autentikasi .
Pilih Buat.
Catatan
Tetapkan juga identitas terkelola dengan memberikan izin yang sesuai atau peran RBAC untuk mengakses layanan backend. Misalnya, jika backend adalah layanan Azure OpenAI, Anda dapat menetapkan peran identitas terkelola Cognitive Services User
.
Mengacu pada backend menggunakan kebijakan set-backend-service
Setelah membuat backend, Anda dapat mereferensikan pengidentifikasi backend (nama) di API Anda.
set-backend-service
Gunakan kebijakan untuk mengarahkan permintaan API masuk ke backend. Jika Anda sudah mengonfigurasi layanan web backend untuk API, Anda dapat menggunakan set-backend-service
kebijakan untuk mengalihkan permintaan ke entitas backend sebagai gantinya. Contoh:
<policies>
<inbound>
<base />
<set-backend-service backend-id="myBackend" />
</inbound>
[...]
<policies/>
Catatan
Atau, Anda dapat menggunakan base-url
. Biasanya, formatnya adalah https://backend.com/api
. Hindari menambahkan garis miring (/) di akhir untuk mencegah kesalahan konfigurasi. Biasanya, nilai titik akhir HTTP(S) dan nilai di backend harus cocok untuk memungkinkan integrasi yang mulus antara frontend dan backend. Perhatikan bahwa instans API Management menambahkan nama layanan backend ke base-url
.
Anda dapat menggunakan logika kondisional dengan kebijakan set-backend-service
untuk mengubah backend yang efektif berdasarkan lokasi, gateway yang digunakan, atau ekspresi lainnya.
Misalnya, berikut adalah kebijakan untuk merutekan lalu lintas ke backend lain berdasarkan gateway yang dipanggil:
<policies>
<inbound>
<base />
<choose>
<when condition="@(context.Deployment.Gateway.Id == "factory-gateway")">
<set-backend-service backend-id="backend-on-prem" />
</when>
<when condition="@(context.Deployment.Gateway.IsManaged == false)">
<set-backend-service backend-id="self-hosted-backend" />
</when>
<otherwise />
</choose>
</inbound>
[...]
<policies/>
Pemutus sirkuit
API Management mengekspos properti pemutus sirkuit di sumber daya backend untuk melindungi layanan backend agar tidak kewalahan oleh terlalu banyak permintaan.
- Properti pemutus arus menentukan aturan untuk melakukan perjalanan pemutus sirkuit, seperti jumlah atau persentase kondisi kegagalan selama interval waktu yang ditentukan dan rentang kode status yang menunjukkan kegagalan.
- Ketika pemutus sirkuit memutus, API Management berhenti mengirim permintaan ke layanan backend untuk sementara waktu, dan mengembalikan respons 503 Layanan Tidak Tersedia kepada klien.
- Setelah durasi perjalanan yang dikonfigurasi, sirkuit mengatur ulang dan lalu lintas dilanjutkan ke backend.
Pemutus sirkuit backend adalah implementasi pola pemutus sirkuit untuk memungkinkan backend pulih dari situasi kelebihan beban. Ini menambah kebijakan pembatasan tarif umum dan pembatasan konkurensi yang dapat Anda terapkan untuk melindungi gateway API Management dan layanan backend Anda.
Catatan
- Saat ini, pemutus sirkuit backend tidak didukung di tingkat Konsumsi API Management.
- Karena sifat arsitektur API Management yang didistribusikan, aturan tripping pemutus arus adalah perkiraan. Instans gateway yang berbeda tidak disinkronkan dan akan menerapkan aturan pemutus arus berdasarkan informasi pada instans yang sama.
- Saat ini, hanya satu aturan yang dapat dikonfigurasi untuk pemutus sirkuit backend.
Contoh
Gunakan portal Microsoft Azure, API Management REST API, atau templat Bicep atau ARM untuk mengonfigurasi pemutus sirkuit di backend. Dalam contoh berikut, pemutus sirkuit di myBackend dalam perjalanan myAPIM instans API Management ketika ada tiga atau beberapa 5xx
kode status yang menunjukkan kesalahan server dalam 1 jam.
Pemutus sirkuit dalam contoh ini diatur ulang setelah 1 jam. Jika header Retry-After
ada dalam respons, pemutus rangkaian menerima nilai tersebut dan menunggu selama waktu yang telah ditentukan sebelum mengirim permintaan ke backend lagi.
- Di portal Microsoft Azure, buka instans API Management Anda.
- Di menu sebelah kiri, pilih API>Backends> backend Anda.
- Di halaman backend, pilih Pengaturan>Pengaturan Pemutus Sirkuit>Tambahkan baru.
- Di halaman Buat pemutus sirkuit baru , konfigurasikan aturan:
- Nama aturan: Masukkan nama untuk aturan, seperti myBackend.
- Jumlah kegagalan: Masukkan 3.
- Interval kegagalan: Biarkan nilai default 1 jam.
- Rentang kode status kegagalan: Pilih 500 - 599.
- Durasi perjalanan: Biarkan nilai default 1 jam.
- Periksa header 'Coba Lagi-Setelah' dalam respons HTTP: Pilih Benar (Terima).
Kumpulan server dengan penyeimbang beban
API Management mendukung kumpulan backend, saat Anda ingin menerapkan beberapa backend untuk API dan permintaan load-balance di seluruh backend tersebut. Grup adalah sekumpulan backend yang diperlakukan sebagai satu entitas untuk penyeimbangan beban.
Gunakan kumpulan backend untuk skenario seperti berikut ini:
- Sebarkan beban ke beberapa backend, yang mungkin memiliki pemutus sirkuit pada masing-masing backend.
- Pindahkan beban dari satu set backend ke yang lain untuk pemutakhiran (penyebaran biru-hijau).
Catatan
- Anda dapat menyertakan hingga 30 backend dalam kumpulan.
- Karena sifat terdistribusi dari arsitektur API Management, penyeimbangan beban pada backend dilakukan secara mendekati. Instans gateway yang berbeda tidak melakukan sinkronisasi dan akan menyeimbangkan beban berdasarkan informasi pada instans yang sama.
Opsi penyeimbangan muatan
API Management mendukung opsi penyeimbangan beban berikut untuk kumpulan backend:
Opsi penyeimbangan beban | Deskripsi |
---|---|
Round-robin | Permintaan didistribusikan secara merata di seluruh backend di kumpulan secara default. |
Tertimbang | Bobot ditetapkan ke backend di kumpulan, dan permintaan didistribusikan berdasarkan bobot relatif setiap backend. Berguna untuk skenario seperti penyebaran biru-hijau. |
Berbasis prioritas | Backend dikelompokkan ke dalam grup prioritas. Permintaan dikirim ke grup prioritas yang lebih tinggi terlebih dahulu; dalam grup, permintaan didistribusikan secara merata atau sesuai dengan bobot yang ditetapkan. |
Catatan
Backend dalam grup prioritas yang lebih rendah hanya akan digunakan ketika semua backend dalam grup prioritas yang lebih tinggi tidak tersedia karena aturan pemutus sirkuit tersandung.
Pemantauan sesi
Dengan salah satu opsi penyeimbangan beban sebelumnya, mengaktifkan secara opsional kesadaran sesi (afinitas sesi) untuk memastikan bahwa semua permintaan dari pengguna tertentu selama sesi diarahkan ke backend yang sama dalam pool. API Management menetapkan cookie ID sesi untuk mempertahankan status sesi. Opsi ini berguna, misalnya, dalam skenario dengan backend seperti asisten obrolan AI atau agen percakapan lainnya untuk merutekan permintaan dari sesi yang sama ke titik akhir yang sama.
Catatan
Kemampuan mengenali sesi dalam pool dengan pembagian beban akan dirilis pertama kali ke Kelompok Pembaruan AwalGateway AI.
Mengelola cookie untuk pemantauan sesi
Saat menggunakan kesadaran terhadap sesi, klien harus menangani cookie dengan tepat. Klien perlu menyimpan Set-Cookie
nilai header dan mengirimkannya dengan permintaan berikutnya untuk mempertahankan status sesi.
Anda dapat menggunakan kebijakan API Management untuk membantu mengatur cookie untuk kesadaran sesi. Misalnya, untuk kasus Assistants API (fitur Azure OpenAI di Azure AI Foundry Models), klien perlu menyimpan ID sesi, mengekstrak ID utas dari isi, dan menyimpan pasangan dan mengirim cookie yang tepat untuk setiap panggilan. Selain itu, klien perlu tahu kapan harus mengirim cookie atau kapan tidak mengirim header cookie. Persyaratan ini dapat ditangani dengan tepat dengan menentukan contoh kebijakan berikut:
<policies>
<inbound>
<base />
<set-backend-service backend-id="APIMBackend" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
<set-variable name="gwSetCookie" value="@{
var payload = context.Response.Body.As<JObject>();
var threadId = payload["id"];
var gwSetCookieHeaderValue = context.Request.Headers.GetValueOrDefault("SetCookie", string.Empty);
if(!string.IsNullOrEmpty(gwSetCookieHeaderValue))
{
gwSetCookieHeaderValue = gwSetCookieHeaderValue + $";Path=/threads/{threadId};";
}
return gwSetCookieHeaderValue;
}" />
<set-header name="Set-Cookie" exists-action="override">
<value>Cookie=gwSetCookieHeaderValue</value>
</set-header>
</outbound>
<on-error>
<base />
</on-error>
</policies>
Contoh
Gunakan portal, API Management REST API, atau templat Bicep atau ARM untuk mengonfigurasi kumpulan backend. Dalam contoh berikut, backend myBackendPool dalam instans API Management myAPIM dikonfigurasi dengan kumpulan backend. Contoh backend di kumpulan diberi nama backend-1 dan backend-2. Kedua backend berada dalam grup prioritas tertinggi; dalam grup, backend-1 memiliki bobot yang lebih besar daripada backend-2.
- Di portal Microsoft Azure, buka instans API Management Anda.
- Di menu sebelah kiri, pilih API>Backends> backend Anda.
- Di halaman Backend , pilih tab Load balancer .
- Pilih + Buat kumpulan baru.
- Di halaman Buat kumpulan seimbang beban baru , lakukan hal berikut:
- Nama: Masukkan nama untuk kumpulan seperti myBackendPool.
- Deskripsi: Secara opsional masukkan deskripsi.
- Menambahkan backend ke kumpulan: Pilih satu atau beberapa backend untuk ditambahkan ke kumpulan.
- Berat dan prioritas backend: Pilih Sesuaikan berat dan prioritas untuk mengonfigurasi berat dan prioritas setiap backend di kumpulan. Misalnya, jika Anda menambahkan dua backend bernama backend-1 dan backend-2, atur berat backend-1 ke 3 dan berat backend-2 ke 1, dan atur prioritas kedua backend menjadi 1.
- Pilih Buat.
Batasan
- Untuk tingkat Pengembang dan Premium, instans API Management yang diterapkan di jaringan virtual internal dapat menimbulkan kesalahan HTTP 500
BackendConnectionFailure
saat URL titik akhir gateway dan URL backend adalah sama. Jika Anda mengalami batasan ini, ikuti petunjuk di artikel Pembatasan permintaan API Management Rantai Sendiri dalam mode jaringan virtual internal di blog Komunitas Teknologi. - Saat ini, hanya satu aturan yang dapat dikonfigurasi untuk pemutus sirkuit backend.
Konten terkait
- Blog: Menggunakan pemutus sirkuit Azure API Management dan penyeimbangan beban dengan Azure OpenAI Service
- Siapkan backend Service Fabric menggunakan portal Microsoft Azure.
- Mulai Cepat Membuat Kumpulan Backend di Azure API Management menggunakan Bicep untuk permintaan OpenAI keseimbangan beban
- Lihat Azure API Management sebagai sumber Event Grid untuk informasi tentang peristiwa Event Grid yang dihasilkan oleh gateway ketika pemutus hubungan dipicu atau direset. Gunakan kejadian ini untuk mengambil tindakan sebelum masalah di backend berkembang.