Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Vào ngày thứ hai của Giáng sinh, ObjectRocket đã đưa cho tôi:Hai bản sao PostgresSQL có tính khả dụng cao

Được xuất bản lần đầu vào ngày 12 tháng 12 năm 2019, tại ObjectRocket.com/blog

Các ngày lễ sắp đến và mùa này đánh dấu một năm đánh dấu một cột mốc quan trọng trong lịch sử Rackspace ObjectRocket. (HA) trên dịch vụ ObjectRocket PostgreSQL®. Mỗi cửa hàng chúng tôi cung cấp trên ObjectRocket được xây dựng cho khối lượng công việc sản xuất, yêu cầu HA cho tất cả khách hàng của chúng tôi.

Vào ngày thứ hai của Giáng sinh, ObjectRocket đã đưa cho tôi:Hai bản sao PostgresSQL có tính khả dụng cao

Tại sao HA lại quan trọng?

Nếu thuật ngữ HA không quen thuộc với bạn, hãy cùng đánh giá nhanh tại sao HA lại quan trọng. Trước hết, ba lợi ích chính của HA là:

  • Không hoặc giảm đáng kể thời gian chết
  • Bảo vệ chống mất dữ liệu
  • Tăng hiệu suất cơ sở dữ liệu

Có một số phương pháp để triển khai HA trên các kho dữ liệu và một số công nghệ có sẵn. Tuy nhiên, một thành phần quan trọng của hầu hết mọi giải pháp HA là một bản sao dữ liệu. Điều này có nghĩa là bạn chỉ thấy một tập dữ liệu hoặc cơ sở dữ liệu, nhưng đằng sau hậu trường, có một hoặc nhiều bản sao chính xác của dữ liệu đó. Nếu cơ sở dữ liệu chính, thì chính , trong hầu hết các kế hoạch sao chép, gặp sự cố như lỗi phần cứng, lỗi phần mềm hoặc hỏng, một bản sao có thể thay thế bản chính. Điểm cuối cùng đó liên quan đến thành phần chính thứ hai của hầu hết các hệ thốngHA, một cơ chế chuyển đổi dự phòng tự động (thăng chức hoặc bầu cử, trong các kế hoạch khác). Nhân rộng đảm bảo nhiều chu kỳ sức khỏe có sẵn của dữ liệu. Tuy nhiên, bạn cũng nên sẵn sàng:

  1. Phát hiện các sự cố không mong muốn trên hệ thống chính.
  2. Chọn một bản sao thích hợp để thăng hạng lên hàng chính.
  3. Sửa chữa bản sao chính bị lỗi và tạo bản sao mới (để thay thế bản sao mà bạn đã quảng cáo).

Thành phần cuối cùng, đôi khi được kết hợp với thành phần thứ hai, là một thiết bị để định tuyến các yêu cầu đến đúng nút. Nếu bạn trỏ ứng dụng của bạn đến ứng dụng chính để ghi dữ liệu (phương pháp hay nhất) và ứng dụng chính không thành công, ứng dụng của bạn sẽ không trỏ đến ứng dụng chính mới được thúc đẩy. Một lần nữa, có nhiều cách khác nhau để giải quyết vấn đề này, nhưng phổ biến nhất là sử dụng proxy hoặc bộ cân bằng tải. Chỉ định ứng dụng của bạn tới proxy hoặc bộ cân bằng tải và nó xác định đúng nơi để gửi lưu lượng truy cập của bạn mà không cần trỏ ứng dụng của bạn trực tiếp vào cơ sở dữ liệu máy chủ.

Để gắn kết tất cả lại với nhau, hệ thống chuyển đổi dự phòng tự động và bộ cân bằng tải / proxy hoạt động cùng nhau khi xảy ra chuyển đổi dự phòng. Khi bạn quảng cáo một trang cái mới, proxy hoặc bộ cân bằng tải sẽ chuyển hướng lưu lượng truy cập đến trang cái mới. Không có gì thay đổi trong đơn đăng ký của bạn và bên cạnh những phản hồi tiềm ẩn trong quá trình quảng cáo, ứng dụng thậm chí không cần biết chương trình khuyến mại đã xảy ra. Đây là tổng quan cấp cao về quy trình, bao gồm các thành phần cơ bản. Bây giờ, hãy đi sâu vào công nghệ mà chúng tôi sử dụng cho từng thành phần trong giải pháp của mình.

Các công nghệ chúng tôi sử dụng

Bây giờ chúng tôi đã xem xét các thành phần chính, hãy đi sâu vào cách chúng tôi đang cung cấp từng thành phần trước:

Sao chép

Postgres hỗ trợ nhiều chương trình sao chép nguyên bản. Bạn hiện có thể định cấu hình một hoặc hai bản sao, nhưng chúng tôi sẽ mở rộng các tùy chọn trong tương lai. Một điểm tốt khác của việc nhân rộng là khái niệm đồng bộ không đồng bộ nhân rộng. Với sao chép đồng bộ, bản chính sẽ đợi mỗi bản sao xác nhận rằng quá trình ghi kết thúc trước khi bản chính coi việc ghi hoàn tất. Trong không đồng bộ, kích hoạt chính ghi vào các bản sao nhưng không xác nhận việc hoàn thành của chúng trước khi xác nhận ứng dụng hoặc ứng dụng khách viết. Giải pháp chúng tôi sử dụng cho phép chúng tôi hỗ trợ cả sao chép đồng bộ hàng nghìn lần. Theo mặc định, chúng tôi kích hoạt sao chép đồng bộ và chúng tôi định cấu hình sao chép trong môi trường của mình để xác nhận rằng một bản ghi đã được ghi vào Nhật ký ghi trước (WAL) trên bản sao chính và ít nhất một bản sao. Bạn có thể thay đổi cài đặt cho mỗi giao dịch hoặc phiên.

Chuyển đổi dự phòng và quảng cáo

Có một số công cụ mã nguồn mở và bên thứ ba để cung cấp chức năng chuyển đổi dự phòng và quảng cáo, nhưng chúng tôi đã chọn Patroni vì những đặc điểm vượt trội sau:

  • Hỗ trợ Kubernetes® bản địa: Chúng tôi dựa trên nền tảng mới của mình trên Kubernetes, vì vậy bạn có thể sử dụng một công cụ chỉ cần cắm vào Kubernetes, thay vì cần một trạng thái hoặc cơ chế đồng thuận khác. Tùy chọn này là chìa khóa.
  • Phát triển tích cực và cộng đồng: Cộng đồng xung quanh Patroni cực kỳ tích cực và cho phép cộng tác và phân bổ các bổ sung của riêng chúng tôi khi chức năng phát triển. Ngoài ra, có rất nhiều tài nguyên, từ các cuộc hội đàm và tài liệu đến ví dụ về nhà điều hành từ Zalando , để giúp chúng tôi tìm hiểu công nghệ.
  • Kiến trúc Đơn giản: Nhiều công cụ có sẵn khác yêu cầu tài nguyên chuyên dụng bên ngoài instancesto Postgres xử lý cân bằng tải và xúc tiến chính. Patroni kết hợp với Postgres và sử dụng các thành phần Kubernetes bản địa để xử lý các chức năng khác, vì vậy chúng tôi đã không phân bổ tài nguyên bổ sung cho HA.

Mặc dù quãng đường của bạn có thể khác nhau, nhưng chúng tôi nhận thấy Patroni là một ứng dụng dễ dàng cấu hình và duy trì sự phù hợp tuyệt vời trong môi trường của chúng tôi. Nó định cấu hình sao chép, phát hiện bản quyền bị lỗi, thúc đẩy bản sao, tạo bản sao mới và thậm chí hoạt động với Kubernetes ở phần cuối cùng của quy trình.

Yêu cầu định tuyến

Cuối cùng, Patroni và một công trình Kubernetes bản địa, được gọi là dịch vụ , đại diện cho phần cuối cùng của câu đố. Một dịch vụ inKubernetes hoạt động giống như một proxy định tuyến lưu lượng truy cập dựa trên các nhãn trên một nhóm các vùng chứa (một pod). Patroni gắn nhãn activeprimary với master và Kubernetes chỉ chăm sóc định tuyến lưu lượng cơ sở dữ liệu đến các nhóm có nhãn chính. Hãy nhớ đây là mô tả cấp cao, nhưng trên thực tế đó là cách hoạt động của nó. Quá trình này cũng có thể được mở rộng để cung cấp cổng phụ giúp định tuyến các yêu cầu đọc cơ sở dữ liệu đến các bản sao (để giảm tải cho bản chính).

Đó là tóm tắt nhanh về các công nghệ tại chỗ, nhưng hãy cho chúng tôi biết nếu bạn muốn nghe thêm. Chúng tôi thích nói chuyện cửa hàng với khách hàng của chúng tôi.

Hãy dùng thử ngay bây giờ!

Tạo phiên bản màn hình trong Kiểm soát nhiệm vụ có một phần trong Bước 2 được gọi là Tùy chỉnh phiên bản của bạn . Tại đó, bạn có thể nhấp vào hộp để chuyển sang màu xanh lục cho mũi tên, điều này sẽ thêm các bản sao HA của phiên bản PostgreSQL của bạn. Bạn cũng có thể chọn các bản sao số (một hoặc hai) bằng cách nhấp vào dấu ba chấm (…) ở phía trên bên phải.

Vào ngày thứ hai của Giáng sinh, ObjectRocket đã đưa cho tôi:Hai bản sao PostgresSQL có tính khả dụng cao

Theo mặc định, chúng tôi đề xuất hai bản sao để ngay cả trong thời gian ngừng hoạt động, bạn vẫn có thể dự phòng, nhưng bạn có thể chọn một bản sao.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể nhấp vào Trò chuyện bán hàng để trò chuyện ngay bây giờ và bắt đầu cuộc trò chuyện.