PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PgBouncer 1.7 – “Warna Bervariasi Setelah Kebangkitan”

PgBouncer adalah pooler koneksi ringan untuk PostgreSQL. PgBouncer 1.7 diumumkan pada tanggal 18 Desember 2015. Dalam entri blog ini, kita akan membicarakan peningkatan besar baru di PgBouncer.

Fitur Paling Berwarna

  • PgBouncer 1.7 mendukung koneksi TLS dan, saya pikir ini adalah peningkatan terbesar dari rilis baru. Mereka menggunakan pustaka OpenSSL/LibreSSL sebagai implementasi backend dari fitur tersebut.
  • PgBouncer sekarang mendukung autentikasi melalui sertifikat klien TLS .

Mari gali detail pengaturan TLS PgBouncer. Ada 14 parameter konfigurasi yang terkait dengan penyiapan TLS (setelan sisi klien + sisi server).

Untuk menetapkan mode TLS mana yang akan digunakan untuk koneksi dari klien, kita harus menyetel client_tls_sslmode parameter. Koneksi TLS dinonaktifkan secara default. Saat diaktifkan, client_tls_key_file dan client_tls_cert_file harus juga dikonfigurasi untuk menyiapkan kunci dan sertifikat yang digunakan PgBouncer untuk menerima koneksi klien.

Kami dapat menetapkan sertifikat root untuk memvalidasi sertifikat klien dengan menyetel client_tls_ca_file parameter, default tidak disetel.

Kami dapat menentukan versi protokol TLS mana yang diizinkan dengan menyetel client_tls_protocols parameter, default adalah semua.

Untuk setelan sisi klien yang lebih detail, Anda dapat memeriksa client_tls_ciphers , client_tls_ecdhcurve dan client_tls_dheparams parameter.

Sekarang, mari kita bicara tentang parameter konfigurasi sisi server TLS. Pertama, kita perlu mendeklarasikan mode TLS yang akan digunakan untuk koneksi ke server PostgreSQL dengan server_tls_sslmode parameter. Koneksi TLS dinonaktifkan secara default. Kami dapat menetapkan server CA dengan server_tls_ca_file parameter. Jika kita ingin menetapkan kunci pribadi untuk PgBouncer untuk mengautentikasi terhadap server PostgreSQL, kita dapat menggunakan server_tls_key_file parameter, kami bahkan dapat menetapkan sertifikat untuk kunci pribadi yang dapat divalidasi oleh server PostgreSQL dengan server_tls_cert_file parameter. Seperti yang kami lakukan di setelan koneksi TLS sisi klien, kami dapat mendeklarasikan versi protokol TLS mana yang diizinkan dengan server_tls_protocols parameter.

  • Setelah dukungan TLS, fitur baru yang signifikan lainnya adalah dukungan untuk otentikasi “peer” pada soket Unix.
  • Sebagai fitur utama terakhir dari versi ini, saya ingin menyebutkan dukungan untuk file kontrol Akses Berbasis Host, seperti pg_hba.conf di Postgres. Ini memungkinkan untuk mengonfigurasi TLS untuk koneksi jaringan dan otentikasi “peer” untuk koneksi lokal.

Kami dapat mengonfigurasi cara mengautentikasi pengguna dengan auth_type parameter PgBouncer. Semua parameter konfigurasi ditentukan dalam file konfigurasi pgbouncer.ini. Mari kita lihat detail auth_type parameter.

auth_type parameter dapat diberikan salah satu dari 6 nilai yang tercantum di bawah ini. Mari kita lihat penjelasan dan penggunaan nilai-nilai tersebut.

  • hba : Jika kita menetapkan parameter auth_type dengan nilai hba , kita harus mengatur auth_hba_file parameter juga untuk menampilkan pg_hba.conf . mana file yang akan digunakan sebagai konfigurasi. Dengan melakukan ini, kami mengizinkan jenis otentikasi yang sebenarnya dimuat dari auth_hba_file. Ini berarti kita dapat menggunakan metode otentikasi yang berbeda untuk jalur akses yang berbeda. Misalnya, dengan koneksi versi 1.7 melalui soket Unix menggunakan metode otentikasi rekan, pada saat yang sama koneksi melalui TCP harus menggunakan TLS. Sejauh ini, format file HBA tidak mendukung semua metode otentikasi pg_hba.conf. Metode yang didukung adalah:trust, reject, md5, password, peer dan cert.
  • sertifikat : Klien harus terhubung melalui TLS koneksi dengan sertifikat klien yang valid. Nama pengguna kemudian diambil dari CommonName bidang dari sertifikat.
  • md5 : Gunakan pemeriksaan kata sandi berbasis MD5. auth_file (nama file untuk memuat nama pengguna dan sandi dari ) dapat berisi kata sandi terenkripsi MD5 atau teks biasa. Ini adalah metode otentikasi default.
  • polos : Kata sandi teks-jelas dikirim melalui kabel. Tidak digunakan lagi.
  • kepercayaan : Tidak ada otentikasi yang dilakukan. Nama pengguna harus tetap ada di auth_file .
  • apa saja : Seperti metode trust, namun username yang diberikan diabaikan. Mengharuskan semua database dikonfigurasi untuk masuk sebagai pengguna tertentu. Selain itu, database konsol memungkinkan setiap pengguna untuk masuk sebagai admin.

Fitur Mengkilap Lainnya

Ada lebih banyak fitur yang dirilis dalam versi ini. Anda dapat mengunjungi halaman changelog PgBouncer atau memeriksa daftar di bawah untuk peningkatan lainnya:

  • Tetapkan query_wait_timeout ke 120-an secara default. Parameter ini menentukan waktu maksimum yang boleh dihabiskan kueri untuk menunggu eksekusi. Jika kueri tidak ditetapkan ke server selama waktu itu, klien terputus. Ini digunakan untuk mencegah server yang tidak responsif mengambil koneksi. Ini juga membantu ketika server sedang down atau database menolak koneksi untuk alasan apapun. Jika ini dinonaktifkan, klien akan antri tanpa batas. Default saat ini (0) menyebabkan antrian tak terbatas, yang tidak berguna. Dengan versi 1.7 jika klien memiliki permintaan tertunda dan belum ditetapkan ke koneksi server, koneksi klien akan terputus setelah 120 detik secara default.
  • Nonaktifkan server_reset_query_always secara default. Sekarang kueri reset hanya digunakan di kumpulan yang ada dalam mode sesi.
  • Meningkatkan pkt_buf menjadi 4096 byte. Meningkatkan kinerja dengan TLS . Perilaku ini mungkin khusus untuk beban, tetapi harus aman untuk dilakukan karena buffer paket v1.2 dipisahkan dari koneksi dan digunakan dengan malas dari kumpulan.
  • Dukungan jumlah pipelining diharapkan ReadyForQuery paket. Ini menghindari pelepasan server terlalu dini. Perbaikan #52.
  • Meningkatkan sbuf_looncnt logika – socket dijamin akan diproses ulang walaupun tidak ada event dari socket. Diperlukan untuk TLS karena memiliki bufferingnya sendiri.
  • Sesuaikan pengujian sistem untuk bekerja dengan BSD modern dan MacOS . (Eric Radman )
  • Hapus crypto auth. Sudah usang dan tidak didukung oleh PostgreSQL sejak 8.4 .
  • Perbaiki “–dengan-peduli” konfigurasikan opsi – tanpa argumen itu rusak.

Apa itu PgBouncer?

PgBouncer adalah utilitas untuk mengelola koneksi klien ke database PostgreSQL. Singkatnya, ia memelihara kumpulan koneksi ke server PostgreSQL dan menggunakan kembali koneksi yang ada. Meskipun ini dapat berguna untuk mengurangi overhead koneksi klien, ini juga memungkinkan membatasi jumlah maksimum koneksi terbuka ke server database. Ini juga dapat digunakan untuk pembentukan lalu lintas seperti mengarahkan koneksi ke satu atau lebih database ke server database yang berbeda. Selain itu, PgBouncer dapat digunakan untuk mengelola keamanan pada pengguna dan bahkan pada tingkat basis data.

Anda dapat mengunduh PgBouncer melalui halaman unduhan mereka dan mulai menggunakannya sekarang!

Untuk informasi lebih lanjut tentang PgBouncer Anda dapat memeriksa posting blog saya sebelumnya tentang PgBouncer.

Selamat membaca!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertanyaan PostgreSQL Favorit Saya dan Mengapa Itu Penting

  2. Cara memeriksa status server PostgreSQL Mac OS X

  3. Menggunakan beberapa skema PostgreSQL dengan model Rails

  4. Panduan untuk Pgpool untuk PostgreSQL:Bagian Satu

  5. Bagaimana cara melepaskan kemungkinan kunci baris Postgres?