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ínhMộ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ụ
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