Bagikan melalui


Strategi pengumpulan koneksi untuk Azure Database for PostgreSQL - Server Fleksibel menggunakan PgBouncer

BERLAKU UNTUK: Azure Database for PostgreSQL - Server Fleksibel

Panduan strategis untuk memilih mekanisme pengumpulan koneksi untuk server fleksibel Azure Database for PostgreSQL.

Pendahuluan

Saat menggunakan server fleksibel Azure Database for PostgreSQL, membuat koneksi ke database melibatkan pembuatan saluran komunikasi antara aplikasi klien dan server. Saluran ini bertanggung jawab untuk mengelola data, menjalankan kueri, dan memulai transaksi. Setelah koneksi dibuat, aplikasi klien dapat mengirim perintah ke server dan menerima respons. Namun, membuat koneksi baru untuk setiap operasi dapat menyebabkan masalah performa untuk aplikasi yang sangat penting. Setiap kali koneksi baru dibuat, server fleksibel Azure Database for PostgreSQL menghasilkan proses baru menggunakan proses postmaster, yang mengonsumsi lebih banyak sumber daya.

Untuk mengurangi masalah ini, pengumpulan koneksi digunakan untuk membuat cache koneksi yang dapat digunakan kembali di server fleksibel Azure Database for PostgreSQL. Saat aplikasi atau klien meminta koneksi, aplikasi atau klien dibuat dari kumpulan koneksi. Setelah sesi atau transaksi selesai, koneksi dikembalikan ke kumpulan untuk digunakan kembali. Dengan menggunakan kembali koneksi, penggunaan sumber daya berkurang, dan performa ditingkatkan.

Diagram untuk Pola Pengumpulan Koneksi.

Meskipun ada berbagai alat untuk pengumpulan koneksi, di bagian ini, kami membahas strategi yang berbeda untuk menggunakan pengumpulan koneksi menggunakan PgBouncer.

Apa itu PgBouncer?

PgBouncer adalah pengumpul koneksi efisien yang dirancang untuk PostgreSQL, menawarkan keuntungan mengurangi waktu pemrosesan dan mengoptimalkan penggunaan sumber daya dalam mengelola beberapa koneksi klien ke satu atau beberapa database. PgBouncer menggabungkan tiga mode pengumpulan yang berbeda untuk rotasi koneksi:

  • Pengumpulan sesi: Metode ini menetapkan koneksi server ke aplikasi klien selama seluruh durasi koneksi klien. Setelah pemutusan aplikasi klien, PgBouncer segera mengembalikan koneksi server kembali ke kumpulan. Mekanisme pengumpulan sesi adalah mode default di Open Source PgBouncer. Lihat konfigurasi PgBouncer
  • Pengumpulan transaksi: Dengan pengumpulan transaksi, koneksi server didedikasikan untuk aplikasi klien selama transaksi. Setelah transaksi berhasil diselesaikan, PgBouncer dengan cerdas merilis koneksi server, membuatnya tersedia lagi di dalam kumpulan. Pengumpulan transaksi adalah mode default dalam PgBouncer bawaan server fleksibel Azure Database for PostgreSQL, dan tidak mendukung transaksi yang disiapkan.
  • Pengumpulan pernyataan: Dalam pengumpulan pernyataan, koneksi server dialokasikan ke aplikasi klien untuk setiap pernyataan individu. Setelah pernyataan selesai, koneksi server segera dikembalikan ke kumpulan koneksi. Penting untuk dicatat bahwa transaksi multi-pernyataan tidak didukung dalam mode ini.

Pemanfaatan PgBouncer yang efektif dapat dikategorikan ke dalam tiga pola penggunaan yang berbeda.

  • Penyebaran PgBouncer dan Application Colocation
  • Penerapan PgBouncer terpusat independen aplikasi
  • Penyebaran PgBouncer dan Database Bawaan

Masing-masing pola ini memiliki kelebihan &kekurangannya sendiri.

1. PgBouncer dan penyebaran kolokasi aplikasi

Saat menggunakan pendekatan ini, PgBouncer disebarkan di server yang sama tempat aplikasi Anda dihosting. Aplikasi & PgBouncer dapat disebarkan baik pada komputer virtual tradisional atau dalam arsitektur berbasis layanan mikro seperti yang disorot:

I. PgBouncer disebarkan di VM Aplikasi

Jika aplikasi Anda berjalan pada Azure VM, Anda dapat menyiapkan PgBouncer pada VM yang sama. Untuk menginstal dan mengonfigurasi PgBouncer sebagai proksi pengumpulan koneksi dengan server fleksibel Azure Database for PostgreSQL, ikuti instruksi yang disediakan di tautan berikut.

Diagram untuk lokasi bersama Aplikasi di VM.

Menyebarkan PgBouncer di server aplikasi dapat memberikan beberapa keuntungan, terutama saat bekerja dengan database server fleksibel Azure Database for PostgreSQL. Beberapa manfaat utama & batasan metode penyebaran ini adalah:

Keuntungan:

  • Latensi Berkurang: Dengan menyebarkan PgBouncer pada VM Aplikasi yang sama, komunikasi antara aplikasi utama dan pengumpul koneksi efisien karena kedekatannya. Menyebarkan PgBouncer di VM Aplikasi meminimalkan latensi dan memastikan interaksi yang lancar dan cepat.
  • Keamanan yang ditingkatkan: PgBouncer dapat bertindak sebagai perantara yang aman antara aplikasi dan database, memberikan lapisan keamanan tambahan. Ini dapat memberlakukan autentikasi dan enkripsi, memastikan bahwa hanya klien yang berwenang yang dapat mengakses database.

Secara keseluruhan, menyebarkan PgBouncer di server aplikasi menyediakan pendekatan yang lebih efisien, aman, dan dapat diskalakan untuk mengelola koneksi ke database server fleksibel Azure Database for PostgreSQL, meningkatkan performa dan keandalan aplikasi.

Batasan:

  • Titik kegagalan tunggal: Jika PgBouncer disebarkan sebagai instans tunggal di server aplikasi, itu menjadi titik kegagalan tunggal potensial. Jika instans PgBouncer tidak berfungsi, instans tersebut dapat mengganggu seluruh kumpulan koneksi database, menyebabkan waktu henti untuk aplikasi. Untuk mengurangi Titik kegagalan tunggal, Anda dapat menyiapkan beberapa instans PgBouncer di belakang load balancer untuk ketersediaan tinggi.
  • Skalabilitas terbatas: Skalabilitas PgBouncer tergantung pada kapasitas server tempat server disebarkan. Jika server aplikasi mencapai batas koneksinya, PgBouncer mungkin menjadi hambatan, membatasi kemampuan untuk menskalakan aplikasi. Anda mungkin perlu mendistribusikan beban koneksi di beberapa instans PgBouncer atau mempertimbangkan solusi alternatif seperti pengumpulan koneksi di tingkat aplikasi.
  • Kompleksitas konfigurasi: Mengonfigurasi dan menyempurnakan PgBouncer bisa rumit, terutama ketika mempertimbangkan faktor-faktor seperti batas koneksi, ukuran kumpulan, dan penyeimbangan beban. Administrator perlu menyetel konfigurasi PgBouncer dengan hati-hati agar sesuai dengan persyaratan aplikasi dan memastikan performa dan stabilitas yang optimal.

Penting untuk menimbang batasan ini terhadap manfaat dan mengevaluasi apakah PgBouncer adalah pilihan yang tepat untuk pengaturan aplikasi dan database spesifik Anda.

II. PgBouncer disebarkan sebagai sidecar AKS

Dimungkinkan untuk menggunakan PgBouncer sebagai kontainer sidecar jika aplikasi Anda dikontainerisasi dan berjalan di Azure Kubernetes Service (AKS), Azure Container Instance (ACI), Azure Container Apps (ACA), atau Azure Red Hat OpenShift (ARO). Pola Sidecar menarik inspirasinya dari konsep sespan yang melekat pada sepeda motor, di mana kontainer tambahan, yang dikenal sebagai kontainer sidecar, melekat pada aplikasi induk. Pola ini memperkaya aplikasi induk dengan memperluas fungsionalitasnya dan memberikan dukungan tambahan.

Pola sespan biasanya digunakan dengan kontainer yang dijadwal bersama sebagai grup kontainer atom. menyebarkan PgBouncer di sidecar AKS dengan erat menggandelkan siklus hidup aplikasi dan sespan dan berbagi sumber daya seperti nama host dan jaringan untuk memanfaatkan sumber daya secara efisien. Sidecar PgBouncer beroperasi bersama kontainer aplikasi dalam pod yang sama di Azure Kubernetes Service (AKS) dengan pemetaan 1:1, berfungsi sebagai proksi pengumpulan koneksi untuk server fleksibel Azure Database for PostgreSQL.

Pola sespan ini biasanya digunakan dengan kontainer yang dijadwalkan sebagai grup kontainer atomik. pola sidecar sangat mengikat aplikasi dan siklus hidup sidecar dan memiliki sumber daya bersama seperti nama host dan jaringan. Dengan menggunakan penyiapan ini, PgBouncer mengoptimalkan manajemen koneksi dan memfasilitasi komunikasi yang efisien antara aplikasi dan instans server fleksibel Azure Database for PostgreSQL.

Microsoft telah menerbitkan gambar proksi sidecar PgBouncer di registri kontainer Microsoft.

Lihat ini untuk detail selengkapnya.

Diagram untuk lokasi bersama Aplikasi di Sidecar.

Beberapa manfaat utama & batasan metode penyebaran ini adalah:

Keuntungan:

  • Latensi Berkurang: Dengan menyebarkan PgBouncer sebagai sidecar AKS, komunikasi antara aplikasi utama dan pengumpul koneksi mulus dan efisien karena kedekatannya. Menyebarkan PgBouncer sidecar AKS meminimalkan latensi dan memastikan interaksi yang lancar dan cepat.
  • Manajemen dan Penyebaran yang Disederhanakan: Kopling ketat PgBouncer dengan kontainer aplikasi menyederhanakan proses manajemen dan penyebaran. Kedua komponen terintegrasi erat, memungkinkan administrasi yang lebih mudah dan koordinasi yang mulus.
  • Ketersediaan Tinggi dan Ketahanan Koneksi: Jika kontainer aplikasi gagal atau dihidupkan ulang, kontainer sidecar PgBouncer mengikuti dengan ceria, memastikan ketersediaan tinggi. Penyiapan ini menjamin ketahanan koneksi dan mempertahankan performa yang dapat diprediksi bahkan selama failover, berkontribusi pada sistem yang andal dan kuat.

Dengan mempertimbangkan PgBouncer sebagai sidecar AKS, Anda dapat menggunakan keuntungan ini untuk meningkatkan performa aplikasi Anda, menyederhanakan manajemen, dan memastikan ketersediaan berkelanjutan dari pengumpul koneksi.

Batasan:

  • Masalah Performa Koneksi: Aplikasi skala besar yang menggunakan ribuan pod, masing-masing menjalankan sidecar PgBouncer, mungkin mengalami potensi tantangan yang terkait dengan kelelahan koneksi database. Situasi ini dapat mengakibatkan penurunan performa dan gangguan layanan. Menyebarkan sidecar PgBouncer untuk setiap pod meningkatkan jumlah koneksi bersamaan ke server database, yang dapat melebihi kapasitasnya. Akibatnya, database mungkin berjuang untuk menangani volume tinggi koneksi masuk, dapat menyebabkan masalah performa seperti peningkatan waktu respons atau bahkan pemadaman layanan.
  • Penyebaran Kompleks: Pemanfaatan pola sidecar memperkenalkan tingkat kompleksitas pada proses penyebaran, karena melibatkan menjalankan dua kontainer dalam pod yang sama. Ini berpotensi mempersulit aktivitas pemecahan masalah dan penelusuran kesalahan, membutuhkan upaya ekstra untuk mengidentifikasi dan menyelesaikan masalah.
  • Tantangan Penskalaan: Penting untuk dicatat bahwa pola sespan mungkin bukan pilihan ideal untuk aplikasi yang menuntut skalabilitas tinggi. Dimasukkannya kontainer sidecar dapat memberlakukan lebih banyak persyaratan sumber daya, berpotensi membatasi jumlah pod yang dapat dibuat dan dikelola secara efektif.

Meskipun mempertimbangkan pola sespan ini, sangat penting untuk menilai dengan cermat trade-off antara kompleksitas penyebaran dan persyaratan skalabilitas untuk menentukan pendekatan yang paling tepat untuk skenario aplikasi spesifik Anda.

2. Aplikasi independen - Penyebaran PgBouncer Terpusat

Saat menggunakan pendekatan ini, PgBouncer disebarkan sebagai layanan terpusat, terlepas dari aplikasi. Layanan PgBouncer dapat disebarkan baik pada komputer virtual tradisional atau dalam arsitektur berbasis layanan mikro seperti yang disorot:

I. PgBouncer disebarkan di Ubuntu VM di belakang Azure Load Balancer

Proksi koneksi PgBouncer disiapkan antara lapisan aplikasi dan database di belakang Azure Load Balancer seperti yang ditunjukkan pada gambar. Dalam pola ini beberapa instans PgBouncer disebarkan di belakang load balancer sebagai layanan untuk mengurangi satu titik kegagalan. Pola ini juga cocok dalam skenario di mana aplikasi berjalan pada layanan terkelola seperti Azure App Services atau Azure Functions dan menyambungkan ke layanan PgBouncer untuk integrasi yang mudah dengan infrastruktur yang ada.

Lihat tautan untuk menginstal dan menyiapkan proksi pengumpulan koneksi PgBouncer dengan server fleksibel Azure Database for PostgreSQL.

Diagram untuk Lokasi bersama Aplikasi di Vm dengan Load Balancer.

Beberapa manfaat utama & batasan metode penyebaran ini adalah:

Keuntungan:

  • Menghapus Single Point of Failure: Konektivitas aplikasi mungkin tidak terpengaruh oleh kegagalan satu VM PgBouncer, karena ada beberapa instans PgBouncer di belakang Azure Load Balancer.
  • Integrasi Mulus dengan Layanan Terkelola: Jika aplikasi Anda dihosting di platform layanan terkelola seperti Azure App Services atau Azure Functions, menyebarkan PgBouncer pada VM memungkinkan integrasi yang mudah dengan infrastruktur yang ada.
  • Penyiapan yang Disederhanakan di Azure VM: Jika Anda sudah menjalankan aplikasi di Azure VM, menyiapkan PgBouncer pada VM yang sama sangat mudah. menyebarkan PgBouncer di VM memastikan bahwa PgBouncer disebarkan dalam jarak dekat dengan aplikasi Anda, meminimalkan latensi jaringan dan memaksimalkan performa.
  • Konfigurasi Non-Intrusive: Dengan menyebarkan PgBouncer pada VM, Anda dapat menghindari memodifikasi parameter server di server fleksibel Azure Database for PostgreSQL. Ini berguna ketika Anda ingin mengonfigurasi PgBouncer pada instans server fleksibel Azure Database for PostgreSQL. Misalnya, mengubah parameter SSLMODE menjadi "diperlukan" di server fleksibel Azure Database for PostgreSQL dapat menyebabkan aplikasi tertentu yang mengandalkan SSLMODE=FALSE gagal. Menyebarkan PgBouncer pada VM terpisah memungkinkan Anda mempertahankan konfigurasi server default sambil tetap menggunakan manfaat PgBouncer.

Dengan mempertimbangkan manfaat ini, menyebarkan PgBouncer pada VM menawarkan solusi yang nyaman dan efisien untuk meningkatkan performa dan kompatibilitas aplikasi Anda yang berjalan di infrastruktur Azure.

Batasan:

  • Overhead manajemen: Karena PgBouncer diinstal di VM, mungkin ada overhead manajemen untuk mengelola beberapa file konfigurasi. Ini menyulitkan untuk mengatasi peningkatan versi, rilis baru, dan pembaruan produk.
  • Paritas fitur: Jika Anda bermigrasi dari server fleksibel PostgreSQL tradisional ke Azure Database for PostgreSQL dan menggunakan PgBouncer, mungkin ada beberapa celah fitur. Misalnya, kurangnya dukungan md5 di server fleksibel Azure Database for PostgreSQL.

II. PgBouncer terpusat disebarkan sebagai layanan dalam AKS

Jika Anda bekerja dengan penyebaran kontainer yang sangat dapat diskalakan dan besar di Azure Kubernetes Service (AKS), yang terdiri dari ratusan pod, atau dalam situasi di mana beberapa aplikasi perlu terhubung ke database bersama, PgBouncer dapat digunakan sebagai layanan mandiri daripada kontainer sespan.

Dengan menggunakan PgBouncer sebagai layanan terpisah, Anda dapat mengelola dan menangani pengumpulan koneksi secara efisien untuk aplikasi Anda dalam skala yang lebih luas. Pendekatan ini memungkinkan untuk memusatkan fungsionalitas pengumpulan koneksi, memungkinkan beberapa aplikasi untuk terhubung ke sumber daya database yang sama sambil mempertahankan performa optimal dan pemanfaatan sumber daya.

Gambar proksi sidecar PgBouncer yang diterbitkan di registri kontainer Microsoft dapat digunakan untuk membuat dan menyebarkan layanan.

Diagram untuk PgBouncer sebagai layanan dalam AKS.

Beberapa manfaat utama & batasan metode penyebaran ini adalah:

Keuntungan:

  • Peningkatan Keandalan: Menyebarkan PgBouncer sebagai layanan mandiri memungkinkan konfigurasi dengan cara yang sangat tersedia. Ini meningkatkan keandalan keseluruhan infrastruktur pengumpulan koneksi, memastikan ketersediaan berkelanjutan bahkan dalam menghadapi kegagalan atau gangguan.
  • Pemanfaatan Sumber Daya optimal: Jika aplikasi atau server database Anda memiliki sumber daya terbatas, memilih komputer terpisah yang didedikasikan untuk menjalankan layanan PgBouncer dapat menguntungkan. Dengan menyebarkan PgBouncer pada komputer dengan sumber daya yang cukup, Anda dapat memastikan performa optimal dan mencegah masalah ketidakcocokan sumber daya.
  • Manajemen Koneksi Terpusat: Ketika manajemen koneksi database terpusat adalah persyaratan, layanan PgBouncer mandiri menyediakan pendekatan yang lebih efisien. Dengan mengonsolidasikan tugas manajemen koneksi ke dalam layanan terpusat, Anda dapat secara efektif memantau dan mengontrol koneksi database di beberapa aplikasi, menyederhanakan administrasi dan memastikan konsistensi.

Dengan mempertimbangkan PgBouncer sebagai layanan mandiri dalam AKS, Anda dapat menggunakan manfaat ini untuk mencapai peningkatan keandalan, efisiensi sumber daya, dan manajemen koneksi database terpusat.

Batasan:

  • Peningkatan Latensi N/W: Saat menyebarkan PgBouncer sebagai layanan mandiri, penting untuk mempertimbangkan potensi pengenalan latensi yang lebih banyak. Ini karena perlunya koneksi diteruskan antara aplikasi dan layanan PgBouncer melalui jaringan. Sangat penting untuk mengevaluasi persyaratan latensi aplikasi Anda dan mempertimbangkan trade-off antara manajemen koneksi terpusat dan potensi masalah latensi.

Meskipun PgBouncer berjalan sebagai layanan mandiri menawarkan manfaat seperti manajemen terpusat dan pengoptimalan sumber daya, penting untuk menilai dampak latensi potensial pada performa aplikasi Anda untuk memastikannya selaras dengan persyaratan spesifik Anda.

3. PgBouncer bawaan di server fleksibel Azure Database for PostgreSQL

Server fleksibel Azure Database for PostgreSQL menawarkan PgBouncer sebagai solusi pengumpulan koneksi bawaan. Ini ditawarkan sebagai layanan opsional yang dapat diaktifkan berdasarkan server per database. PgBouncer berjalan di komputer virtual yang sama dengan instans server fleksibel Azure Database for PostgreSQL. Ketika jumlah koneksi meningkat melebihi beberapa ratus atau ribu, server fleksibel Azure Database for PostgreSQL mungkin mengalami keterbatasan sumber daya. Dalam kasus seperti itu, PgBouncer bawaan dapat memberikan keuntungan signifikan dengan meningkatkan manajemen koneksi siaga dan berumur pendek di server database.

Lihat tautan untuk mengaktifkan dan menyiapkan kumpulan koneksi PgBouncer di server fleksibel Azure Database for PostgreSQL.

Beberapa manfaat utama & batasan metode penyebaran ini adalah:

Keuntungan:

  • Konfigurasi Mulus: Dengan PgBouncer bawaan di server fleksibel Azure Database for PostgreSQL, tidak perlu instalasi terpisah atau penyiapan kompleks. Ini dapat dengan mudah dikonfigurasi langsung dari parameter server, memastikan pengalaman bebas repot.
  • Kenyamanan Layanan Terkelola: Sebagai layanan terkelola, pengguna dapat menikmati keuntungan dari layanan terkelola Azure lainnya. Ini termasuk pembaruan otomatis, menghilangkan kebutuhan akan pemeliharaan manual dan memastikan bahwa PgBouncer tetap terkini dengan fitur terbaru dan patch keamanan.
  • Dukungan Koneksi Publik dan Privat: PgBouncer bawaan di server fleksibel Azure Database for PostgreSQL menyediakan dukungan untuk koneksi publik dan privat. Ini memungkinkan pengguna untuk membuat koneksi aman melalui jaringan privat atau terhubung secara eksternal, tergantung pada persyaratan spesifik mereka.
  • Ketersediaan Tinggi (HA): Jika terjadi failover, di mana server siaga dipromosikan ke peran utama, PgBouncer memulai ulang dengan mulus pada siaga yang baru dipromosikan tanpa perubahan apa pun yang diperlukan pada aplikasi string koneksi. Ini memastikan ketersediaan berkelanjutan dan meminimalkan gangguan pada aplikasi.
  • Hemat Biaya: Hemat biaya karena pengguna tidak perlu membayar komputasi tambahan seperti VM atau kontainer, meskipun memang memiliki beberapa dampak CPU karena proses lain berjalan pada komputer yang sama.

Dengan PgBouncer bawaan di server fleksibel Azure Database for PostgreSQL, pengguna dapat menikmati kenyamanan konfigurasi yang disederhanakan, keandalan layanan terkelola, dukungan untuk berbagai mode pengumpulan, dan ketersediaan tinggi yang mulus selama skenario failover.

Batasan:

  • Tidak didukung dengan Burstable: PgBouncer saat ini tidak didukung dengan tingkat komputasi server Burstable. Jika Anda mengubah tingkat komputasi dari Tujuan Umum atau Memori yang Dioptimalkan ke tingkat Burstable, Anda kehilangan kemampuan PgBouncer .
  • Membuat ulang koneksi setelah menghidupkan ulang: Setiap kali server dimulai ulang selama operasi skala, failover HA, atau mulai ulang, PgBouncer juga dimulai ulang bersama dengan komputer virtual server. Oleh karena itu, koneksi yang ada harus dibuat ulang.

Kami telah membahas berbagai cara untuk menerapkan PgBouncer dan tabel meringkas metode penyebaran mana yang akan dipilih:

Kriteria Pilihan PgBouncer di VM Aplikasi PgBouncer pada VM menggunakan ALB* PgBouncer di Sidecar AKS PgBouncer sebagai Layanan PgBouncer bawaan server fleksibel Azure Database for PostgreSQL
Manajemen yang Disederhanakan
HA
Aplikasi Kontainer
Mengurangi Overhead & Latensi Jaringan
Kontrol butir halus pada pemantauan dan penelusuran kesalahan

Legenda

Tingkat Kesulitan Simbol
Mudah
Medium
Sulit

*ALB: Azure Load Balancer.