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:
- 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.
- 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.
- 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.