Tôi đã tự hỏi nếu có thể phản chiếu hai máy chủ, như bạn có thể tải tệp lên một máy chủ và họ sẽ đẩy sang máy chủ khác, v.v. thiết lập (Nhưng điều đó cũng sẽ rất tuyệt!)
Tôi đã tự hỏi nếu có thể phản chiếu hai máy chủ, như bạn có thể tải tệp lên một máy chủ và họ sẽ đẩy sang máy chủ khác, v.v. thiết lập (Nhưng điều đó cũng sẽ rất tuyệt!)
Câu trả lời:
Nó phụ thuộc rất nhiều vào công việc trong tầm tay.
Tại sao bạn cần phản chiếu tập tin. Bạn có muốn cập nhật một cái gì đó như một trang web hoặc kho lưu trữ nội dung, nơi thường được cập nhật định kỳ. Hay bạn cần đồng bộ hóa dữ liệu theo thời gian thực?
Đối với phản chiếu không đồng bộ định kỳ của các tệp, thường cần có Khu vực tổ chức mà bạn tải lên tất cả dữ liệu của mình. Và từ nơi bạn phân phối nó cho Máy chủ. Trong trường hợp của bạn - với hai máy chủ - bạn có thể tạo một số tệp phân tầng trên srv1 đến nơi bạn chuyển dữ liệu (qua FTP, NFS, DAV, SFTP, v.v.) và sau đó có một cronjob rsync các tệp vào thư mục "trực tiếp" của srv1 và srv2. Cách dễ nhất để sử dụng rsync trong trường hợp đó là tạo cặp khóa ssh mà bạn sẽ sử dụng để truyền dữ liệu và được ủy quyền trên tất cả các máy chủ trong cụm của bạn.
Thí dụ:
srv1:/data/staging/ <= is where you upload your data
srv1:/data/production/ <= is where your servers get their production data from
srv2:/data/production/
srv1$ cat /etc/cron.d/syncdata.cron
=====
*/5 * * * * syncuser rsync -a --delete /data/staging/ /data/production/
*/5 * * * * syncuser rsync -az --delete -e ssh /data/staging/ srv2:/data/production/
=====
Điều này sẽ cung cấp cho bạn một ý tưởng cơ bản. Tất nhiên, bạn sẽ muốn bọc các cuộc gọi rsync trong một số tập lệnh và thực hiện khóa phù hợp để nó không chạy hai lần trong trường hợp đồng bộ hóa mất hơn 5 phút, v.v. Ngoài ra, không cần phải nói rằng khu vực tổ chức là không bắt buộc. Bạn cũng có thể đồng bộ hóa srv1: sản xuất thành srv2: sản xuất trực tiếp. Chỉ hơn srv2 có thể hiển thị dữ liệu cũ hơn srv1 tới 5 phút. Đó có thể là một vấn đề, tùy thuộc vào cách bạn cân bằng giữa hai.
Một cách khác để phân phối các tệp không đồng bộ là đóng gói chúng dưới dạng vòng / phút hoặc trong trường hợp tệp deb của bạn. Đặt chúng trong một kho lưu trữ trung tâm và để chúng cài đặt / cập nhật thông qua một cái gì đó như cfengine, khỉ hoặc một số giải pháp dựa trên bus tin nhắn tự làm. Điều này có tác dụng phụ tốt đẹp của phiên bản dữ liệu được triển khai nhưng chỉ phù hợp với lượng dữ liệu nhỏ hơn mà bạn tự sản xuất và triển khai (như các phiên bản phần mềm của riêng bạn). Bạn sẽ không muốn phân phối TB dữ liệu với điều này và cũng không phù hợp với nội dung phản chiếu thay đổi với tần suất cao, như mọi phút khác.
Nếu bạn cần sao chép dữ liệu trong thời gian gần nhưng không nhất thiết phải đồng bộ thay vì gọi cron thường xuyên, bạn có thể sử dụng một số phương pháp dựa trên inotify như incron đã đề cập để gọi các tập lệnh đồng bộ hóa của bạn. Một khả năng khác là sử dụng Gamin (cũng sử dụng inotify nếu có trong Kernel) và viết trình nền đồng bộ nhỏ của riêng bạn. Cuối cùng nhưng không kém phần quan trọng, nếu tất cả các tệp được tải lên một máy chủ thông qua SFTP, bạn có thể kiểm tra xem Máy chủ SFTP của bạn có cho phép bạn xác định các hook được gọi sau các sự kiện nhất định không, như tải tệp lên. Bằng cách đó, bạn có thể yêu cầu Máy chủ kích hoạt tập lệnh đồng bộ hóa của mình bất cứ khi nào dữ liệu mới được tải lên.
Nếu bạn cần phản chiếu đồng bộ dữ liệu theo thời gian thực, một hệ thống tệp cụm có thể theo thứ tự. DRDB đã được đặt tên. Nó rất hay để sao chép ở cấp độ khối và thường được sử dụng cho các thiết lập MySQL có sẵn cao. Bạn cũng có thể muốn xem GFS2, OCFS2, Luster và GlusterFS. Mặc dù Luster và GlusterFS không thực sự phù hợp cho thiết lập hai Máy chủ.
Về cơ bản bạn có 3 khả năng:
Tùy thuộc vào trường hợp sử dụng cụ thể của bạn - Bạn có thể sử dụng một cái gì đó tương tự như DRBD http://www.drbd.org/
Nếu bạn đang cố gắng xây dựng một giải pháp sao lưu ở đây (mà cá nhân tôi đã thực hiện trong khá nhiều thiết lập tương tự) thì hãy cẩn thận. Có rất nhiều thứ khác nhau mà bạn cần sao lưu, một trong những (được cho là lớn nhất) bị xóa vô tình - bất kỳ hệ thống sao chép trực tiếp nào cũng sẽ sao chép xóa và chứng minh không an toàn. Đối với công việc nhân rộng hàng ngày này, nhưng là một câu trả lời khá yếu. Hãy thử RSnapshot.
Unison có thể làm việc tốt cho bạn, nhưng tôi không có kinh nghiệm cá nhân.
Chạy Rupync theo cả hai hướng với các cờ aproprate có thể hoạt động, nhưng vấn đề khá khó khăn là làm thế nào để xử lý các tệp bị xóa, không cần xử lý đặc biệt, nó chỉ cần khôi phục các tệp, sẽ ổn nếu bạn không bao giờ xóa bất cứ thứ gì như tôi, nhưng một chút nghèo thì không. Nó cũng làm những điều kỳ lạ nếu một tập tin được di chuyển.
Bất cứ điều gì bạn đang làm, nếu bất kỳ tình huống nào có thể xảy ra trong đó các tập tin có thể được chỉnh sửa đồng thời ở cả hai đầu, bạn có một vấn đề. unison là giải pháp duy nhất tôi biết có thể xử lý vấn đề này thậm chí gần với thỏa đáng.
Nếu đó là một chiều (ý tôi là, luôn luôn từ một máy chủ này sang một máy chủ khác, nhưng không phải là ngược lại) bạn có thể sử dụng incron
. Nó giống như cron nhưng dựa trên các sự kiện hệ thống tập tin.
Mỗi khi một tệp được tạo hoặc thay đổi, nó sẽ kích hoạt scp hoặc rsync đến máy chủ khác.
Bi-directional có vấn đề về các vòng lặp :).
nó phụ thuộc vào nhu cầu của bạn ..... tôi có một thiết lập rất "rẻ và dễ dàng" cho các máy chủ web cụm.
tôi chỉ cần có một "máy chủ tệp" (NFS) trong đó tất cả các máy chủ web gắn kết các thư mục sau:
/etc/apache/sites-enabled
/etc/apache2/sites-avaliable
/var/www
chết đơn giản và làm việc
clonezilla cũng có thể xem xét sử dụng rsync