Hệ thống tệp phân phối theo địa lý với địa phương ưa thích


11

Tôi đang xây dựng một ứng dụng cần phân phối một máy chủ tệp tiêu chuẩn trên một vài trang web qua mạng WAN. Về cơ bản, mỗi trang web cần ghi rất nhiều tệp linh tinh có kích thước khác nhau (một số trong phạm vi 100 MB, nhưng nhỏ nhất) và ứng dụng được viết sao cho va chạm không phải là vấn đề. Tôi muốn có một hệ thống được thiết lập đáp ứng các tiêu chuẩn sau:

  1. Mỗi trang web có thể lưu trữ các tệp trong một "không gian tên" được chia sẻ. Đó là, tất cả các tệp sẽ hiển thị trong cùng một hệ thống tệp.
  2. Mỗi trang web sẽ không gửi dữ liệu qua mạng trừ khi cần thiết. Tức là, sẽ có bộ nhớ cục bộ ở mỗi bên của mạng LAN sẽ được "hợp nhất" vào cùng một hệ thống tệp logic.
  3. Linux & miễn phí ($$$) là một Plus

Về cơ bản, một cái gì đó như chia sẻ NFS trung tâm sẽ đáp ứng hầu hết các yêu cầu, tuy nhiên nó sẽ không cho phép dữ liệu được ghi cục bộ ở lại cục bộ. Tất cả dữ liệu từ các phía xa của mạng LAN sẽ được sao chép cục bộ mọi lúc.

Tôi đã xem xét Luster và đã thực hiện một số thử nghiệm thành công với nó, tuy nhiên, nó dường như phân phối các tệp khá đồng đều trên bộ lưu trữ phân tán. Tôi đã tìm hiểu kỹ tài liệu và không tìm thấy bất cứ thứ gì tự động "thích" bộ nhớ cục bộ hơn bộ nhớ từ xa. Ngay cả một cái gì đó đi với lưu trữ độ trễ thấp nhất sẽ tốt. Nó sẽ hoạt động hầu hết thời gian, đáp ứng yêu cầu của ứng dụng này.


Một số câu trả lời cho một số câu hỏi được hỏi dưới đây:

  • Các nút máy chủ: 2 hoặc 3 để bắt đầu. Mỗi máy chủ sẽ có hàng tá máy khách đọc / ghi đồng thời kết nối.
  • Cấu trúc liên kết mạng là đầy đủ và đáng tin cậy. (tập đoàn lớn, chi phí không giới hạn như băng đỏ)
  • Chuyển đổi dự phòng của khách hàng: Tôi thực sự đã không nghĩ đến việc chuyển đổi dự phòng của khách hàng (chủ yếu là do ứng dụng hiện tại của chúng tôi không làm điều này tại một trang web). Tôi cho rằng câu trả lời thực tế là các máy chủ tại mỗi địa điểm phân phối theo địa lý dự kiến ​​sẽ là những điểm thất bại duy nhất cho các khách hàng mà họ đang phục vụ. Mặc dù, nếu bạn đang suy nghĩ về một cái gì đó cụ thể ở đây, tôi nghĩ rằng nó sẽ khá nguyên bản cho cuộc thảo luận.
  • Roll-my-own: Tôi đã nghĩ về rsync / unison, tuy nhiên tôi sẽ cần khá nhiều logic lạ mắt để làm cho phần "động" của công việc này hoạt động trơn tru. Tức là, tập tin có vẻ là cục bộ, nhưng chỉ được lấy theo yêu cầu.
  • MS-DFS: Nó chắc chắn dường như là thứ tôi nên xem xét. Vấn đề chính của tôi có thể không chắc chắn về cấu hình / độ tin cậy / hiệu suất của máy chủ NFS trên Windows, vì nhiều máy khách kết nối là máy khách NFS.

Yêu cầu req cứng của Linux và miễn phí cho một Plus.
dpb

Câu trả lời:


5

Xấu hổ về yêu cầu Linux. Đây chính xác là những gì Windows DFS làm. Kể từ 2003 R2, nó cũng thực hiện trên cơ sở cấp khối.


Chris, cảm ơn vì câu trả lời. Tôi nghĩ rằng DFS là khá nhiều những gì tôi đang tìm kiếm, mặc dù trên Windows. Chắc chắn một cái gì đó cho tôi nhìn vào.
dpb

DFS không hoạt động trên cơ sở cấp khối. Dịch vụ nhân rộng là không giao dịch trên cơ sở tập tin.
eckes

4

Vài câu hỏi:

  • Có bao nhiêu nút "máy chủ" bạn đang nghĩ về việc tham gia vào việc này?

  • Cấu trúc liên kết mạng như thế nào - trung tâm và nói, toàn lưới? Nó đáng tin cậy như thế nào?

  • Bạn có mong đợi các máy khách chuyển sang một máy chủ không cục bộ về mặt địa lý trong trường hợp máy chủ cục bộ bị lỗi không?

Windows DFS-R chắc chắn sẽ là thứ bạn đang tìm kiếm, mặc dù có một số chi phí cấp phép có khả năng lớn.

Bạn nói rằng xung đột không phải là vấn đề và bạn không cần trình quản lý khóa phân tán, vì vậy bạn có thể thực hiện việc này với các công cụ người dùng như rsync hoặc Unison và chỉ xuất tập tin kết quả của tệp với NFS cho các máy khách cục bộ. Thật là xấu, và bạn sẽ phải xử lý một số loại hệ thống để xử lý việc tạo ra một cấu trúc liên kết sao chép và thực sự chạy các công cụ người dùng, nhưng nó chắc chắn sẽ rẻ khi chi phí cấp phép đi.


Cảm ơn câu trả lời Evan, tôi đã cập nhật câu hỏi của tôi với dữ liệu bạn đang yêu cầu. Tôi quan tâm đến ý tưởng unison / rsync của bạn, nhưng không hoàn toàn thấy khía cạnh động sẽ được xử lý như thế nào. (Tôi không có nhiều kinh nghiệm với Unison, chỉ rsync).
dpb

@dpb: Tôi không hiểu ý nghĩa của yêu cầu đó trong lần chỉnh sửa ban đầu của bạn. Microsoft DFS-R cũng sẽ không làm điều đó. Hành vi truy xuất theo yêu cầu sẽ yêu cầu một cái gì đó "hoạt động" trong hệ thống tệp để chặn các yêu cầu đọc đối với các cuống tệp không có dữ liệu cục bộ của họ, lưu dữ liệu và thực hiện việc đọc. Tôi không biết về bất kỳ tập tin phân phối theo địa lý nào với hành vi đó - nó giống như một HSM.
Evan Anderson

Đối với những người không biết gì như tôi: en.wikipedia.org/wiki/HVELical_st Storage_man Quản lý . Cảm ơn một lần nữa @Evan. Tôi gần như không quan tâm đến việc sắp xếp lại vị trí lưu trữ bên dưới theo cách năng động như chọn ban đầu theo cách năng động. Tôi nghĩ rằng HSM nghe có vẻ rất tuyệt, nhưng phần thú vị của nó là quá mức cần thiết cho những gì tôi đang làm.
dpb

3

Bạn đã xem xét AFS chưa?

Hệ thống tệp Andrew (AFS) là một hệ thống tệp được phân tán, sử dụng một bộ máy chủ đáng tin cậy để hiển thị một không gian tên tệp trong suốt, đồng nhất vị trí cho tất cả các máy trạm.

Theo tôi hiểu, hầu hết các phát triển gần đây đã đứng sau dự án OpenAFS .

Tôi không thể giả vờ đủ quen thuộc với dự án để biết tính năng "địa phương ưa thích" có khả dụng hay không, nhưng nếu không thì nó có vẻ phù hợp.



1

Bạn đã xem các hồ bơi OST trong Luster chưa?

Nó sẽ không tự động nhưng với các nhóm OST, bạn có thể gán các thư mục / tệp cho các OST / OSS cụ thể - về cơ bản là phân bổ lưu trữ dựa trên chính sách, thay vì phân chia vòng / mặc định trên các OST.

Vì vậy, bạn có thể thiết lập một thư mục trên mỗi trang và gán thư mục đó cho các OST cục bộ cho trang đó, điều này sẽ hướng tất cả I / O đến các OST cục bộ. Nó vẫn sẽ là một không gian tên toàn cầu.

Có rất nhiều công việc đang tiến hành cải thiện Luster qua các kết nối WAN (máy chủ bộ nhớ đệm cục bộ và những thứ tương tự) nhưng tất cả vẫn đang được AFAIK phát triển mạnh.


Cảm ơn @James, đó gần như chính xác là những gì tôi đang tìm kiếm. Tôi không quan tâm đến không gian tên được trộn ở cấp cao nhất (gán các thư mục cụ thể cho nhóm OST), nhưng có lẽ điều đó sẽ ổn. Ít nhất là tốt để biết trường hợp sử dụng và giới hạn là gì trong Luster. Cảm ơn một lần nữa!
dpb

1

Có thể là NFS nhưng với Cachefs trên các máy chủ ứng dụng sẽ hoàn thành phần mục tiêu của bạn. Theo tôi hiểu, mọi thứ được viết vẫn sẽ đi đến máy chủ trung tâm, nhưng ít nhất các lần đọc có thể bị lưu vào bộ nhớ cache cục bộ. Điều này có khả năng có thể mất rất nhiều thời gian trì hoãn đọc tùy thuộc vào cách sử dụng của bạn.

Ngoài ra, mabye UnionFS đáng để xem xét. Với điều này, tôi nghĩ rằng mỗi vị trí sẽ là một bản xuất NFS, và sau đó bạn có thể sử dụng UnionFS tại mỗi vị trí để có bản đó và tất cả các bản gắn NFS khác từ vị trí xuất hiện dưới dạng một hệ thống tệp. Tôi không có kinh nghiệm với điều này mặc dù.


Cảm ơn @Kyle, tôi không biết về UnionFS, cùng với bộ nhớ đệm tích cực, NFS có thể là một giải pháp tốt cho việc này. Tôi nghĩ rằng có thể gặp nhiều rắc rối hơn khi duy trì khi số lượng địa điểm tăng lên, nhưng tôi sẽ xem xét trước khi quyết định.
dpb

0

Bạn có thể xem xét DRBD để sao chép các đĩa. http://www.drbd.org/ . Đây là một giải pháp có tính sẵn sàng cao của linux mà giờ đây nó đã được đưa vào Kernel.

Tuy nhiên, điều này có một số hạn chế:

  1. Chỉ có hai nút có thể được thiết lập
  2. WAN có thể quá không đáng tin cậy để giữ cho DRBD mạnh mẽ.

Ý tưởng thú vị, tuy nhiên tôi không nghĩ rằng nó sẽ cung cấp cho ứng dụng của tôi bất cứ thứ gì so với các hệ thống tệp phân tán khác. (ánh, ánh kim, vv). Cảm ơn bạn đã đăng ...
dpb

0

Nếu bạn muốn giữ cho nó đơn giản thì hãy xem rsync, giải quyết rất nhiều vấn đề và có thể được viết kịch bản.


0

Kiểm tra trên chironfs .

Có lẽ nó có thể làm những gì bạn muốn, trên cơ sở hệ thống tập tin.


0

Btsync là một giải pháp khác mà tôi đã có kinh nghiệm tốt. Nó sử dụng giao thức BitTorrent để chuyển các tệp, do đó, càng có nhiều máy chủ thì bạn càng nhanh đồng bộ hóa các tệp mới.

Không giống như giải pháp dựa trên rsync, nó phát hiện khi bạn đổi tên các tệp / thư mục và đổi tên chúng trên tất cả các nút thay vì xóa / sao chép.

Các máy khách boutync của Yout sau đó có thể chia sẻ các thư mục trên mạng cục bộ.

Nhược điểm duy nhất tôi tìm thấy (so với MS DFS) là nó sẽ không phát hiện một bản sao tệp cục bộ. Thay vào đó, nó sẽ diễn giải nó như một tập tin mới được tải lên cho tất cả các đồng nghiệp.

Cho đến nay btsync dường như là giải pháp đồng bộ hóa tốt nhất và nó có thể được cài đặt trên các thiết bị Windows, Linux, Android và ARM (ví dụ: NAS)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.