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

Tổng hợp kết nối PostgreSQL:Phần 3 - Pgpool-II

Trong các bài viết trước của chúng tôi trong loạt bài này, chúng tôi đã thảo luận về trường hợp gộp kết nối và giới thiệu PgBouncer. Trong bài đăng này, chúng tôi sẽ thảo luận về giải pháp thay thế phổ biến nhất của nó - Pgpool-II.

Pgpool-II là con dao quân đội Thụy Sĩ của phần mềm trung gian PostgreSQL. Nó hỗ trợ tính khả dụng cao, cung cấp khả năng cân bằng tải tự động và có trí thông minh để cân bằng tải giữa chủ và nô lệ, do đó tải ghi luôn hướng đến tải chủ, trong khi tải đọc được hướng đến tải phụ. Pgpool-II cũng cung cấp tính năng sao chép hợp lý. Mặc dù việc sử dụng và tầm quan trọng của nó đã giảm đi khi các tùy chọn sao chép sẵn được cải thiện ở phía máy chủ PostgreSQL, nhưng đây vẫn là một lựa chọn có giá trị cho các phiên bản cũ của PostgreSQL. Trên hết, nó cũng cung cấp tính năng tổng hợp kết nối!

Sơ lược

Thiết lập Pgpool-II

Làm theo các bước sau để thiết lập Pgpool-II, kích hoạt dịch vụ nhóm kết nối bạn cần và kết nối với máy chủ PostgreSQL của bạn. Đọc ngay bây giờ

Cách hoạt động

Kiểm tra kiến ​​trúc Pgpool-II hỗ trợ tất cả các tính năng của nó và tìm hiểu cách hoạt động của trình gộp kết nối. Đọc ngay bây giờ

Pgpool-II không làm được gì?

Xem lại các hạn chế của Pgpool-II để xem liệu nó có phải là trình gộp kết nối phù hợp cho ứng dụng của bạn hay không. Đọc ngay bây giờ

Thiết lập Pgpool-II

Các tệp nhị phân Pgpool-II được phân phối thông qua các kho lưu trữ của Pgpool-II - bạn có thể đọc thêm về cách cài đặt trong tài liệu trợ giúp này. Sau khi cài đặt, chúng ta phải cấu hình Pgpool-II để kích hoạt các dịch vụ chúng ta muốn và kết nối với máy chủ PostgreSQL. Bạn có thể đọc thêm về nó tại đây.

Để thiết lập tổng hợp tối thiểu, bạn phải cung cấp những điều sau:

  • Tên người dùng và mật khẩu được mã hóa md5 của (những) người dùng sẽ kết nối với Pgpool-II - tên người dùng và mật khẩu này phải được xác định trong một tệp riêng biệt, có thể dễ dàng tạo bằng cách sử dụng pg_md5.
  • Giao diện / địa chỉ IP và số cổng để lắng nghe các kết nối đến - điều này phải được xác định trong tệp cấu hình.
  • Tên máy chủ của (các) máy chủ phụ trợ [Nhiều máy chủ chỉ được chỉ định nếu chúng tôi muốn sử dụng tính năng sao chép và / hoặc cân bằng tải].
  • Các dịch vụ bạn muốn bật. Theo mặc định, tính năng tổng hợp kết nối được bật và các dịch vụ khác được tắt trong tệp cấu hình được cài đặt với tệp nhị phân.

Thế là xong - chúng tôi đã sẵn sàng! Mặc dù các cấu hình có sẵn với Pgpool-II có thể khó khăn hơn ngay từ cái nhìn đầu tiên, nhưng những người đứng sau Pgpool-II đã thực sự giúp chúng tôi dễ dàng!

Cách hoạt động

Pgpool-II có kiến ​​trúc liên quan hơn PgBouncer để hỗ trợ tất cả các tính năng mà nó có. Tuy nhiên, trong phần này, chúng tôi sẽ giới hạn việc mô tả cách hoạt động của kết nối gộp.

Quy trình mẹ Pgpool-II chia 32 quy trình con theo mặc định - những quy trình này có sẵn để kết nối. Kiến trúc tương tự như máy chủ PostgreSQL:một quy trình =một kết nối. Nó cũng phân tách 'quy trình pcp' được sử dụng cho các tác vụ quản trị và nằm ngoài phạm vi của bài đăng này. 32 đứa trẻ hiện đã sẵn sàng để chấp nhận kết nối. Giống như PgBouncer, chúng cũng mô phỏng một máy chủ PostgreSQL - các máy khách có thể kết nối với cùng một chuỗi kết nối giống như chúng với một máy chủ PostgreSQL bình thường.

Kernel hướng các kết nối đến đến một trong các tiến trình con đã đăng ký là bộ lắng nghe. Cả quy trình Pgpool-II chính và người dùng cuối đều không có bất kỳ quyền kiểm soát nào đối với quy trình con nào phản hồi một yêu cầu đến. Đứa trẻ nào nhàn rỗi có thể tiếp nhận theo yêu cầu. Nếu không tìm thấy con nào rảnh, yêu cầu kết nối sẽ được xếp hàng đợi ở phía hạt nhân - điều này có thể khiến các ứng dụng như pgbench bị treo, chờ kết nối máy khách.

Khi một phần tử con Pgpool-II không hoạt động nhận được yêu cầu kết nối, nó:

  1. Kiểm tra tên người dùng trong tệp mật khẩu của nó. Nếu không tìm thấy, nó sẽ từ chối kết nối.
  2. Nếu tìm thấy tên người dùng, nó sẽ kiểm tra mật khẩu được cung cấp dựa trên băm md5 được lưu trữ trong tệp này.
  3. Sau khi xác thực thành công, nó sẽ kiểm tra xem nó đã có kết nối được lưu trong bộ nhớ đệm cho tổ hợp cơ sở dữ liệu + người dùng này chưa.
  4. Nếu đúng như vậy, nó sẽ trả về kết nối cho máy khách. Nếu không, nó sẽ mở ra một kết nối mới.
  5. Tất cả các yêu cầu và phản hồi đều chuyển qua Pgpool-II trong khi chờ máy khách ngắt kết nối.
  6. Khi máy khách ngắt kết nối, Pgpool-II phải quyết định có nên lưu kết nối vào bộ nhớ cache hay không:
    • Nếu nó có một vùng trống, nó sẽ lưu vào bộ nhớ cache.
    • Nếu nó không có vùng trống (nghĩa là kết nối này vào bộ nhớ đệm sẽ vượt quá kích thước max_pool_size cho phép), nó sẽ quyết định dựa trên một thuật toán nội bộ.
  7. Nếu nó quyết định lưu kết nối vào bộ nhớ cache, nó sẽ chạy truy vấn đặt lại được định cấu hình trước để xóa tất cả chi tiết phiên và giúp một ứng dụng khác sử dụng lại an toàn.
  8. Giờ đây, quy trình con có thể tự do kết nối với nhiều kết nối hơn.

Mẹo của chuyên gia

Điều quan trọng là phải liên tục theo dõi tình trạng của máy chủ MySQL chính và máy chủ phụ của bạn để bạn có thể phát hiện các vấn đề tiềm ẩn và thực hiện các hành động khắc phục.

Pgpool-II không làm được gì?

Thật không may, đối với những người chỉ tập trung vào tính năng tổng hợp kết nối, điều mà Pgpool-II làm không tốt là tính năng tổng hợp kết nối, đặc biệt là đối với một số ít khách hàng. Bởi vì mỗi quy trình con có nhóm riêng của nó và không có cách nào để kiểm soát ứng dụng khách nào kết nối với quy trình con nào, nên quá may mắn khi sử dụng lại các kết nối.

Như bạn có thể thấy, Pgpool và PgBouncer có những điểm mạnh khá khác nhau - trong bài đăng cuối cùng của loạt bài này, chúng ta sẽ thực hiện một bài kiểm tra đối đầu , và so sánh tính năng! Hãy theo dõi!

Chuỗi tổng hợp kết nối PostgreSQL

  • Phần 1 - Ưu &Nhược điểm
  • Phần 2 - PgBouncer
  • Phần 3 - Pgpool-II
  • Phần 4 - PgBouncer so với Pgpool-II


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để sửa lỗi phiên bản pg_dump không khớp?

  2. Tham gia SQL cột bí danh

  3. PostgreSQL -phải xuất hiện trong mệnh đề GROUP BY hoặc được sử dụng trong một hàm tổng hợp

  4. Không thể CHỌN từ mệnh đề CẬP NHẬT TRẢ LẠI trong postgres

  5. rake db:tạo cơ sở dữ liệu ném không tồn tại lỗi với postgresql