Hot clone một dịch vụ Linux sống


14

Chúng tôi cần sao chép một dịch vụ Linux khi nó còn tồn tại, không chỉ vì chúng tôi không thể khởi động lại hoặc một cái gì đó; đó chỉ là do kịch bản đặc biệt của chúng tôi (vâng, tôi đã đọc câu trả lời này, nhưng nó hơi khác một chút so với bản sao của tôi Máy chủ Linux đang hoạt động ).

Chúng tôi có một nút tính toán, bạn có thể nói một nút tính toán NLP đang chạy một số mô hình trên nó. Khi chúng ta bắt đầu nút (với một dịch vụ tất nhiên), phép tính sẽ chậm kinh khủng cho đến khi chúng ta cho nó ăn nhiều lần. Chúng tôi gọi nó là khởi động.

Thật không may, công việc khởi động phải mất một thời gian dài để chúng tôi chờ đợi (có thể việc tính toán của chúng tôi đã kết thúc trước khi nút nóng lên).

Vì vậy, vấn đề là, có cách nào ổn định để sao chép nóng máy chủ Linux để giữ cho nút hoạt động tốt nhất để chúng tôi có thể sao chép và làm cho nó trực tuyến trong thời gian ngắn hơn không?


Có thể hình dung máy, và chụp nhanh trạng thái "khởi động" có được sử dụng không?
TripeHound

13
Bạn có hiểu tại sao sự khởi động này xảy ra? Ví dụ, nó có thể là một tác dụng phụ của bộ đệm tệp. Nhưng một số câu trả lời cho các máy nhân bản sẽ loại bỏ bộ đệm của tệp, bởi vì bộ đệm theo định nghĩa có thể được xây dựng lại từ bản gốc bên dưới.
MSalters

fork () là một cách để tạo thêm các quy trình trên một máy nhất định trong khi lưu bất kỳ chi phí khởi động nào.
Một người dùng khác

cảm ơn mọi người, @TripeHound, tôi đã hỏi một người bạn của tôi làm việc trong VMWare, và anh ta nói rằng họ không thể đơn giản chụp lại trạng thái "nóng lên", không phải là một số công cụ phản chiếu. MSalters, tôi không chắc chắn 100% những gì xảy ra trong quá trình khởi động, nhưng có vẻ như sau khi dịch vụ kết thúc, một số công việc tải lười biếng hoạt động sau khi công việc tính toán liên quan
chen steven

2
Không biết về thiết lập nền của bạn, nhưng điều này có mùi giống như một tình huống mà máy chủ của bạn không bao giờ bị hỏng. Điều này cho thấy rằng kernel của máy chủ của bạn có thể là cổ và các bản cập nhật chưa bao giờ được áp dụng. Có lẽ đây là một chỉ số của một lỗ hổng thiết kế hệ thống cần được xem xét.
Criggie

Câu trả lời:


28

Có thể bạn không thể "sao chép" toàn bộ máy chủ (bạn có thể, nhưng chỉ khi đó là máy ảo), nhưng bạn có thể đóng băng và khôi phục một quy trình duy nhất, với criu , Checkpoint / Restore trong Userspace.

Điều này cho phép bạn lưu trạng thái bên trong của chương trình vào đĩa và dừng chương trình, và sau đó, để khôi phục chương trình về trạng thái đó từ các tệp đã lưu.

Để hỗ trợ thao tác mong muốn của bạn, bạn có thể sao chép các tệp đại diện cho chương trình đã lưu sang máy chủ khác và khôi phục nó ở đó.

criu yêu cầu một kernel gần đây với nhiều tính năng được biên dịch, vì vậy các bản phân phối Linux cũ hơn có thể không hoạt động. Bạn có thể chạy criu checktrên một máy cụ thể để xác định xem có các điều kiện tiên quyết cho criu không.


nó trông tuyệt vời và tôi sẽ làm một số thử nghiệm về điều này, cảm ơn bạn
chen steven

Từ kinh nghiệm của bạn, làm thế nào tốt trong công việc này trong thực tế? Nhìn vào các giới hạn danh sách criu (gần như là những gì tôi mong đợi - đây là một vấn đề khó khăn), tôi cảm thấy điều này khó có thể hoạt động với các ứng dụng không được thiết kế với trường hợp sử dụng này.
James_pic

@James_pic Có lẽ đã một năm kể từ khi tôi xem xét nó một cách nghiêm túc, vì hiện tại tôi không sử dụng nó. Đối với một daemon chỉ chấp nhận kết nối và thực hiện một số tính toán (ví dụ: công việc học máy của OP hoặc máy chủ web), nó hoạt động khá tốt.
Michael Hampton

12

Nó có thể là một chút ngoài phạm vi của môi trường hiện tại của bạn, nhưng cách tiêu chuẩn công nghiệp để làm điều này là ảo hóa máy chủ của bạn. Nhiều máy chủ ảo hóa (VMware, virtualbox, v.v.) cho phép các snapshot trên mạng Cameron lưu lại trạng thái của một máy chủ, sau đó có thể được sao chép vào các phiên bản mới. Các phiên bản mới này sẽ có chính xác trạng thái giống như trạng thái ban đầu, cho đến các quy trình đang chạy. Tất nhiên, bạn sẽ muốn đảm bảo rằng phần mềm bạn đang chạy vẫn sẽ hoạt động chính xác trong môi trường ảo (tính toán CUDA / GPU sẽ xuất hiện).


Ảo hóa là tuyệt vời, cho đến khi phần mềm (hoặc phụ thuộc của nó) yêu cầu cập nhật và không cung cấp cơ chế tải lại duyên dáng. Ảnh chụp nhanh VM hoặc di chuyển trực tiếp đang chạy mã cũ.
John Mahowald

Cả hai đều chấp nhận cho tôi chạy dự án trong máy "thực" hoặc máy chủ ảo hóa và chúng tôi có thể thực hiện một số cách để xử lý công cụ mã "cũ", có thể là kiểm tra A / B hoặc cập nhật .etc. Nhưng bạn có chắc rằng các ảnh chụp nhanh hoàn toàn có thể sao chép trạng thái khởi động của nút làm việc của tôi không?
chen steven

3
Khi bạn "di chuyển trực tiếp" một máy, nó cần phải tạm dừng. Trong khi nó bị tạm dừng, bộ nhớ của nó được sao chép 1: 1 sang một máy khác trong một cụm, nơi nó không được tạm dừng - nguyên vẹn. Điều này có thể mất một chút thời gian tùy thuộc vào dung lượng bộ nhớ được sử dụng và tốc độ kết nối mạng. Bạn có thể sử dụng phương pháp này nếu lượng thời gian chết mà nó gọi đủ thấp cho nhu cầu của bạn.
đệm

@chensteven Gần đây nhất tôi đến từ môi trường hộp ảo. Đó là một thời gian trước đây, nhưng từ những gì tôi nhớ một ảnh chụp nhanh đang chạy chứa trạng thái chính xác của vm tại thời điểm ảnh chụp được thực hiện, bao gồm các quy trình đang chạy và nội dung của bộ nhớ. Ảnh chụp nhanh này sau đó có thể được sao chép vào một vm mới, cung cấp cho bạn hai máy ở cùng một trạng thái.
cawwot

3

Câu hỏi bạn đề cập đề cập đến một liên kết, http: //www.linuxf Focus.org/English/March2005/article370.shtml , mô tả tất cả các cách tôi đã tưởng tượng để thực hiện các yêu cầu của bạn.

Rằng các tùy chọn ở đó không có ý nghĩa nhiều với những gì đang chạy trên máy chủ. Bạn phải xem xét rằng tất cả các tệp có thể thay đổi trong quá trình nhân bản có thể là các tệp không nhất quán trên máy đích. Trên bài đăng đó, bạn cung cấp cho họ nói về cơ sở dữ liệu và nhân bản nó như thế không cung cấp bất kỳ bảo hiểm nào về tính toàn vẹn dữ liệu.

Nó không chính xác rõ ràng những gì bạn có ý nghĩa với "cho đến khi chúng tôi cho nó ăn nhiều lần" .

Nhưng nếu tôi hiểu rõ những gì bạn yêu cầu, bạn phải xem xét rằng để sao chép một hệ thống, nó cần thời gian để sao chép và tính toán tài nguyên.

Để thực hiện "ON / OF" hoặc tốt hơn là môi trường hoạt động / sao lưu, máy chủ phải được cấu hình đúng trong cụm.

Tôi xin lỗi nếu không phải là câu trả lời bạn mong đợi, nhưng các tùy chọn bạn nhận được là những lựa chọn đó.


Đây là lỗi của tôi khiến bạn hơi bối rối ở đây, công cụ "feed" có nghĩa là, sau khi dịch vụ của tôi khởi động, chúng tôi cần phải gọi các tác vụ tính toán nhiều lần để đảm bảo nút được "làm nóng" thành hiệu suất cao nhất. Vì vậy, vấn đề ở đây giống như bản sao động hoặc mở rộng cho các công việc sống của chúng ta vì nếu số lượng lớn yêu cầu tấn công hệ thống của chúng ta, chúng ta sẽ không có đủ thời gian để thiết lập các nút tính toán mới (quá trình khởi động mất quá nhiều thời gian) xử lý chúng, bạn biết đấy, giống như những cơn sóng đang đến
chen steven

1

Có nhiều vấn đề tiềm ẩn với những gì bạn đang cố gắng thực hiện, và tất nhiên như bạn biết, tốt nhất nên đưa máy chủ ngoại tuyến và sao chép nó trong khi không có dữ liệu nào được lưu trữ động.

Tuy nhiên, những gì bạn tìm cách làm là hoàn toàn hợp lý, như tôi đã làm trước đây. Nếu bạn sử dụng, ddbạn có thể sao chép toàn bộ máy chủ ở cấp độ khối sang ổ đĩa khác hoặc máy chủ khác. Tuy nhiên, nó sẽ có một số thiết lập bổ sung trên máy chủ mới và có thể bạn sẽ không thể tắt cái kia và cái mới. Để chúng tôi hiểu điều này, chúng tôi cần biết một vài điều về phần cứng và phần mềm máy chủ của bạn.

Thứ nhất, để xác định chiến lược dữ liệu tốt nhất, sẽ hữu ích khi biết những gì đang cập nhật thường xuyên. Bạn có máy chủ SQL đang cập nhật động nhưng có nội dung tĩnh không? Ngoài ra, bạn có một nhóm các nhà phát triển trên một hệ thống lật đổ như git gửi các cập nhật dữ liệu liên tục đến nội dung của bạn không? Tùy thuộc vào những gì đang cập nhật sẽ xác định quá trình hành động đầy đủ tốt nhất.

Ví dụ: đó chỉ là SQL được cập nhật thường xuyên, thì bạn có thể di chuyển sang một máy chủ mới trong khi máy chủ đó đang hoạt động theo cách sau:

  • dd để sao chép tất cả dữ liệu của máy chủ mới.
  • Bắt đầu thiết lập máy chủ mới, có thể mất một số công việc đặc biệt nếu đó là phần cứng khác nhau, nhưng vẫn có thể nhanh hơn so với thiết lập từ đầu.
  • Nó cũng có thể thực hiện một số thay đổi DNS, vì bạn không thể sử dụng cùng một DNS trên máy chủ khác nếu bạn cần làm việc trên máy chủ thứ hai trong khi máy chủ đầu tiên vẫn còn hoạt động.
  • Sau khi máy chủ mới hoàn tất và chạy độc lập, hãy sao lưu cuối cùng của máy chủ sql trên máy chủ gốc và nhập nó vào máy chủ mới.

Bạn có thể cần tạm thời đưa máy chủ gốc của mình ngoại tuyến để đảm bảo rằng bạn không bỏ lỡ bất kỳ dữ liệu nào. Ngoài ra, để có thời gian chết bằng không, bạn có thể thực hiện lần thứ hai trực tiếp, trỏ dns đến máy chủ mới và sau đó cập nhật bất kỳ mục nhập dns thủ công nào trên máy chủ mới, do đó không có thời gian chết thực sự. Điều này rắc rối hơn một vài phút thời gian chết mặc dù để sao lưu sql và khôi phục lại máy chủ mới, nhưng có thể cần thiết cho thời gian chết bằng không .

Tất nhiên đây chỉ là một ví dụ về trường hợp sử dụng và tùy thuộc vào cấu hình của bạn và một số biến, bạn có thể cần tạo chiến lược của riêng mình cho việc di chuyển dựa trên trường hợp cụ thể của bạn.

Vấn đề khác liên quan đến cấu hình phần cứng máy chủ. Là máy chủ mới giống hệt 100% về phần cứng với máy chủ cũ? Nếu vậy, việc thiết lập sẽ dễ dàng hơn. Tuy nhiên, nếu mặt khác, nó là một cấu hình phần cứng hoàn toàn khác, thì bạn có thể cần thực hiện một chiến lược khác, đó là chỉ cần thiết lập máy chủ thứ hai trước thời hạn, sau đó sao lưu tất cả cơ sở dữ liệu và dữ liệu sql của bạn vào máy chủ đầu tiên và tự di chuyển chúng qua, thay đổi cấu hình như mong muốn.

Di chuyển máy chủ không có nghĩa là tầm thường, và để có một bước đi thành công, bạn cần có kiến ​​thức sâu rộng về máy chủ hoặc nhân viên có trong tay những người tương tự. Trong mọi trường hợp, chúng tôi khuyên bạn nên lập tức sao lưu toàn bộ và lưu trữ nó trên nguồn thứ ba, ngay cả trên máy tính cục bộ của bạn, để nếu trường hợp xấu nhất xảy ra (cả hai máy chủ đều bị sập và chết không thể khắc phục), bạn vẫn có một cái khác bản sao dữ liệu của bạn để xây dựng lại máy chủ của bạn với.

Hy vọng điều này sẽ giúp, và chúc may mắn với máy chủ của bạn di chuyển!

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.