2013-08-19 21 views
6

Tôi đang cố lập kế hoạch môi trường cơ sở dữ liệu mới từ đầu và tôi tự hỏi cần bao nhiêu máy chủ và hiệu suất của chúng.Phần cứng cho môi trường MongoDB thừa + thừa

Vì tôi muốn nó nhanh, tôi đang xem xét sử dụng bộ nhớ SSD và tải RAM. Tuy nhiên, bộ nhớ flash là tốn kém và chiếm phần lớn nhất của chi phí của một máy chủ. Vì vậy, toàn bộ hệ thống nên được thiết lập để mở rộng theo chiều ngang từ đầu, vì vậy tôi có thể thêm nhiều nút hơn khi tôi cần thêm dung lượng/hiệu suất.

Để bắt đầu, tôi nghĩ đến việc sử dụng 2 mảnh, mỗi mảnh bao gồm một bản chính và một bản sao-nô lệ cho dự phòng. Tài liệu MongoDB gợi ý sử dụng 1 master và 2 slave, nhưng tôi e rằng sẽ không nằm trong ngân sách có sẵn, vì mỗi máy chủ này sẽ được trang bị khoảng 200 GB RAM và SSD 6x400 GB như Raid 10.

Khi sử dụng phân đoạn, nó cũng được đề xuất sử dụng 3 máy chủ cấu hình để không an toàn/tính khả dụng cao. Tương tự như trên, tôi đang nghĩ 1 bậc thầy và 1 nô lệ như một sự khởi đầu.

  • Bạn muốn giới thiệu loại phần cứng nào để đặt máy chủ cấu hình ? Chúng có nên được thực hiện không kém phần nào như các nút mảnh trong các điều khoản của CPU/bộ nhớ/đĩa cứng trong các điều khoản ? Hoặc tôi có thể đặt chúng trên ảo hóa hoặc trên phần cứng rẻ hơn không?
  • Thiết lập mà tôi đã mô tả có hợp lý không? Làm thế nào về tỷ lệ RAM so với đĩa cứng trên các nút phân đoạn? Tại thời điểm này nó có lẽ sẽ dễ dàng hơn và rẻ hơn để chỉ cần đặt hai lần số đĩa thành 1 mảnh (1 master, 1 slave) và bỏ qua sharding cho đến khi tôi thực sự cần nó. Tuy nhiên (như đã đề cập ở trên) - hệ thống sẽ sẵn sàng để sharding ngay từ đầu, bởi vì nhu cầu lưu trữ có thể thay đổi qua đêm. Hoặc là nó có thể thiết lập tất cả lên, nhưng có nó chạy trên 1 mảnh chỉ cho bây giờ?
  • Vì tôi chỉ định sử dụng 2 thay vì 3 máy chủ cho tính khả dụng cao/không an toàn, tôi cũng có thể cần các trọng tài. Họ có cần phần cứng chuyên dụng không? Hoặc tôi có thể sử dụng một trọng tài trong một ảo-mashine phục vụ config-máy chủ và shard-nút? Hoặc đang sử dụng 3 máy chủ riêng biệt cho dự phòng một phải tuyệt đối theo ý kiến ​​của bạn?
+0

Bộ nhớ SSD? Tôi đoán bạn có nghĩa là một số loại lai, nơi trao đổi được sử dụng trên SSD là tốt. Không, bộ làm việc của bạn phải phù hợp với RAM, SSD sẽ giúp bạn khi bạn cần nhấn đĩa. Bộ nhớ flash nên thực sự khá rẻ với hầu hết các nhà cung cấp, SSD nên đắt tiền.Tại sao yyou cần một máy chủ khổng lồ như vậy ?? Ngoài ra tất cả các thành viên không cần phải mạnh mẽ như các máy có thể nhận được hoạt động. Các máy chủ cấu hình có thể ngồi trên phần cứng hàng hóa xương trần, chúng chỉ lưu trữ các thiết lập cho cụm của bạn. Các trọng tài không cần phần cứng chuyên dụng – Sammaye

+0

Một trọng tài không có gì khác hơn là một mognod trống rỗng, một câu hỏi lý do tại sao bạn cần một máy chủ khổng lồ như vậy, tôi có nghĩa là bạn đang có kế hoạch có 200GB làm việc trên ngân sách này ?? Ngoài ra bạn có thể tìm thấy một vài máy chủ nhỏ hơn tốt hơn – Sammaye

+0

Ngoài ra máy chủ cấu hình không được phục vụ bởi trọng tài, chúng được kết nối với hai điều hoàn toàn khác nhau, một là nhân rộng và khác đang sharding. Trong thực tế, tôi đọc bạn dường như nhầm lẫn sharding và nhân rộng hoàn toàn – Sammaye

Trả lời

4

Đá trên. Âm thanh như một thiết lập tuyệt vời. Với các lựa chọn cấu hình của bạn, tôi không thể tưởng tượng một ngân sách hạn chế lựa chọn của bạn quá nhiều.

  • Bạn sẽ không cần máy chủ vật lý chuyên dụng cho máy chủ định cấu hình. Chúng chạy khá nhẹ. Bạn sẽ cần độ trễ thấp giữa mongos và các máy chủ cấu hình của mình. Bạn sẽ luôn luôn muốn chắc chắn rằng các máy chủ là đáng tin cậy, và chuẩn bị cho thảm họa. Đảm bảo bạn kiểm tra kỹ các thủ tục sao lưu cho một môi trường được phân đoạn. Các bản sao lưu yêu cầu sự phối hợp giữa các mảnh di chuyển của một cụm bị phân mảnh. Nếu có thể, hãy chạy các máy chủ cấu hình trên các máy chủ ảo trong cùng một trung tâm dữ liệu.

  • Có, phần cứng bạn mô tả có ý nghĩa nếu bạn định chạy nhiều phân đoạn trên một máy duy nhất. Một MongoDB đơn trên máy mạnh mẽ đó sẽ để máy hầu như không hoạt động. Một quá trình mongod đơn lẻ không thể sử dụng nhiều RAM, I/O hoặc CPU. Bạn sẽ muốn "lõi mảnh vỡ" các máy chủ. Tại MongoHQ, chúng tôi thực hiện điều này bằng cách chạy mỗi mongod trong một vùng chứa, mà chúng ta có thể tách biệt với các phiên bản khác trên cùng một máy. Với thông số kỹ thuật của bạn, bạn có thể chạy tới 10 phân đoạn trên một máy chủ hoặc nhiều hơn nếu bạn muốn kéo dài các máy chủ.

  • Bạn có thể bắt đầu điều này với một mảnh duy nhất và di chuyển đến cụm bị phân đoạn sau đó. Đây là cách tiếp cận được khuyên dùng của chúng tôi để sharding: không shard cho đến khi bạn phải. Bằng cách trì hoãn sharding, bạn tăng tính linh hoạt của mình để thực hiện các thay đổi đối với hệ thống của mình. Khi sharding được đặt ra, bạn đã cam kết một con đường cụ thể, không có sự linh hoạt (điều đó là ổn khi bạn biết tương lai). Bằng cách trì hoãn sharding, bạn không có sự cân bằng.

  • Các trọng tài không cần phần cứng chuyên dụng. Bạn có thể chạy chúng trên các máy ảo. Những điều này không yêu cầu cùng một mức độ yêu cầu sao lưu, nhưng nên có thời gian tăng tốt.

  • Sử dụng 3 máy chủ không phải là yêu cầu về thời gian hoạt động vững chắc. Tuy nhiên, khi một máy chủ lưu trữ dữ liệu bị hỏng trong vài giờ, bạn sẽ được chuyển xuống một máy chủ dữ liệu duy nhất. Trong khi xuống hạng đến máy chủ dữ liệu duy nhất, máy chủ lưu trữ duy nhất sẽ hoạt động tốt. Bởi vì bạn chỉ có một giây dữ liệu đang chạy, bạn có nguy cơ bị cúp cao hơn. Điều đó đang được nói, 2 nút cộng với trọng tài là không sao đối với hầu hết các trường hợp sử dụng và sẽ vẫn tiếp tục nếu một trong các nút dữ liệu không thành công.

Hy vọng điều này sẽ hữu ích! Chúng tôi chạy các cấu hình tương tự tại MongoHQ và rất hài lòng với mức hiệu suất mà chúng tôi nhận được từ máy chủ.

+0

Trong khi xuống hạng đến một máy chủ duy nhất bạn phải infact can thiệp bằng tay để cho phép các bản sao thiết lập để chọn một tiểu học từ một bộ thành viên 2/3 sin phần lớn là không trực tuyến (50 % không được tính là đa số) hay bất kỳ sự cố ngừng hoạt động nào sẽ dẫn đến sự can thiệp thủ công đối với người dùng phần – Sammaye

+0

Làm cách nào để "tích hợp lõi" này hoạt động chính xác - bằng cách ảo hóa? Số lượng RAM tối đa mà một chiếc máy bay mong muốn có thể sử dụng là bao nhiêu? – user1809800

+1

@ user1809800 Nó sẽ sử dụng nhiều như hệ điều hành cho phép nó, tôi đã có MongoDB dễ dàng phân bổ 100GB cho việc sử dụng. Mặc dù điều đó không có nghĩa là nó thực sự sử dụng nhiều, nó chỉ có sẵn sàng để sử dụng – Sammaye

1

Tôi sẽ đặt một số suy nghĩ ở đây.

Câu trả lời này là khá nhiều vô dụng mà không biết thiết lập của bạn làm việc tuy nhiên, có thể nó có thể tạo ra một số gợi ý.

Bạn muốn giới thiệu loại phần cứng nào?

Máy chủ cấu hình, mặc dù tốt hơn là trên phần cứng của riêng mình (máy chủ, không phải máy ảo) có thể chạy dễ dàng trên cơ sở phần cứng hàng hóa nhất, bạn không cần bất kỳ điều gì ưa thích. Tất cả những gì họ làm là lưu trữ cấu hình bộ của bạn và thậm chí sau đó chúng không được sử dụng mọi lúc, các mongos s sẽ lưu lại cấu hình cụm cho các khoảng thời gian.

Hoặc tôi có thể đặt chúng vào ảo hóa hoặc trên phần cứng rẻ hơn không?

Tôi sẽ không đặt chúng vào ảo hóa vì điều đó thường biểu thị rằng chúng là một trong hai vật lý trên cùng một máy chủ hoặc đóng. Bạn cần phải đặt chúng trên các máy chủ dự phòng thực sự tuy nhiên, có bạn có thể nhận được phần cứng giá rẻ cho họ.

Đảm bảo bạn quản lý một mạng lưới phù hợp giữa các phân đoạn và máy chủ cấu hình của bạn phải là kiến ​​thức tự nhiên.

Thiết lập tôi đã mô tả có hợp lý không?

Không có ý tưởng nào mà không hiểu về bộ làm việc của bạn, tuy nhiên, theo âm thanh của nó, bạn nghĩ MongoDB PHẢI TẤT CẢ phù hợp với bộ nhớ. Điều này là không đúng sự thật, chỉ có bộ làm việc (http://docs.mongodb.org/manual/faq/storage/#what-is-the-working-set) có thể là một phần tuyệt đối của dữ liệu của bạn trong một khung thời gian cụ thể (thường là 10 phút) nếu bạn chơi đúng thẻ.

Tỷ lệ RAM so với ổ cứng trên nút phân đoạn như thế nào?

Một chút, MongoDB có thể sử dụng máy chủ đó nhưng tôi đặt cược nó sẽ không hoạt động gần hết thời gian, tôi đặt cược bạn chưa thực sự tính toán quyền làm việc của bạn.

Hiện tại, có lẽ sẽ dễ dàng và rẻ hơn để đặt gấp đôi số đĩa thành 1 phân đoạn (1 chủ, 1 nô lệ) và bỏ qua phần cho đến khi tôi thực sự cần.

Có. Đó là một cược an toàn nếu bạn cần những đĩa đó. Tôi sẽ đi xa như để nói rằng bạn thực sự nên xem xét liệu bạn có làm hay không.

hệ thống nên sẵn sàng cho sharding từ đầu

Như đã nói trong câu trả lời ở trên, bạn có thể tạo 1 thành viên bộ sharded và chỉ mở rộng quy mô từ đó.

Vì tôi chỉ định sử dụng 2 thay vì 3 máy chủ để có tính khả dụng cao/không an toàn, tôi cũng có thể cần người phân xử.

Có, sử dụng 3 máy chủ thường khá vững chắc để tự động chuyển đổi dự phòng, điều quan trọng ở đây. Nếu phần lớn các máy chủ chuyển đổi dự phòng (50% trở lên) thì bạn sẽ phải tự sửa bộ bản sao của mình.

Điều này có nghĩa là trên hai môi trường máy chủ cho mỗi phân đoạn bạn sẽ không có tự động chuyển đổi dự phòng và MongoDB sẽ không được lấp đầy một trong những lợi thế cốt lõi: tự động chuyển đổi dự phòng (đây cũng là mục đích cốt lõi của bộ repilica ...) .

Không chỉ điều này nhưng người dùng của bạn phải chờ cho đến khi bạn nhận được vòng để sửa chữa bộ đó, tôi chắc chắn điều này, trong chính nó, giữ vấn đề.

Chúng có cần phần cứng chuyên dụng không?

Không, như đã nói trong nhận xét của tôi (và trong tài liệu), các trọng tài không cần chạy trên phần cứng chuyên dụng. Tuy nhiên, điều này đang được nói rằng nó có thể hữu ích, đặc biệt là nếu bạn muốn tạo dự phòng chuyển đổi dự phòng bằng cách tách các trọng tài ra một trung tâm dữ liệu khác.

Trọng tài có thể chạy trên phần xương trần của máy chủ vì vậy nếu bạn quyết định tách nó ra thì không bận tâm đến 200 GB RAM và ổ SSD 6x400 GB. Chỉ cần có được một ... một chiếc điện thoại di động có thể chạy một cách kỹ thuật một trọng tài (nếu MongoDB hỗ trợ Android và iOS).

Hoặc đang sử dụng 3 máy chủ riêng biệt để dự phòng phải tuân thủ tuyệt đối theo ý kiến ​​của bạn?

Nó không phải là, nhưng bất cứ điều gì ít hơn, như đã nói ở trên, sẽ gây ra vấn đề trong trường hợp chuyển đổi dự phòng.

Một tùy chọn tốt là thực sự đặt trọng tài của bạn lên (các) máy chủ ứng dụng của bạn, thậm chí có thể có một máy chủ ứng dụng.

Các vấn đề liên quan