Postgres với kiến ​​trúc pgpool


9

Dưới đây là một ví dụ về kiến ​​trúc pgpool:

nhập mô tả hình ảnh ở đây

Điều này ngụ ý rằng bạn chỉ cần có pgpool trên một máy chủ duy nhất; điều này có đúng không Khi tôi nhìn vào cấu hình tôi cũng thấy rằng bạn định cấu hình phụ trợ bên trong pgpool.conf; Vì vậy, nó tiếp tục ngụ ý này. Nhưng, điều đó không giải thích tại sao tôi cũng thấy pgpool trên các máy chủ phụ trợ.

Khi xem qua các tài liệu tôi cũng thấy:

Nếu bạn đang sử dụng PostgreSQL 8.0 trở lên, việc cài đặt chức năng pgpool_reggroup trên tất cả PostgreQuery để pgpool-II truy cập được khuyến khích, vì nó được pgpool-II sử dụng nội bộ.

Vì vậy, tôi không chắc phải nghĩ gì; Nếu đó là cách tốt nhất để có pgpool trên tất cả các phụ trợ hoặc chỉ là một máy chủ chuyên dụng?


nếu bạn đang có tính sẵn sàng cao, bạn có thể muốn có hai máy chủ pgpool trước ít nhất 2 máy chủ postgresql (tất cả trên các hộp khác nhau)
Neil McGuigan

Câu trả lời:


10

Nói chung, bạn sẽ không cài đặt PGpool trên các máy chủ phụ trợ. Những gì bạn nhìn thấy trong hình của bạn là cấu hình phổ biến nhất. PGpool là một máy chủ độc lập về cơ bản nằm trước cơ sở dữ liệu. Hai máy chủ Postgres thường được cấu hình với sao chép phát trực tuyến; với một người là chủ và người kia là nô lệ.

Điều này cho phép PGpool tải cân bằng tất cả các truy vấn đọc giữa hai (hoặc nhiều) cơ sở dữ liệu. Bất kỳ truy vấn nào liên quan đến bất kỳ ghi nào, sẽ được chuyển đến máy chủ chính, lần lượt sao chép vào nô lệ.

Như @Neil McGuigan đã nói , bạn cũng có thể có nhiều máy chủ PGpool để đạt được tính sẵn sàng cao tốt hơn. Về mặt kỹ thuật, bạn có thể cài đặt PGpool trên các máy chủ cơ sở dữ liệu trong cấu hình này, nhưng đây sẽ là một thực tế tồi. Chạy nhiều máy chủ PGpool là một cấu hình phức tạp hơn nhiều. Nếu đây là lần đầu tiên của bạn với PGpool, tôi sẽ bắt đầu với một máy chủ PGpool trước khi hai máy chủ hoạt động.

Trong cả hai cấu hình, máy chủ ứng dụng của bạn nghĩ rằng nó chỉ đang kết nối với một cơ sở dữ liệu Postgres duy nhất.

Về pgpool_regclass, đây thực sự là một câu hỏi riêng biệt, đây là từ Câu hỏi thường gặp về PGpool :

Nếu bạn đang sử dụng PostgreSQL 8.0 trở lên, việc cài đặt chức năng pgpool_reggroup trên tất cả PostgreQuery để pgpool-II truy cập được khuyến khích, vì nó được pgpool-II sử dụng nội bộ. Không có điều này, việc xử lý các tên bảng trùng lặp trong lược đồ khác nhau có thể gây ra sự cố (các bảng tạm thời không phải là vấn đề).

Nếu bạn đang sử dụng PostgreSQL 9.4.0 trở lên và pgpool-II 3.3.4 trở lên, 3.4.0 trở lên, bạn không cần phải cài đặt pgpool_reg class vì PostgreQuery 9.4 có hàm pgpool_reg class tích hợp như hàm "to_reg class".

Nếu bạn cần điều này, nó chỉ là một số mã SQL chạy trên máy chủ chính Postgres của bạn để thêm chức năng mà PGpool sử dụng.

Với reggroup, có một bước bổ sung bạn phải làm (Tôi đã nghĩ đến insert_lock). Nếu bạn đang biên dịch từ nguồn (nói chung hầu hết các bản phân phối có các phiên bản thực sự lỗi thời của PGpool), bạn cũng sẽ phải biên dịch thư viện Postgres.

Nếu bạn biên dịch từ nguồn, bạn sẽ phải vào .../pgpool-II-3.X.X/src/sql/pgpool-regclassthư mục và thực hiện a ./configure; make.

Sao chép tệp pgpool-reggroup.so vào thư mục tiện ích mở rộng Postgres. Trên máy chủ Ubuntu 14.04 của tôi (chỉ cần sử dụng gói cài đặt Postgres 9.3), nó được đặt tại : /usr/lib/postgresql/9.3/lib. Hãy nhớ làm điều này cho tất cả các máy chủ Postgres.

Khi đã hoàn thành, sau đó bạn có thể chạy pgpool-regclass.sqltrên bản gốc. Điều này chỉ ánh xạ pgpool_regclasschức năng đến thư viện mà bạn đã sao chép.


1

Như mọi thứ khác, có nhiều cách để bạn có thể thực hiện triển khai tính sẵn sàng cao của mình. Ở đây tôi sẽ đề xuất một cái gì đó từ kinh nghiệm của tôi (triển khai HA của riêng tôi):

  1. Luôn luôn tốt hơn khi có nhiều phiên bản pgpool2 thay vì một trường hợp duy nhất. Lý do rất rõ ràng: pgpool2 đơn là điểm thất bại duy nhất. Kể từ khi pgpool đã giới thiệu tính năng watchdog, nó rất dễ thực hiện.
  2. Nói chung, sẽ tốt hơn một chút khi có các phiên bản pgpool2 trên các máy riêng biệt hơn là chia sẻ cùng một máy giữa phụ trợ PostgreQuery và pgpool2. Nhưng không có nhược điểm đáng kể nào ngay cả khi bạn chạy chúng trên cùng một máy chủ với PostgreSQL. (Trong triển khai HA của tôi, mọi máy đều chạy một phiên bản PostgreSQL và một phiên bản pgpool2.)

Cuối cùng, tôi sẽ đề xuất hướng dẫn từng bước này sẽ dẫn bạn từ đầu (cài đặt máy chủ PostgreQuery ...) để hoàn thành triển khai tính sẵn sàng cao. Các hướng dẫn được đề cập mô tả việc thực hiện mà tôi sử dụng.

Tôi hy vọng nó đã giúp.

CẬP NHẬT: Cảm ơn @Moshe Katz - liên kết đã thay đổi. Bây giờ cập nhật ở đây, trong bài viết gốc cũng có.


2
Trang web được chỉ ra bởi bạn itenlight.com/blog/2016/05/18/ dường như bị sập. Bạn có thể xem một lần một lần được không?
user6807024

Có vẻ như bài viết hiện đã có tại fatdragon.me/blog/2016/05/postgresql-ha-pgpool-ii-part-1
Moshe Katz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.