Triển khai tệp tới nhiều máy chủ


11

Chúng tôi có một kho lưu trữ trung tâm của các tập tin trong máy chủ nói-1 tại /srv/www. Sau đó, chúng tôi có N số lượng máy chủ là tốt. Chúng tôi muốn máy chủ-1 có thể triển khai các tệp của mình /srv/wwwđến tất cả các máy chủ nhanh nhất và hiệu quả nhất có thể.

Có một cái gì đó giống như rsync, nhưng thay vì chỉ định một mục tiêu duy nhất, chỉ định một cụm (N máy chủ) của các mục tiêu?

Tôi đã nghĩ gitcó thể làm việc, nhưng chúng ta có thể chỉ định nhiều điều khiển từ xa không?

Giải pháp tốt nhất là gì, giả sử máy chủ N cuối cùng có thể đạt tới hàng trăm.


2
Tôi giả sử một hệ thống tập tin mạng là không thể?
cjc

stackoverflow.com/questions/849308/ cho một thủ thuật git để đẩy đến nhiều điều khiển từ xa. Không chắc chắn về hàng trăm, mặc dù.
cjc

Câu trả lời:


14

Chà, cả TwitterFacebook đã bắt đầu sử dụng bittorrent trong cụm của họ để phân phối vòng quay mã mới. Làm điều này, họ có thể đẩy mã lên hàng chục ngàn máy chủ trong một khoảng thời gian rất ngắn so với các phương thức triển khai tập trung ở trường học cũ.

Nghe có vẻ như bạn chưa ở quy mô đó, nhưng không có hại gì trong việc thiết kế hệ thống triển khai của bạn sao cho nó sẽ không bị tắc nghẽn bất cứ lúc nào sớm.


1
Làm thế nào họ sử dụng bittorrent?
Dragos

3
Xem các bài viết tôi liên kết đến.
EEAA

Liên kết twitter @EEAA bị hỏng
gprasant

@gprasant cố định.
EEAA

7

Tôi không khuyên bạn nên git cho quy mô bạn đang nói chuyện. Nó có thể hoạt động, nhưng cá nhân tôi thấy một số thiếu sót khi sử dụng mô hình đó để tìm nạp.

Có một vài điều xác định cách tốt nhất để làm điều này:

  1. Làm thế nào lớn của một repo cần phải được chia sẻ.
  2. Làm thế nào nhanh chóng nó cần phải hội tụ.

Để hội tụ hoàn hảo và tốc độ tối đa, bạn sẽ phải sử dụng hệ thống tệp mạng, chẳng hạn như NFSv4. Các hệ thống tệp được phân cụm mà tôi biết về việc không mở rộng thành 'hàng trăm' nút, do đó, nó phải là một hệ thống tệp mạng. Điều này đưa ra những thách thức riêng của nó, nhưng điều đó có nghĩa là bạn sẽ đạt được sự hội tụ ngay khi các tệp được cập nhật trên đầu NFS.

Để hội tụ nhanh, bạn có thể sử dụng một số thủ thuật rsync. Nếu daemon rsync cuối cùng bị ràng buộc CPU, bạn chắc chắn có thể đặt một vài ba máy chủ rsync phía sau một bộ cân bằng tải như haproxy. Kết hợp với các công việc định kỳ để lấy dữ liệu (hoặc một số phương pháp kích hoạt cập nhật mã khác) và bạn có thể đạt được sự hội tụ khá nhanh.

Đối với cả hai điều trên, có lẽ nên đặt kho lưu trữ trung tâm trên các liên kết 10GbE để có thông lượng tối đa.

Một thay thế là một rsync, trong đó nó chạy từ repo trung tâm để đẩy các bản cập nhật đến máy chủ của bạn. Nó sẽ không hội tụ nhanh như một trong những điều trên, nhưng sẽ thân thiện hơn với băng thông nội bộ của bạn. Sử dụng nhiều máy chủ đẩy để chia phạm vi cho tốc độ tốt hơn.


1

ndist có thể làm việc cho bạn.


1
Trong khi điều này về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo.
Mark Henderson

-1

[liên kết] Sử dụng Kwatee ( http://www.kwatee.net ), bạn có thể triển khai trên nhiều máy chủ như bạn muốn. Triển khai là gia tăng (chỉ các tệp sửa đổi được truyền đi) và có thể được song song hóa nên rất nhanh chóng. Bạn cũng có thể định cấu hình Kwatee để nhận biết cân bằng tải để các máy chủ được xóa khỏi LB trong khi cập nhật và sau đó được chèn lại. Có giao diện đồ họa để định cấu hình các tham số triển khai và sau đó triển khai có thể được kích hoạt thủ công qua GUI hoặc tự động bằng lệnh python.


quan tâm để giải thích bỏ phiếu xuống?
mac

1
Tham gia trang web chỉ để điều chỉnh sản phẩm của một người thường thu hút những người ủng hộ ở đây.
ceejayoz

Bất kể, rất nhiều cho câu trả lời trung thực và minh bạch
mac
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.