Trọng tài MongoDB

Bộ bản sao MongoDB cung cấp một số tính năng mà hầu hết người dùng MongoDB sẽ muốn tận dụng. Trên hết, chúng tương đối dễ cài đặt. Tuy nhiên, những người lần đầu tiên thường ngần ngại khi nói đến vai trò của trọng tài. Biết liệu bạn có cần một trọng tài hay không rất đơn giản. Hiểu tại sao lại quan trọng

TL; DRBạn cần một trọng tài nếu bạn có số phiếu bầu chẵn. Là một phần mở rộng cho điều này, nhiều nhất bạn chỉ nên có 1 trọng tài. Nếu bạn không chắc mình có bao nhiêu phiếu bầu, thì nó có thể giống với số lượng máy chủ trong bộ bạn có (bao gồm nô lệ, ẩn, trọng tài)

Bầu cử và đa số

Khi máy chủ chính không khả dụng, một cuộc bầu cử sẽ được tổ chức để chọn một máy chủ chính mới từ những máy chủ vẫn khả dụng đó. Một trong những điểm quan trọng cần hiểu là cần phải có đa số để bầu ra bầu cử sơ bộ mới. Không chỉ phần lớn từ các máy chủ có sẵn, mà phần lớn từ tất cả các máy chủ trong bộ

Ví dụ: nếu bạn có 3 máy chủ, A (chính), B và C thì sẽ luôn cần 2 máy chủ để chọn máy chủ chính mới. Nếu A(p) đi xuống, thì B và C có thể và sẽ bầu cử sơ bộ. Tuy nhiên, nếu B cũng đi xuống, C sẽ không bầu chọn chính vì nó sẽ chỉ nhận được 1/3 số phiếu bầu (trái ngược với 2/3 cần thiết)

Nói cách khác, bộ bản sao 3 máy chủ có thể chịu được một lỗi duy nhất. Một bộ bản sao 5 máy chủ có thể chịu được 2 máy chủ bị lỗi (3/5 là đa số). Bộ bản sao 7 máy chủ có thể tồn tại sau 3 máy chủ bị lỗi (4/7)

Chia tách và ràng buộc mạng

Để hiểu điểm mấu chốt khác, sẽ hữu ích nếu chúng ta thay đổi quan điểm của mình từ suy nghĩ về việc máy chủ ngừng hoạt động sang suy nghĩ về sự phân chia mạng. Gì?

Bạn thấy đấy, khi bạn nghĩ đến việc máy chủ gặp sự cố, thật hợp lý khi mong đợi bất kỳ máy chủ nào còn lại được bầu chọn - ngay cả khi không có đa số. Thay vì các máy chủ ngừng hoạt động, hãy xem xét điều gì sẽ xảy ra nếu tất cả các máy chủ vẫn hoạt động nhưng không thể nhìn thấy nhau. Hãy xem một ví dụ

Giả sử chúng ta có 4 máy chủ - đại diện cho số phiếu bầu [ác] chẵn. A, B, C và D. AB ở trong một trung tâm dữ liệu (hoặc vùng khả dụng) trong khi CD ở một trung tâm khác. Bây giờ, liên kết giữa hai trung tâm dữ liệu đã chết. Chuyện gì sẽ xảy ra? . Điều này sẽ gây ra xung đột dữ liệu (hai máy chủ sẽ chấp nhận ghi)

Vì vậy, hãy giới thiệu một trọng tài (E) và cùng với đó là số phiếu bầu không đồng đều. Giờ đây, mỗi máy chủ đều biết rằng tập hợp được tạo thành từ 5 phiếu bầu và do đó, cần có 3 phiếu bầu để bầu cử sơ bộ mới. Bất kể nhóm E kết thúc với (ABE hoặc CDE) thì một cuộc bầu cử sơ bộ sẽ được bầu và quan trọng hơn, bất kỳ nhóm E nào không kết thúc sẽ không thể bầu cử sơ bộ

Điều gì xảy ra nếu AB, CD và E chia ba đường?

Máy chủ riêng biệt?

Mọi người thường tự hỏi liệu trọng tài có thể chạy trên cùng một hộp với một trong các quy trình chính của mongod không? . Hãy tưởng tượng chúng ta có AB và C trong đó B là trọng tài chạy trên cùng một máy chủ với A. Nếu máy chủ đó ngừng hoạt động, bạn đã mất phần lớn. Nói cách khác, trong thiết lập này, nếu máy chủ bị hỏng, bạn không có dự phòng. Tuy nhiên, nếu C đi xuống, AB có thể và sẽ vẫn là chính (và nếu bạn nghĩ rằng bạn chỉ có thể đưa trọng tài thứ 2 vào C, thì bài viết này đã khiến bạn thất bại thảm hại và tôi rất xin lỗi vì đã làm mất thời gian của bạn)

Trọng tài không lưu trữ bất kỳ dữ liệu nào và là một quy trình nhẹ. Phiên bản vi mô EC2 là quá đủ mạnh

Sự kết luận

Điều quan trọng nhất là có số phiếu không đồng đều. Biết được điều này, rõ ràng là bạn muốn có 0 trọng tài hoặc 1. nhưng không bao giờ, hơn bao giờ hết

Điều quan trọng là phải hiểu rằng cuộc bầu cử không phụ thuộc vào phần lớn các máy chủ có sẵn, mà phụ thuộc vào tất cả các máy chủ trong nhóm. Bản sao 3 máy chủ sẽ không chịu được 2 máy chủ bị lỗi. Suy nghĩ về sự phân chia mạng trong bối cảnh các trung tâm dữ liệu riêng biệt giúp tôi hình dung điều này

Trong một số trường hợp (chẳng hạn như khi bạn có một bản chính và bản phụ, nhưng hạn chế về chi phí không cho phép thêm một bản phụ khác), bạn có thể chọn thêm một người phân xử vào bộ bản sao của mình. Trọng tài viên tham gia

cuộc bầu cử sơ bộ nhưng trọng tài không có bản sao của bộ dữ liệu và không thể trở thành trọng tài chính

Một trọng tài có chính xác

1 phiếu bầu cử. Theo mặc định, trọng tài có quyền ưu tiên 0

Thay đổi trong phiên bản 3. 6. Bắt đầu từ MongoDB 3. 6, trọng tài có quyền ưu tiên 0. Khi bạn nâng cấp một bản sao được đặt thành MongoDB 3. 6, nếu cấu hình hiện tại có trọng tài ưu tiên 1, MongoDB 3. 6 cấu hình lại trọng tài để có quyền ưu tiên 0

Quan trọng

Không chạy trọng tài trên các hệ thống cũng lưu trữ các thành viên chính hoặc phụ của bộ bản sao

Để thêm người phân xử, hãy xem Thêm người phân xử vào Bộ bản sao

Thí dụ
Trọng tài MongoDB

Ví dụ: trong tập hợp bản sao sau với 2 thành viên mang dữ liệu (chính và phụ), một trọng tài cho phép tập hợp có số phiếu bầu lẻ để hòa

Trọng tài MongoDB là gì?

Trọng tài là các phiên bản mongod là một phần của bộ bản sao nhưng không chứa dữ liệu (i. e. không cung cấp dự phòng dữ liệu). Tuy nhiên, họ có thể tham gia bầu cử. Trọng tài có yêu cầu tài nguyên tối thiểu và không yêu cầu phần cứng chuyên dụng.

Bản sao tối thiểu được đặt trong MongoDB là gì?

Cấu hình khuyến nghị tối thiểu cho bộ bản sao là bộ bản sao ba thành viên với ba thành viên mang dữ liệu. một thành viên chính và hai thành viên phụ . Trong một số trường hợp (chẳng hạn như bạn có một chính và một phụ nhưng các hạn chế về chi phí không cho phép thêm một phụ khác), bạn có thể chọn bao gồm một trọng tài.

Tính sẵn sàng cao trong MongoDB là gì?

MongoDB là một trong những cơ sở dữ liệu như vậy có thể cung cấp tính sẵn sàng cao cho cơ sở dữ liệu MongoDB bằng cách sử dụng các tính năng như phân đoạn và sao chép . Nếu hệ thống gặp sự cố hoặc phần cứng hoặc phần mềm gặp phải bất kỳ sự cố nào, quy trình sao chép trong cơ sở dữ liệu sẽ giúp bạn khôi phục và sao lưu hệ thống của mình.

Thành viên ẩn trong MongoDB là gì?

Thành viên ẩn duy trì bản sao tập dữ liệu của thành viên chính nhưng ẩn đối với ứng dụng khách . Các thành viên ẩn phù hợp với khối lượng công việc với các kiểu sử dụng khác với các thành viên khác trong bộ bản sao. Thành viên ẩn phải luôn là thành viên ưu tiên 0 nên không thể trở thành chính.