Đồng bộ hóa thời gian thực hai chiều của cây tệp lớn giữa hai máy chủ linux ở xa


21

Theo cây tệp lớn, tôi có nghĩa là khoảng 200k tệp và phát triển mọi lúc. Một số lượng tương đối nhỏ các tệp đang được thay đổi trong bất kỳ giờ nào.

Theo hai chiều, tôi có nghĩa là những thay đổi có thể xảy ra trên một trong hai máy chủ và cần được đẩy sang máy chủ khác, vì vậy rsync có vẻ không phù hợp.

Bởi xa tôi có nghĩa là các máy chủ đều ở trong các trung tâm dữ liệu, nhưng về mặt địa lý cách xa nhau. Hiện tại chỉ có 2 máy chủ, nhưng có thể mở rộng theo thời gian.

Theo thời gian thực, sẽ có một chút độ trễ giữa quá trình đồng bộ hóa, nhưng việc chạy một cron cứ sau 1-2 phút có vẻ không ổn, vì một phần rất nhỏ của các tệp có thể thay đổi trong bất kỳ giờ nào, hãy để một phút.

EDIT : Điều này đang chạy trên VPS vì vậy tôi có thể bị hạn chế về các loại công cụ cấp kernel mà tôi có thể làm. Ngoài ra, các VPS không giàu tài nguyên, vì vậy tôi rất ngại các giải pháp cần nhiều ram (như Gluster?).

Cách tiếp cận tốt nhất / "được chấp nhận" nhất để thực hiện điều này là gì? Điều này có vẻ như là một nhu cầu chung, nhưng tôi chưa thể tìm thấy một cách tiếp cận thường được chấp nhận, điều này thật đáng ngạc nhiên. (Tôi đang tìm kiếm sự an toàn của số đông. :)

Tôi đã đi qua lsyncd để kích hoạt đồng bộ hóa ở cấp độ thay đổi hệ thống tập tin. Điều đó có vẻ thông minh mặc dù không phải là siêu phổ biến, và tôi hơi bối rối bởi các cách tiếp cận lsyncd khác nhau. Chỉ sử dụng lsyncd với rsync, nhưng dường như điều này có thể dễ bị phá vỡ vì tính hai chiều vì rsync không có khái niệm về bộ nhớ (ví dụ: để biết liệu một tệp bị xóa trên A có nên bị xóa trên B hay không hoặc đó là một tệp mới trên B cần được sao chép vào A). Lipync dường như chỉ là một triển khai lsyncd + rsync, phải không?

Sau đó, sử dụng lsyncd với csync2 , như thế này: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Tôi đang nghiêng về phương pháp này, nhưng csync2 hơi kỳ quặc, mặc dù tôi đã làm một thử nghiệm thành công về nó. Tôi hầu hết lo ngại rằng tôi đã không thể tìm thấy nhiều xác nhận của cộng đồng về phương pháp này.

Mọi người ở đây dường như thích Unison rất nhiều, nhưng dường như nó không còn được phát triển tích cực và không rõ ràng rằng nó có một trình kích hoạt tự động như lsyncd.

Tôi đã thấy Gluster được đề cập, nhưng có lẽ quá mức cho những gì tôi cần?

CẬP NHẬT: fyi- Tôi đã kết thúc với giải pháp ban đầu tôi đã đề cập: lsyncd + csync2. Nó dường như hoạt động khá tốt và tôi thích cách tiếp cận kiến ​​trúc của việc các máy chủ được nối rất lỏng lẻo, để mỗi máy chủ có thể tự hoạt động vô thời hạn bất kể chất lượng liên kết giữa chúng.


Những loại thay đổi nào bạn cần xử lý? Tạo ra, xóa, sửa đổi.
tọa

Ngoài ra, bạn có mong đợi xung đột? Có thể sửa đổi cùng một tệp trên cả hai máy chủ?
tọa

Tất cả các thay đổi: sáng tạo, xóa, sửa đổi. Có khả năng xảy ra xung đột, nhưng chúng rất hiếm. Tôi sẽ không phiền nếu tôi đơn giản nhận được một cảnh báo về một cuộc xung đột mà sau đó tôi phải giải quyết bằng tay.
dlo

Câu trả lời:


5

DRBD trong chế độ Chính kép với Proxy là một tùy chọn.


Proxy dường như không phải là nguồn mở hay miễn phí, phải không? Tôi không chắc chắn tôi hiểu hậu quả của việc không có Proxy ở chế độ không đồng bộ: trong thời gian ngừng hoạt động kéo dài, nếu không có Proxy, bộ đệm đầu ra [nhỏ?] Có thể lấp đầy và chúng tôi sẽ mất đồng bộ hóa? Có khó để phục hồi từ đó?
dlo

Xem câu trả lời của tôi ở trên. Tôi không nghĩ proxy là thứ bạn cần. Ngay cả trong thời gian ngừng hoạt động nhỏ, thiết bị drbd-meta sẽ đánh dấu các khối "bẩn" và sẽ chuyển chúng sau khi kết nối được bật lại. Tôi nghĩ rằng sự khác biệt chính giữa chế độ proxy và chế độ không đồng bộ là chế độ không đồng bộ sử dụng bộ đệm tối đa một số MB. Sau đó, nó đồng bộ hóa lại để điền vào bộ đệm một lần nữa. Proxy có thể cho phép bộ đệm lớn hơn (cần thiết nếu bạn có độ trễ lớn hoặc có thể ghi nhanh hơn nhiều cục bộ so với điều khiển từ xa).
Nils

2

Thay vì đồng bộ hóa, tại sao không chia sẻ cùng một hệ thống tệp qua NFS?


2
NFS là khủng khiếp, chỉ là khủng khiếp. Bất cứ điều gì sẽ tốt hơn NFS
AliGibbs

2
Một trong những điểm chính của thiết lập nhiều máy chủ là chuyển đổi dự phòng / dự phòng. Vì vậy, một máy chủ phải có thể tiếp tục mà không cần máy chủ khác.
dlo

Bạn nên đề cập rằng trong câu hỏi của bạn sau đó - không cần bỏ phiếu xuống một câu trả lời hoàn toàn hợp lý!
Bart B

fyi tôi đã không đánh giá thấp nó - ai đó đã làm. Nhưng vâng, tôi nên đề cập đến điều đó để bắt đầu.
dlo

@Bart: Vâng - anh ấy đã đề cập rằng có quyền truy cập đồng thời trên hai trang web xa. Vì vậy, ngay cả khi bạn đưa ra HA-NFS sẽ là một giải pháp tồi, vì một bên sẽ phải chịu độ trễ trong quá trình truy cập NFS. Và tôi cũng không downvote. Nhưng tôi đã là quản trị viên NFS đủ lâu để hỗ trợ AliGibbs. : - /
Nils

2

Việc thực hiện một hệ thống tập tin phân tán có lẽ tốt hơn là hack điều này cùng với các công cụ và tập lệnh, đặc biệt là nếu cụm máy chủ sẽ phát triển. Bạn cũng sẽ có thể xử lý một nút giảm tốt hơn.

Tôi không nghĩ Gluster (hoặc AFS) là quá mức cần thiết.


Gluster cần 1GB ram? gluster.com/community/documentation/index.php/ cấp ... Tôi cũng đang sử dụng VPS, vì vậy tôi không chắc chắn về việc thực hiện thay đổi cấp độ kernel mà AFS có thể yêu cầu. Nhưng tôi bắt đầu thấy rằng một fs phân phối thích hợp là con đường tốt hơn.
dlo

Vâng, xin lỗi tôi đã không nhận ra rằng bạn đang sử dụng máy chủ VPS. Dấu chân bộ nhớ Gluster, cả máy chủ và máy khách, không nhỏ và chúng có thể phát triển đáng kể. DRBD âm thanh phù hợp hơn.

AFS là con đường để đi.
Anthony Giorgio

2

Trong trường hợp của bạn, tôi muốn giới thiệu một sự kết hợp của DRBD trong chế độ chính kép và gfs hoặc ocfs.

Hạn chế của DRBD trong chế độ chính kép là nó sẽ chạy ở chế độ đồng bộ. Nhưng tốc độ ghi dường như không quan trọng ở đây phải không?

Một thay thế cho DRBD có thể là Soft-Raid1 sử dụng nhiều (2+) mục tiêu iSCSI - nhưng tôi thích DRBD hơn với hai nút.


1
Chế độ đồng bộ sẽ rất tệ - tôi không cần nó và tôi sẽ không muốn làm giảm hiệu suất vì các máy chủ được kết nối qua mạng WAN trên khắp các châu lục. Nhưng bạn không thể có dual-chính trong chế độ không đồng bộ?
dlo

Tôi hiện đang sử dụng DRBD 8.3.5 - ở đó bạn phải ở chế độ đồng bộ hóa ("C") để vào chế độ chính kép. Tôi không có kinh nghiệm cá nhân với proxy DRBD nhưng nó có vẻ tương tự như Veritas Volume Replicator - nhưng điều này có thể không phù hợp vì bạn muốn truy cập ghi ở cả hai bên. Chế độ đồng bộ hóa ở cấp độ khối có thể không tệ như bạn nghĩ - có lẽ gfs và / hoặc ocfs có thể đệm ghi.
Nils

Tôi vừa kiểm tra một bài báo tiếng Đức so sánh GFS2 và OCFS2. Từ đó, ít nhất OCFS2 dường như hỗ trợ truy cập hệ thống tệp được đệm. GFS2 được khuyến nghị trong bài viết đó vì nó cũ hơn. Xem tài liệu RedHat trên GFS2 để biết chi tiết về GFS2 - nó sử dụng đệm, quá - nhưng bạn nên sử dụng dirs khác nhau cho phép ghi đồng thời để có được hiệu suất tốt nhất.
Nils

0

Như đã trình bày ở trên, nhiều giải pháp có sẵn, mỗi giải pháp đều có ưu điểm và nhược điểm.

Tôi nghĩ rằng tôi sẽ xem xét việc đặt toàn bộ cây dưới sự kiểm soát phiên bản ( ví dụ Subversion ) và kiểm tra / cập nhật định kỳ từ cả hai máy chủ trong các công việc định kỳ.


0

Vừa kết thúc phần nào của một nhiệm vụ liên quan đến điều tương tự, tôi sẽ đi với ánh hào quang. Tuy nhiên, tôi chưa thực hiện hoặc tìm thấy bất kỳ bài kiểm tra hiệu suất.

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.