PostgreSQL là một trong những cơ sở dữ liệu có thể được triển khai thông qua ClusterControl, cùng với MySQL, MariaDB và MongoDB. ClusterControl không chỉ đơn giản hóa việc triển khai cụm cơ sở dữ liệu mà còn có một chức năng về khả năng mở rộng trong trường hợp ứng dụng của bạn phát triển và yêu cầu chức năng đó.
Bằng cách mở rộng cơ sở dữ liệu, ứng dụng của bạn sẽ chạy mượt mà và tốt hơn nhiều trong trường hợp tải ứng dụng hoặc lưu lượng truy cập tăng lên. Trong bài đăng trên blog này, chúng tôi sẽ xem xét các bước về cách triển khai cũng như mở rộng quy mô của PostgreSQL v13 với ClusterControl 1.8.2.
Triển khai Giao diện Người dùng (UI)
Có hai cách triển khai trong ClusterControl, Giao diện người dùng web (UI) cũng như Giao diện Dòng lệnh (CLI). Người dùng có quyền tự do lựa chọn bất kỳ tùy chọn triển khai nào tùy theo ý thích và nhu cầu của họ. Cả hai tùy chọn đều dễ làm theo và được ghi lại trong tài liệu của chúng tôi. Trong phần này, chúng ta sẽ xem xét quá trình triển khai bằng cách sử dụng tùy chọn đầu tiên - giao diện người dùng web.
Bước đầu tiên là đăng nhập vào ClusterControl của bạn và nhấp vào Triển khai:
Bạn sẽ thấy ảnh chụp màn hình bên dưới cho bước triển khai tiếp theo , chọn tab PostgreSQL để tiếp tục:
Trước khi chúng ta tiến xa hơn, tôi muốn nhắc bạn rằng mối liên hệ giữa nút ClusterControl và các nút cơ sở dữ liệu phải không có mật khẩu. Trước khi triển khai, tất cả những gì chúng ta cần làm là tạo ssh-keygen từ nút ClusterControl và sau đó sao chép nó vào tất cả các nút. Điền thông tin đầu vào cho Người dùng SSH, Mật khẩu Sudo cũng như Tên cụm theo yêu cầu của bạn và nhấp vào Tiếp tục.
Trong ảnh chụp màn hình ở trên, bạn sẽ cần xác định Cổng Máy chủ (trong trường hợp bạn muốn sử dụng người khác), người dùng mà bạn muốn cũng như mật khẩu và đảm bảo chọn Phiên bản 13 mà bạn muốn cài đặt.
Tác giả ảnh Ảnh mô tảỞ đây, chúng ta cần xác định các máy chủ bằng cách sử dụng tên máy chủ hoặc địa chỉ IP, như trong trường hợp này là 1 chính và 2 nô lệ. Bước cuối cùng là chọn chế độ sao chép cho cụm của chúng tôi.
Sau khi bạn nhấp vào Triển khai, quá trình triển khai sẽ bắt đầu và chúng tôi có thể giám sát tiến trình trong tab Hoạt động.
Việc triển khai thường sẽ mất vài phút, hiệu suất phụ thuộc chủ yếu vào mạng và thông số kỹ thuật của máy chủ.
Bây giờ chúng ta đã cài đặt PostgreSQL v13 bằng ClusterControl GUI khá đơn giản .
Triển khai PostgreSQL Giao diện Dòng lệnh (CLI)
Từ phần trên, chúng ta có thể thấy rằng việc triển khai khá đơn giản bằng cách sử dụng giao diện người dùng web. Lưu ý quan trọng là tất cả các nút phải có kết nối SSH không mật khẩu trước khi triển khai. Trong phần này, chúng ta sẽ xem cách triển khai bằng dòng lệnh công cụ ClusterControl CLI hoặc “s9s”.
Chúng tôi giả định rằng ClusterControl đã được cài đặt trước đó, hãy bắt đầu bằng cách tạo ssh-keygen. Trong nút ClusterControl, hãy chạy các lệnh sau:
$ whoami
root
$ ssh-keygen -t rsa # generate the SSH key for the user
$ ssh-copy-id 10.10.40.11 # pg node1
$ ssh-copy-id 10.10.40.12 # pg node2
$ ssh-copy-id 10.10.40.13 # pg node3
Sau khi tất cả các lệnh trên chạy thành công, chúng tôi có thể xác minh kết nối không cần mật khẩu bằng cách sử dụng lệnh sau:
$ ssh 10.10.40.11 "whoami" # make sure can ssh without password
Nếu lệnh trên chạy thành công, việc triển khai cụm có thể được bắt đầu từ máy chủ ClusterControl bằng cách sử dụng dòng lệnh sau:
$ s9s cluster --create --cluster-type=postgresql --nodes="10.10.40.11?master;10.10.40.12?slave;10.10.40.13?slave" --provider-version='13' --db-admin="postgres" --db-admin-passwd="[email protected]$$W0rd" --cluster-name=PGCluster --os-user=root --os-key-file=/root/.ssh/id_rsa --log
Ngay sau khi bạn chạy lệnh trên, bạn sẽ thấy một cái gì đó như thế này có nghĩa là tác vụ đã bắt đầu chạy:
Cụm sẽ được tạo trên 3 (các) nút dữ liệu.
Xác minh các thông số công việc.
10.10.40.11: Checking ssh/sudo with credentials ssh_cred_job_6656.
10.10.40.12: Checking ssh/sudo with credentials ssh_cred_job_6656.
10.10.40.13: Checking ssh/sudo with credentials ssh_cred_job_6656.
…
…
This will take a few moments and the following message will be displayed once the cluster is deployed:
…
…
Directory is '/etc/cmon.d'.
Filename is 'cmon_1.cnf'.
Configuration written to 'cmon_1.cnf'.
Sending SIGHUP to the controller process.
Waiting until the initial cluster starts up.
Cluster 1 is running.
Registering the cluster on the web UI.
Waiting until the initial cluster starts up.
Cluster 1 is running.
Generated & set RPC authentication token.
Bạn cũng có thể xác minh điều đó bằng cách đăng nhập vào bảng điều khiển web, sử dụng tên người dùng mà bạn đã tạo. Bây giờ chúng ta có một cụm PostgreSQL được triển khai bằng cách sử dụng 3 nút. Nếu bạn muốn tìm hiểu thêm về lệnh triển khai ở trên, đây là tài liệu tham khảo tốt nhất dành cho bạn.
Mở rộng quy mô PostgreSQL với giao diện người dùng ClusterControl
PostgreSQL là một cơ sở dữ liệu quan hệ và chúng ta biết rằng việc mở rộng loại cơ sở dữ liệu này là không dễ dàng so với cơ sở dữ liệu không quan hệ. Ngày nay, hầu hết các ứng dụng cần khả năng mở rộng để mang lại hiệu suất và tốc độ tốt hơn. Có rất nhiều cách để thực hiện điều này tùy thuộc vào cơ sở hạ tầng và môi trường của bạn.
Khả năng mở rộng là một trong những tính năng có thể được hỗ trợ bởi ClusterControl và có thể được thực hiện trong cả việc sử dụng UI cũng như CLI. Trong phần này, chúng ta sẽ xem cách chúng ta có thể mở rộng PostgreSQL bằng cách sử dụng ClusterControl UI. Bước đầu tiên là đăng nhập vào giao diện người dùng của bạn và chọn cụm, sau khi cụm được chọn, bạn có thể nhấp vào tùy chọn theo ảnh chụp màn hình bên dưới:
Sau khi nhấp vào "Add Replication Slave", bạn sẽ thấy trang sau . Bạn có thể chọn “Thêm mới…” hoặc “Nhập…” tùy thuộc vào tình huống của bạn. Trong ví dụ này, chúng tôi sẽ chọn tùy chọn đầu tiên:
Màn hình sau sẽ hiển thị khi bạn nhấp vào nó:
Tác giả ảnh Mô tả ảnh-
Tên máy chủ Slave:tên máy chủ / địa chỉ IP của nút hoặc máy chủ mới
-
Cổng Slave:cổng PostgreSQL của nô lệ, mặc định là 5432
-
Tên cụm:tên của cụm, bạn có thể thêm hoặc để trống
-
Sử dụng Gói Mặc định cho Datadir:bạn có thể bỏ chọn tùy chọn này nếu bạn muốn có một vị trí khác cho Datadir
-
Cài đặt phần mềm PostgreSQL:bạn có thể đánh dấu tùy chọn này
-
Sao chép đồng bộ:bạn có thể chọn kiểu sao chép bạn muốn trong bản sao này
-
Bao gồm trong bộ LoadBalancer (nếu tồn tại):tùy chọn này sẽ được kiểm tra nếu bạn đã định cấu hình LoadBalancer cho cụm
Lưu ý quan trọng chính ở đây là bạn cần định cấu hình máy chủ nô lệ mới không có mật khẩu trước khi bạn có thể chạy thiết lập này. Sau khi mọi thứ được xác nhận, chúng ta có thể nhấp vào nút “Hoàn tất” để hoàn tất thiết lập. Trong ví dụ này, tôi đã thêm IP “10.10.40.140”.
Giờ đây, chúng tôi có thể theo dõi hoạt động công việc và để quá trình thiết lập hoàn tất. Để xác nhận thiết lập, chúng ta có thể chuyển đến tab “Cấu trúc liên kết” để xem nô lệ mới:
Mở rộng quy mô PostgreSQL với ClusterControl CLI
Để thêm các nút mới vào cụm hiện có rất đơn giản bằng cách sử dụng CLI. Từ nút điều khiển, bạn thực hiện lệnh sau. Lệnh đầu tiên là xác định cụm mà chúng tôi muốn thêm nút mới vào:
$ s9s cluster --list --long
ID STATE TYPE OWNER GROUP NAME COMMENT
1 STARTED postgresql_single admin admins PGCluster All nodes are operational.
Trong ví dụ này, chúng ta có thể thấy rằng ID nút là "1" cho tên cụm "PGCluster". Hãy xem tùy chọn lệnh đầu tiên về cách thêm một nút mới vào cụm PostgreSQL hiện có:
$ s9s cluster --add-node --cluster-id=1 --nodes="postgresql://10.10.40.141?slave" --log
Viết tắt “--log” ở cuối dòng sẽ cho chúng ta biết tác vụ hiện tại đang chạy sau khi lệnh được thực thi như sau:
Using SSH credentials from cluster.
Cluster ID is 1.
The username is 'root'.
Verifying job parameters.
Found a master candidate: 10.10.40.11:5432, adding 10.10.40.141:5432 as a slave.
Verifying job parameters.
10.10.40.11: Checking ssh/sudo with credentials ssh_cred_cluster_1_6245.
10.10.40.11:5432: Loading configuration file '/var/lib/pgsql/13/data/postgresql.conf'.
10.10.40.11:5432: wal_keep_segments is set to 0, increase this for safer replication.
…
…
Lệnh có sẵn tiếp theo mà bạn có thể sử dụng như sau:
$ s9s cluster --add-node --cluster-id=1 --nodes="postgresql://10.10.40.142?slave" --wait
Thêm nút vào cụm
\ Job 9 RUNNING [▋ ] 5% Installing packages
Lưu ý rằng có chữ viết tắt “--wait” trong dòng và kết quả bạn thấy sẽ được hiển thị như trên. Sau khi quá trình hoàn tất, chúng tôi có thể xác nhận các nút mới trong tab "Tổng quan" của cụm từ giao diện người dùng:
Kết luận
Trong bài đăng trên blog này, chúng tôi đã xem xét hai tùy chọn mở rộng PostgreSQL trong ClusterControl. Như bạn có thể nhận thấy, việc mở rộng PostgreSQL rất dễ dàng với ClusterControl. ClusterControl không chỉ có thể thực hiện khả năng mở rộng mà bạn còn có thể đạt được thiết lập tính sẵn sàng cao cho cụm cơ sở dữ liệu của mình. Các tính năng như HAProxy, PgBouncer cũng như Keepalived đều có sẵn và sẵn sàng được triển khai cho cụm của bạn bất cứ khi nào bạn cảm thấy cần các tùy chọn đó. Với ClusterControl, cụm cơ sở dữ liệu của bạn dễ dàng quản lý và giám sát cùng một lúc.
Chúng tôi hy vọng rằng bài đăng trên blog này sẽ giúp hướng dẫn bạn trong việc mở rộng thiết lập PostgreSQL của mình.