PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PgBouncer 1.7 - “Màu sắc thay đổi sau khi phục sinh”

PgBouncer là một trình gộp kết nối nhẹ cho PostgreSQL. PgBouncer 1.7 đã được công bố vào ngày 18 tháng 12 năm 2015. Trong bài đăng trên blog này, chúng ta sẽ nói về những cải tiến mới chính trong PgBouncer.

Các tính năng đầy màu sắc nhất

  • PgBouncer 1.7 hỗ trợ kết nối TLS và, tôi nghĩ đây là cải tiến lớn nhất của bản phát hành mới. Họ đã sử dụng thư viện OpenSSL / LibreSSL để triển khai tính năng phụ trợ.
  • PgBouncer hiện hỗ trợ xác thực qua chứng chỉ ứng dụng khách TLS .

Hãy cùng tìm hiểu chi tiết về cài đặt TLS của PgBouncer. Có 14 thông số cấu hình liên quan đến thiết lập TLS (cài đặt phía máy khách + phía máy chủ).

Để chỉ định chế độ TLS nào sẽ sử dụng cho các kết nối từ máy khách, chúng tôi nên đặt client_tls_sslmode tham số. Kết nối TLS bị tắt theo mặc định. Khi được bật, client_tls_key_file client_tls_cert_file cũng phải được định cấu hình để thiết lập khóa và PgBouncer chứng chỉ sử dụng để chấp nhận các kết nối máy khách.

Chúng tôi có thể chỉ định chứng chỉ gốc để xác thực chứng chỉ ứng dụng khách bằng cách đặt client_tls_ca_file tham số, mặc định chưa được đặt.

Chúng tôi có thể chỉ định phiên bản giao thức TLS nào được phép bằng cách đặt client_tls_protocols tham số, mặc định là tất cả.

Để biết thêm chi tiết về cài đặt phía máy khách, bạn có thể kiểm tra client_tls_ciphers , client_tls_ecdhcurve client_tls_dheparams tham số.

Bây giờ, hãy nói về các thông số cấu hình phía máy chủ TLS. Trước tiên, chúng ta cần khai báo chế độ TLS để sử dụng cho các kết nối đến máy chủ PostgreSQL với server_tls_sslmode tham số. Kết nối TLS bị tắt theo mặc định. Chúng tôi có thể chỉ định máy chủ CA với server_tls_ca_file tham số. Nếu chúng tôi muốn chỉ định khóa riêng tư cho PgBouncer để xác thực với máy chủ PostgreSQL, chúng tôi có thể sử dụng server_tls_key_file tham số, chúng tôi thậm chí có thể chỉ định chứng chỉ cho khóa riêng tư mà máy chủ PostgreSQL có thể xác thực bằng server_tls_cert_file tham số. Giống như chúng tôi đã làm trong cài đặt kết nối TLS phía máy khách, chúng tôi có thể khai báo phiên bản giao thức TLS nào được phép với server_tls_protocols tham số.

  • Sau khi hỗ trợ TLS, tính năng mới quan trọng khác là hỗ trợ xác thực “ngang hàng” trên ổ cắm Unix.
  • Là phần cuối cùng của phiên bản này, tôi muốn đề cập đến việc hỗ trợ tệp điều khiển Truy cập Dựa trên Máy chủ, như pg_hba.conf trong Postgres. Điều này cho phép định cấu hình TLS cho các kết nối mạng và xác thực “ngang hàng” cho các kết nối cục bộ.

Chúng tôi có thể định cấu hình cách xác thực người dùng bằng auth_type tham số của PgBouncer. Tất cả các tham số cấu hình được xác định trong tệp cấu hình pgbouncer.ini. Hãy xem chi tiết về auth_type tham số.

auth_type tham số có thể được gán một trong 6 giá trị được liệt kê bên dưới. Hãy xem giải thích và cách sử dụng các giá trị này.

  • hba: Nếu chúng tôi đặt thông số auth_type với giá trị hba , chúng ta nên đặt auth_hba_file cũng như để hiển thị pg_hba.conf nào tệp sẽ được sử dụng làm cấu hình. Bằng cách làm này, chúng tôi cho phép loại xác thực thực tế được tải từ auth_hba_file. Điều này có nghĩa là chúng ta có thể sử dụng các phương pháp xác thực khác nhau cho các đường dẫn truy cập khác nhau. Ví dụ, với phiên bản 1.7 kết nối qua Unix socket sử dụng phương pháp xác thực ngang hàng, đồng thời kết nối qua TCP phải sử dụng TLS. Cho đến nay, định dạng tệp HBA không hỗ trợ tất cả các phương pháp xác thực của pg_hba.conf. Các phương pháp được hỗ trợ là:tin cậy, từ chối, md5, mật khẩu, ngang hàng và chứng chỉ.
  • chứng chỉ: Ứng dụng khách phải kết nối qua TLS kết nối với chứng chỉ ứng dụng khách hợp lệ. Tên người dùng sau đó được lấy từ CommonName trường từ chứng chỉ.
  • md5: Sử dụng kiểm tra mật khẩu dựa trên MD5. auth_file ( tên của tệp để tải tên người dùng và mật khẩu từ ) có thể chứa cả mật khẩu được mã hóa MD5 hoặc mật khẩu văn bản thuần túy. Đây là phương thức xác thực mặc định.
  • đơn giản: Mật khẩu văn bản rõ ràng được gửi qua dây. Không được dùng nữa.
  • tin cậy: Không có xác thực được thực hiện. Tên người dùng vẫn phải tồn tại trong auth_file .
  • bất kỳ: Giống như phương pháp tin cậy, nhưng tên người dùng được cung cấp bị bỏ qua. Yêu cầu tất cả cơ sở dữ liệu được định cấu hình để đăng nhập với tư cách người dùng cụ thể. Ngoài ra, cơ sở dữ liệu bảng điều khiển cho phép mọi người dùng đăng nhập với tư cách quản trị viên.

Các tính năng sáng bóng khác

Có nhiều tính năng hơn được phát hành trong phiên bản này. Bạn có thể truy cập trang thay đổi PgBouncer hoặc kiểm tra danh sách bên dưới để biết các cải tiến khác:

  • Đặt query_wait_timeout thành 120 giây theo mặc định. Tham số này xác định thời gian tối đa mà các truy vấn được phép sử dụng để chờ thực thi. Nếu truy vấn không được chỉ định cho một máy chủ trong thời gian đó, máy khách sẽ bị ngắt kết nối. Điều này được sử dụng để ngăn các máy chủ không phản hồi lấy kết nối. Nó cũng giúp ích khi máy chủ gặp sự cố hoặc cơ sở dữ liệu từ chối kết nối vì bất kỳ lý do gì. Nếu điều này bị vô hiệu hóa, khách hàng sẽ được xếp hàng vô hạn. Mặc định hiện tại (0) gây ra hàng đợi vô hạn, điều này không hữu ích. Với phiên bản 1.7, nếu máy khách có truy vấn đang chờ xử lý và chưa được chỉ định cho kết nối máy chủ, kết nối máy khách sẽ bị ngắt sau 120 giây theo mặc định.
  • Tắt server_reset_query_always theo mặc định. Giờ đây, truy vấn đặt lại chỉ được sử dụng trong các nhóm đang ở chế độ phiên.
  • Tăng pkt_buf đến 4096 byte. Cải thiện hiệu suất với TLS . Hành vi này có thể dành riêng cho từng tải, nhưng bạn nên thực hiện một cách an toàn vì v1.2, bộ đệm gói được tách ra khỏi các kết nối và được sử dụng một cách lười biếng từ nhóm.
  • Số lượng pipelining được mong đợi là ReadyForQuery gói tin. Điều này tránh phát hành máy chủ quá sớm. Các bản sửa lỗi # 52.
  • Cải thiện sbuf_loopcnt logic - socket được đảm bảo sẽ được xử lý lại ngay cả khi không có sự kiện nào từ socket. Bắt buộc đối với TLS vì nó có bộ đệm riêng.
  • Điều chỉnh các thử nghiệm hệ thống để hoạt động với BSD hiện đại và MacOS . ( Eric Radman )
  • Xóa crypt auth. Nó đã lỗi thời và không được PostgreSQL hỗ trợ kể từ 8.4 .
  • Khắc phục đơn giản “–with-care” tùy chọn cấu hình - nếu không có đối số, nó đã bị hỏng.

PgBouncer là gì?

PgBouncer là một tiện ích để quản lý các kết nối máy khách với cơ sở dữ liệu PostgreSQL. Tóm lại, nó duy trì một nhóm kết nối đến máy chủ PostgreSQL và sử dụng lại các kết nối hiện có đó. Mặc dù điều này có thể hữu ích để giảm chi phí kết nối máy khách, nhưng nó cũng cho phép giới hạn số lượng tối đa các kết nối mở đến máy chủ cơ sở dữ liệu. Nó cũng có thể được sử dụng để định hình lưu lượng như chuyển hướng kết nối đến một hoặc nhiều cơ sở dữ liệu đến các máy chủ cơ sở dữ liệu khác nhau. Ngoài những điều này, PgBouncer có thể được sử dụng để quản lý bảo mật trên người dùng và thậm chí trên cấp cơ sở dữ liệu.

Bạn có thể tải xuống PgBouncer qua trang tải xuống của họ và bắt đầu sử dụng nó ngay bây giờ!

Để biết thêm thông tin về PgBouncer, bạn có thể xem bài đăng trên blog trước đây của tôi về PgBouncer.

Chúc các bạn đọc vui vẻ!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bắt ngày với chênh lệch múi giờ

  2. Tại sao KHÔNG NULL sai khi kiểm tra một loại hàng?

  3. Tên Ràng buộc Mặc định trong PostgreSQL là gì?

  4. Lỗi ứng dụng thử nghiệm django - Gặp lỗi khi tạo cơ sở dữ liệu thử nghiệm:quyền tạo cơ sở dữ liệu bị từ chối

  5. Cách Acosd () hoạt động trong PostgreSQL