Trong phần đầu của blog này, chúng tôi đã đề cập đến một số khái niệm quan trọng liên quan đến một môi trường nhân bản PostgreSQL tốt. Bây giờ, hãy xem cách kết hợp tất cả những thứ này với nhau một cách dễ dàng bằng cách sử dụng ClusterControl. Đối với điều này, chúng tôi sẽ cho rằng bạn đã cài đặt ClusterControl, nhưng nếu chưa, bạn có thể truy cập trang web chính thức hoặc tham khảo tài liệu chính thức để cài đặt nó.
Triển khai Bản sao Truyền trực tuyến PostgreSQL
Để triển khai Cụm PostgreSQL từ ClusterControl, hãy chọn tùy chọn Triển khai và làm theo hướng dẫn xuất hiện.
Khi chọn PostgreSQL, bạn phải chỉ định Người dùng, Khóa hoặc Mật khẩu và Cổng kết nối bằng SSH với máy chủ của bạn. Bạn cũng có thể thêm tên cho cụm mới của mình và chỉ định xem bạn có muốn ClusterControl cài đặt phần mềm và cấu hình tương ứng cho bạn hay không.
Sau khi thiết lập thông tin truy cập SSH, bạn cần xác định thông tin đăng nhập cơ sở dữ liệu , phiên bản và datadir (tùy chọn). Bạn cũng có thể chỉ định kho lưu trữ nào sẽ sử dụng.
Trong bước tiếp theo, bạn cần thêm máy chủ của mình vào cụm mà bạn sẽ tạo bằng Địa chỉ IP hoặc Tên máy chủ.
Trong bước cuối cùng, bạn có thể chọn xem bản sao của mình sẽ là Đồng bộ hay Không đồng bộ, và sau đó chỉ cần nhấn vào Triển khai.
Khi nhiệm vụ hoàn thành, bạn có thể thấy Cụm PostgreSQL mới của mình trong màn hình ClusterControl chính.
Bây giờ bạn đã tạo cụm của mình, bạn có thể thực hiện một số tác vụ trên đó, như thêm trình cân bằng tải (HAProxy), trình gộp kết nối (PgBouncer) hoặc nô lệ sao chép đồng bộ hoặc không đồng bộ mới.
Thêm các nô lệ sao chép đồng bộ và không đồng bộ
Đi tới ClusterControl -> Cluster Actions -> Thêm Replication Slave.
Bạn có thể thêm một nô lệ sao chép mới hoặc thậm chí nhập một nô lệ hiện có. Hãy chọn tùy chọn đầu tiên và tiếp tục.
Tại đây, bạn cần chỉ định máy chủ chính, địa chỉ IP hoặc Tên máy chủ của nô lệ nhân bản mới, cổng và nếu bạn muốn ClusterControl cài đặt phần mềm hoặc bao gồm nút này trong bộ cân bằng tải hiện có. Bạn cũng có thể định cấu hình bản sao là đồng bộ hoặc không đồng bộ.
Bây giờ bạn đã có sẵn cụm PostgreSQL của mình với các bản sao tương ứng, hãy xem cách cải thiện hiệu suất bằng cách thêm một trình gộp kết nối.
Triển khai PgBouncer
Vào ClusterControl -> Chọn PostgreSQL Cluster -> Cluster Actions -> Thêm Load Balancer -> PgBouncer. Tại đây, bạn có thể triển khai một nút PgBouncer mới sẽ được triển khai trong nút cơ sở dữ liệu đã chọn hoặc thậm chí nhập một PgBouncer hiện có.
Bạn sẽ cần chỉ định Địa chỉ IP hoặc Tên máy chủ, Cổng Nghe và Thông tin đăng nhập PgBouncer. Khi bạn nhấn Deploy PgBouncer, ClusterControl sẽ truy cập vào nút, cài đặt và định cấu hình mọi thứ mà không cần bất kỳ sự can thiệp thủ công nào.
Bạn có thể theo dõi tiến trình trong Phần Hoạt động ClusterControl. Khi nó kết thúc, bạn cần tạo Pool mới. Đối với điều này, hãy đi tới ClusterControl -> Chọn Cụm PostgreSQL -> Nodes -> nút PgBouncer.
Bạn sẽ cần thêm thông tin sau:
-
Tên máy chủ PgBouncer:Chọn máy chủ lưu trữ nút để tạo nhóm kết nối.
-
Tên nhóm:Tên nhóm và cơ sở dữ liệu phải giống nhau.
-
Tên người dùng:Chọn người dùng từ nút chính của PostgreSQL hoặc tạo một người dùng mới.
-
Chế độ nhóm:Có thể là:tổng hợp phiên (mặc định), giao dịch hoặc câu lệnh.
-
Kích thước nhóm:Kích thước tối đa của nhóm cho cơ sở dữ liệu này. Giá trị mặc định là 20.
-
Kết nối Cơ sở dữ liệu Tối đa:Định cấu hình mức tối đa cho toàn cơ sở dữ liệu. Giá trị mặc định là 0, có nghĩa là không giới hạn.
Bây giờ, bạn sẽ có thể nhìn thấy Nhóm trong phần Nút.
Để thêm Tính khả dụng cao vào cơ sở dữ liệu PostgreSQL của bạn, hãy xem cách triển khai bộ cân bằng tải.
Triển khai Load Balancer
Để triển khai bộ cân bằng tải, hãy chọn tùy chọn Thêm bộ cân bằng tải trong trình đơn Tác vụ cụm và điền đầy đủ thông tin được hỏi.
Bạn cần thêm IP hoặc Tên máy chủ, Cổng, Chính sách và các nút bạn sẽ sử dụng. Nếu bạn đang sử dụng PgBouncer, bạn có thể chọn nó trong hộp tổ hợp loại phiên bản.
Để tránh một lỗi duy nhất, bạn nên triển khai ít nhất hai nút HAProxy và sử dụng Keepalived cho phép bạn sử dụng địa chỉ IP ảo trong ứng dụng được gán cho nút HAProxy đang hoạt động. Nếu nút này không thành công, địa chỉ IP ảo sẽ được di chuyển sang bộ cân bằng tải thứ cấp, vì vậy ứng dụng của bạn vẫn có thể hoạt động như bình thường.
Triển khai đủ điều kiện
Để thực hiện triển khai Keepalived, hãy chọn tùy chọn Thêm bộ cân bằng tải trong trình đơn Tác vụ cụm, sau đó chuyển đến tab Keepalived.
Tại đây, chọn các nút HAProxy và chỉ định địa chỉ IP ảo sẽ được sử dụng để truy cập cơ sở dữ liệu (hoặc bộ kết nối).
Tại thời điểm này, bạn sẽ có cấu trúc liên kết sau:
Và điều này có nghĩa là:HAProxy + Keepalived -> PgBouncer -> Nút cơ sở dữ liệu PostgreSQL , đó là một cấu trúc liên kết tốt cho Cụm PostgreSQL của bạn.
Tính năng Tự động khôi phục ClusterControl
Trong trường hợp không thành công, ClusterControl sẽ chuyển nút chờ tiên tiến nhất thành nút chính cũng như thông báo cho bạn về sự cố. Nó cũng không thể tái tạo phần còn lại của nút dự phòng từ máy chủ chính mới.
Theo mặc định, HAProxy được cấu hình với hai cổng khác nhau:đọc-ghi và chỉ đọc. Trong cổng đọc-ghi, bạn có nút cơ sở dữ liệu chính (hoặc PgBouncer) của mình trực tuyến và phần còn lại của các nút ở chế độ ngoại tuyến và trong cổng chỉ đọc, bạn có cả nút chính và nút chờ trực tuyến.
Khi HAProxy phát hiện thấy một trong các nút của bạn không thể truy cập được, nó sẽ tự động đánh dấu nó là ngoại tuyến và không tính đến việc gửi lưu lượng đến nó. Việc phát hiện được thực hiện bằng các tập lệnh kiểm tra tình trạng được cấu hình bởi ClusterControl tại thời điểm triển khai. Những điều này sẽ kiểm tra xem các phiên bản đã hoạt động chưa, chúng đang trong quá trình khôi phục hay ở chế độ chỉ đọc.
Khi ClusterControl quảng bá một nút dự phòng, HAProxy đánh dấu nút chính cũ là ngoại tuyến cho cả hai cổng và đặt nút được quảng bá trực tuyến trong cổng đọc-ghi.
Nếu HAProxy đang hoạt động của bạn, được chỉ định một địa chỉ IP ảo mà hệ thống của bạn kết nối, không thành công, Keepalived sẽ tự động di chuyển Địa chỉ IP này sang HAProxy thụ động của bạn. Điều này có nghĩa là hệ thống của bạn sau đó có thể tiếp tục hoạt động bình thường.
Kết luận
Như bạn có thể thấy, có một cấu trúc liên kết PostgreSQL tốt là điều dễ dàng nếu bạn sử dụng ClusterControl và nếu bạn đang tuân theo các khái niệm cơ bản thực hành tốt nhất để nhân rộng PostgreSQL. Tất nhiên, môi trường tốt nhất phụ thuộc vào khối lượng công việc, phần cứng, ứng dụng, v.v., nhưng bạn có thể sử dụng nó làm ví dụ và di chuyển các phần khi bạn cần.