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

Chia tỷ lệ PostgreSQL sử dụng Bộ làm mát kết nối &Bộ cân bằng tải

Khả năng mở rộng là thuộc tính của hệ thống để xử lý lượng nhu cầu ngày càng tăng bằng cách thêm tài nguyên. Các lý do cho số lượng nhu cầu này có thể là tạm thời, ví dụ:nếu bạn đang tung ra một đợt giảm giá hoặc vĩnh viễn, để tăng lượng khách hàng hoặc nhân viên. Trong mọi trường hợp, bạn có thể thêm hoặc xóa tài nguyên để quản lý những thay đổi này theo yêu cầu hoặc tăng lưu lượng truy cập.

Có nhiều cách tiếp cận khác nhau để mở rộng cơ sở dữ liệu của bạn. Trong blog này, chúng ta sẽ xem xét những phê duyệt này là gì và cách mở rộng cơ sở dữ liệu PostgreSQL của bạn bằng cách sử dụng Bộ làm mát kết nối và Bộ cân bằng tải.

Tỷ lệ Ngang và Dọc

Có hai cách chính để mở rộng cơ sở dữ liệu của bạn.

  • Tỷ lệ theo chiều ngang (scale-out):Nó được thực hiện bằng cách thêm nhiều nút cơ sở dữ liệu tạo hoặc tăng một cụm cơ sở dữ liệu. Nó có thể giúp bạn cải thiện hiệu suất đọc, cân bằng lưu lượng giữa các nút.
  • Tỷ lệ theo chiều dọc (mở rộng quy mô):Nó được thực hiện bằng cách thêm nhiều tài nguyên phần cứng (CPU, Bộ nhớ, Đĩa) vào một nút cơ sở dữ liệu hiện có. Có thể cần thay đổi một số thông số cấu hình để cho phép PostgreSQL sử dụng tài nguyên phần cứng mới hoặc tốt hơn.

Bộ làm mát kết nối và bộ cân bằng tải

Trong cả Tỷ lệ Ngang và Dọc, có thể hữu ích nếu thêm một công cụ bên ngoài để giảm tải trên cơ sở dữ liệu của bạn, điều này sẽ cải thiện hiệu suất. Có thể nó là không đủ, nhưng nó là một điểm khởi đầu tốt. Đối với điều này, bạn nên triển khai trình gộp kết nối và trình cân bằng tải. Tôi đã nói “và” vì chúng được thiết kế cho các vai trò khác nhau.

Kết nối tổng hợp là một phương pháp tạo một nhóm các kết nối và sử dụng lại chúng, tránh việc mở các kết nối mới đến cơ sở dữ liệu mọi lúc, điều này sẽ làm tăng đáng kể hiệu suất của các ứng dụng của bạn. PgBouncer là một trình gộp kết nối phổ biến được thiết kế cho PostgreSQL.

Sử dụng Load Balancer là một cách để có Tính sẵn sàng cao trong cấu trúc liên kết cơ sở dữ liệu của bạn và nó cũng hữu ích để tăng hiệu suất bằng cách cân bằng lưu lượng giữa các nút có sẵn. Đối với điều này, HAProxy là một lựa chọn tốt cho PostgreSQL, vì nó là một proxy nguồn mở có thể được sử dụng để triển khai tính khả dụng cao, cân bằng tải và proxy cho các ứng dụng dựa trên TCP và HTTP.

Cách Triển khai Kết hợp HAProxy, PgBouncer và PostgreSQL

Sự kết hợp của cả hai công nghệ, HAProxy và PgBouncer, có lẽ là cách tốt nhất để mở rộng và cải thiện hiệu suất trong môi trường PostgreSQL của bạn. Vì vậy, chúng ta sẽ xem cách triển khai nó bằng cách sử dụng kiến ​​trúc sau:

Chúng tôi sẽ cho rằng bạn đã cài đặt ClusterControl, nếu chưa, bạn có thể truy cập trang web chính thức hoặc thậm chí tham khảo tài liệu chính thức để cài đặt nó.

Trước tiên, bạn cần triển khai cụm PostgreSQL của mình với HAProxy phía trước nó. Đối với điều này, vui lòng làm theo các bước trong bài đăng blog này để triển khai cả PostgreSQL và HAProxy bằng cách sử dụng ClusterControl.

Tại thời điểm này, bạn sẽ có một cái gì đó như sau:

Bây giờ, bạn có thể cài đặt PgBouncer trên mỗi nút cơ sở dữ liệu hoặc trên một máy bên ngoài .

Để tải phần mềm PgBouncer, bạn có thể đi tới phần tải xuống PgBouncer hoặc sử dụng kho RPM hoặc DEB. Đối với ví dụ này, chúng tôi sẽ sử dụng CentOS 8 và sẽ cài đặt nó từ kho lưu trữ PostgreSQL chính thức.

Trước tiên, hãy tải xuống và cài đặt kho lưu trữ tương ứng từ trang PostgreSQL (nếu bạn chưa có):

$ wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

$ rpm -Uvh pgdg-redhat-repo-latest.noarch.rpm

Sau đó, cài đặt gói PgBouncer:

$ yum install pgbouncer

Khi hoàn tất, bạn sẽ có tệp cấu hình mới nằm trong /etc/pgbouncer/pgbouncer.ini. Là tệp cấu hình mặc định, bạn có thể sử dụng ví dụ sau:

$ cat /etc/pgbouncer/pgbouncer.ini

[databases]

world = host=127.0.0.1 port=5432 dbname=world

[pgbouncer]

logfile = /var/log/pgbouncer/pgbouncer.log

pidfile = /var/run/pgbouncer/pgbouncer.pid

listen_addr = *

listen_port = 6432

auth_type = md5

auth_file = /etc/pgbouncer/userlist.txt

admin_users = admindb

Và tệp xác thực:

$ cat /etc/pgbouncer/userlist.txt

"admindb" "root123"

Đây chỉ là một ví dụ cơ bản. Để có được tất cả các thông số có sẵn, bạn có thể kiểm tra tài liệu chính thức.

Vì vậy, trong trường hợp này, tôi đã cài đặt PgBouncer trong cùng một nút cơ sở dữ liệu, lắng nghe tất cả các địa chỉ IP và nó kết nối với cơ sở dữ liệu PostgreSQL có tên là “world”. Tôi cũng đang quản lý những người dùng được phép trong tệp userlist.txt bằng mật khẩu văn bản thuần túy có thể được mã hóa nếu cần.

Để bắt đầu dịch vụ PgBouncer, bạn chỉ cần chạy lệnh sau:

$ pgbouncer -d /etc/pgbouncer/pgbouncer.ini

Bây giờ, hãy chạy lệnh sau bằng cách sử dụng thông tin cục bộ của bạn (cổng, máy chủ, tên người dùng và tên cơ sở dữ liệu) để truy cập cơ sở dữ liệu PostgreSQL:

$ psql -p 6432 -h 127.0.0.1 -U admindb world

Password for user admindb:

psql (12.4)

Type "help" for help.



world=#

Đây là một cấu trúc liên kết cơ bản. Bạn có thể cải thiện nó, chẳng hạn như thêm hai hoặc nhiều nút cân bằng tải để tránh một điểm lỗi duy nhất và sử dụng một số công cụ như “Keepalived”, để đảm bảo tính khả dụng. Nó cũng có thể được thực hiện bằng cách sử dụng ClusterControl.

Để biết thêm thông tin về PgBouncer và cách sử dụng nó, bạn có thể tham khảo bài đăng trên blog này.

Kết luận

Nếu bạn cần mở rộng cụm PostgreSQL của mình, thêm HAProxy và PgBouncer là một cách tốt để mở rộng quy mô và mở rộng quy mô cùng một lúc, vì bạn có thể thêm nhiều nút chờ nóng hơn để cân bằng lưu lượng truy cập và bạn sẽ cải thiện hiệu suất khi sử dụng lại các kết nối đã mở.

ClusterControl cung cấp một loạt các tính năng, từ giám sát, cảnh báo, chuyển đổi dự phòng tự động, sao lưu, phục hồi tại thời điểm, xác minh sao lưu, cho đến mở rộng các bản sao đã đọc. Điều này có thể giúp bạn mở rộng cơ sở dữ liệu PostgreSQL của mình theo chiều ngang hoặc chiều dọc từ giao diện người dùng thân thiện và trực quan.


  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 để thay đổi cơ sở dữ liệu thành postgresql với Symfony 2.0?

  2. Cách tốt nhất để chọn các hàng ngẫu nhiên PostgreSQL

  3. Tạo trình tự theo thứ tự

  4. ĐẶT HÀNG THEO danh sách giá trị IN

  5. LỖI:quyền bị từ chối đối với chuỗi thành phố_id_seq bằng cách sử dụng Postgres