Công nghệ cho máy ảo cá nhân tồn tại trong thời gian ngắn


8

Tôi đang cố gắng xây dựng một hệ thống sẽ chạy các bản dựng (CI và bản dựng thử nghiệm) ngắn hạn, các yêu cầu bắt buộc theo yêu cầu của tôi là mỗi phần mềm sống trên một máy chủ riêng. Tôi cũng lấy định nghĩa đó để bao gồm các tùy chọn paravirtualsation , vì có vẻ như nó sẽ giúp tôi đỡ đau đầu hơn.

Tôi đang làm việc trên máy Mac, vì vậy hầu hết mọi công nghệ đều không hoạt động, libvirtquemu , v.v. sẽ không hoạt động với tôi. Tuy nhiên tôi đang lên kế hoạch triển khai lên Debian; do đó, mọi thứ chạy trên Debian đều quay trở lại trên bàn, miễn là tôi có thể tạo kịch bản cho việc cung cấp máy chủ cũng như các miền khách.

Thiết lập dự định của tôi là tôi có thể sử dụng để khởi động trình cài đặt Debian, điều đó có nghĩa là khi khởi động, máy sẽ tự động được cung cấp (Chef, Puppet, Babushka, đừng bận tâm) - và một phần của việc cung cấp đó sẽ tạo ra một rootfs mẫu có thể được sử dụng để khởi động một container. Bản thân container cũng cần được cung cấp, để khi container xuất hiện, nó biết công việc phải làm là gì và có thể thực hiện công việc, sau đó thoát ra.

Nói tóm lại, đây là quy trình công việc tôi cần:

  1. Khởi động máy (ảo hoặc cách khác) và sẵn sàng thực hiện công việc.
  2. Công việc nên được thực hiện bởi một kịch bản được cài đặt bởi đầu bếp / con rối / babushka / v.v.
  3. Khi công việc đến, một máy ảo nên được bắt đầu để thực hiện công việc.
  4. VM sẽ thực hiện công việc, thoát và giải phóng tài nguyên của nó cho máy chủ / máy chủ. (điều quan trọng là điều này đã mở rộng cho ít nhất hàng trăm máy ảo khách trên phần cứng hợp lý)

Tôi đã đến một điểm mà tôi đã thử những điều sau đây và từ bỏ chúng vì những lý do được nêu dưới đây:

Đối với máy chủ

  1. Hình ảnh Debian micro ISO trước hạt giống với Instalinux (được hỗ trợ LinuxCOE) ( Xấu: Hoàn toàn không hoạt động ("Không tìm thấy mô-đun hạt nhân" (vì hình ảnh Instalinux không đồng bộ với kho FTP, rõ ràng giải pháp này rất dễ vỡ, Nó cũng không cho phép nhiều phạm vi để cài đặt sau và thả các khóa SSH, khóa máy chủ, v.v. vào máy, có vẻ như là lửa và quên, cuối cùng tôi có một máy đang chạy, nhưng không có quyền truy cập vào nó .)
  2. Pre-seed Debian netinst ISO ( Xấu : các vấn đề tương tự, như trên, ngoại trừ ít nhất quá trình cài đặt thường hoàn thành do không có sự chênh lệch hạt nhân giữa kho ISO và kho lưu trữ FTP. Vẫn còn giới hạn cho cài đặt sau. Tốt : Hoàn toàn đáng tin cậy & có thể lặp lại, dễ dàng ném vào bất kỳ ngăn xếp công nghệ VM nào trên máy Mac hoặc trên máy kim loại trần, sẽ hoạt động ở mọi nơi, tuy nhiên tôi không thể cài đặt sau nó đủ )
  3. Nhiều phương pháp xây dựng rootfs và biên dịch nó thành hình ảnh đĩa cứng có thể khởi động ( Xấu : Tôi có thể làm việc nhỏ bé như thế nào, rất khó để cài đặt vào máy thật và là một quá trình xây dựng phức tạp. Tốt: Nếu Tôi có thể làm cho nó hoạt động, điều này dường như cung cấp hầu hết phạm vi để cấu hình trước máy theo một đặc điểm kỹ thuật nhất định với các khóa ssh, khóa máy chủ, tên máy chủ, phần mềm được cài đặt từ Git và bất cứ điều gì khác, nhưng sau đó câu hỏi sẽ là cách đóng gói nó để phân phối, hoặc làm thế nào để kịch bản nó giải trí. )

Tôi thực sự không chắc chắn mọi người sẽ sử dụng công nghệ nào để đưa VM từ không có gì vào một hệ thống đang hoạt động, hoạt động và hữu ích. Có vẻ như ba bước đối với tôi a) hệ điều hành, b) cấu hình hệ thống (người dùng, v.v.) và sau đó c) thay đổi hệ thống tập tin.

Đối với máy khách (ảo):

  1. Nhiều thứ, chủ yếu tôi nghĩ rằng câu trả lời ở đây là một rootfs chỉ được tạo debootstrapvà một phân vùng đặc biệt trên container LXC chứa công việc cần thực hiện cho trường hợp cụ thể này (một bảng kê khai công việc). Chèn tất cả các cảnh báo thông thường về việc xây dựng HĐH, khởi động, tạo người dùng, kiểm tra phần mềm từ git và thực hiện công việc.

Tôi thực sự không chắc chắn những công cụ để tiếp cận, có vẻ như vấn đề cần được giải quyết tốt. Nhưng tôi không thể tìm ra nơi để thực sự bắt đầu.

Hầu hết mọi người dường như đề nghị với máy chủ rằng tôi nên chọn một công nghệ ảo hóa, khởi động máy về trạng thái làm việc và sau đó chụp lại nó (libvirt có vẻ hợp lý cho việc này). Sử dụng ảnh chụp nhanh để hiển thị mọi cài đặt tiếp theo để thử nghiệm hoặc trong sản xuất.

Đối với các máy khách, lxc dường như cung cấp tùy chọn dễ nhất, ngoại trừ việc tạo nền cho container và kết nối với nó sau đó trên bảng điều khiển bị hỏng trong tất cả các nhân hiện tại và phiên bản mới nhất của lxc có sẵn cho Debian ổn định đã hơn 18 tháng tuổi. và thiếu rất nhiều tính năng được sử dụng rộng rãi.

Điển hình tôi là nhà phát triển ứng dụng và tôi thường không làm việc với công nghệ cấp máy chủ (và tôi chắc chắn rằng SF sẽ gắn cờ câu hỏi này là "quá chủ quan") nhưng tôi thực sự không chắc chắn nên tiếp cận công cụ nào.

Lời cuối cùng là tôi biết về một dự án xếp chồng tương tự (travis-ci.org) đang sử dụng các hộp Vagrant cho việc này. Nó có vẻ như là một công cụ khá cùn, các công cụ định hướng ruby ​​lớn, chậm, được thiết kế để cung cấp máy tính để bàn quy mô nhỏ cho các máy ảo thử nghiệm được sử dụng cho cơ sở hạ tầng dịch vụ quan trọng, nhưng tôi cũng biết một số kẻ đó và chúng thông minh hơn tôi, nên có lẽ họ đã bỏ cuộc.

Bất kỳ trợ giúp đánh giá cao.


Thực sự sùng đạo ... Điều này chắc chắn có thể được tự động. Xây dựng hệ thống dễ dàng. Tôi giả sử bạn có thể viết kịch bản công việc hoặc sử dụng công cụ quản lý cấu hình mà bạn chọn. Thông tin thêm về đích hoặc kết quả cuối cùng của nỗ lực này sẽ hữu ích. Bạn đang ở ngay rìa giữa một giải pháp đám mây riêng hoặc sử dụng một cái gì đó như LXC ...
ewwhite 8/213

Tuyệt đối, vấn đề là có thể xây dựng máy chủ theo cách mà nhóm của tôi và tôi (người dùng Mac) có thể xây dựng lại máy chủ , bên trong chúng tôi có thể phát triển với khách LCX, nhưng xây dựng theo cách mà chúng tôi cũng có thể triển khai nó để sản xuất. Các công cụ cho ứng dụng của chúng tôi đều được viết bằng Ruby và tôi THỰC SỰ muốn sử dụng LXC cho khách. Máy chủ tự nhiên đủ sống lâu, nhưng vì thời gian tồn tại thông thường của khách sẽ là 2-10 phút, toàn bộ cơ sở hạ tầng là phù du, thực sự. Đó là về dev so với sản xuất và có một quy trình lặp lại.
Lee Hambley

Câu trả lời:


2

Một vài ý tưởng:

  1. Quan điểm của bạn "hàng trăm VM trên phần cứng hợp lý" khiến tôi (không có kinh nghiệm cá nhân) nghĩ về các VM khởi động qua mạng hoặc chia sẻ hầu hết không gian âm lượng của chúng (/ usr) thông qua NFS. Phụ thuộc vào mức độ tương tự máy ảo của bạn.
  2. "Những gì tôi có thể làm việc nhỏ bé như mong manh" Thật khó tin. Bạn có thể chính xác hơn vấn đề là gì?
  3. "Sẽ khó cài đặt trên máy thật" Ý bạn là "khó" so với giải pháp 1 lần nhấp mong muốn để tạo VM? Tôi sẽ hỏi: điều này khó khăn như thế nào và điều này có thường xuyên xảy ra không? Sự khác biệt, tái tạo initrd cho phần cứng tương ứng là gì?
  4. "Tuy nhiên tôi không thể cài đặt sau đủ" Bạn cần gì / cần gì và tại sao nó không hoạt động? Bạn có thể thực hiện tải xuống một phần kịch bản của quá trình khởi động. VM nhận IP của nó bằng DHCP (được cấu hình cứng cho địa chỉ MAC của VM) và Samba cung cấp các tập lệnh sau cài đặt khác nhau cho VM, tùy thuộc vào địa chỉ IP của máy khách.

+1 để khởi động mạng. Tôi không có đủ kinh nghiệm để viết ra một câu trả lời đầy đủ về nó, nhưng tôi có thể nói với bạn rằng tôi đã ở những nơi triển khai hàng trăm máy, cả vật lý và ảo, bằng cách cho chúng khởi động từ máy chủ PXE. Điều đó có nghĩa là bạn sẽ không phải lo lắng với các hình ảnh đĩa riêng biệt cho mỗi VM.
Moshe Katz

1

Trong khi đọc bài viết của bạn, tôi cứ nghĩ rằng vagent và jenkins với plugin vagrant sẽ phù hợp với nhu cầu của bạn khá tốt. Bất kỳ hộp nào bạn có thực sự có thể xử lý số lượng máy ảo mà bạn đang nói đến thậm chí không cần chú ý đến chi phí hoạt động của các công cụ duy trì môi trường.


0

Sử dụng một số thứ hoạt động trên apple và Debian, điều duy nhất tôi đã thử là hộp ảo. Điều tuyệt vời khi sử dụng hộp ảo ở đây là bạn có thể xây dựng VM trên hệ thống mac của mình và sao chép nó vào hệ thống Debian bằng cùng một phiên bản của hộp ảo và nó sẽ khởi động.

Có hàng trăm vms sử dụng âm thanh hộp ảo như bạn sẽ dành khá nhiều thời gian để sử dụng giao diện vboxmange để tạo kịch bản thông tin duy nhất cần thiết cho mỗi vm. Giống như uuids cho ổ cứng, địa chỉ mac trên giao diện mạng.

Nếu hệ thống cơ sở sẽ sử dụng cùng một phần mềm được cấu hình theo cùng một cách, bạn có thể tạo một ảnh chụp nhanh của hệ thống trong hộp ảo và đóng băng nó. Vì vậy, không có thay đổi nào được ghi trong ảnh chụp nhanh bị đóng băng của bạn, mà thay vào đó được ghi vào vùng lưu trữ tạm thời mới. Sau đó tắt VM, khôi phục lại snap snap và bạn đang xử lý một hệ thống sạch với bất kỳ thay đổi nào được thực hiện trong quá trình thử nghiệm. Tất cả điều này có thể được viết kịch bản bằng vboxmange .

Sử dụng ảnh chụp nhanh của bạn, bạn cũng có thể tạo ra hàng trăm bản sao của hình ảnh VM đó. Sử dụng giao diện kịch bản lệnh vboxmange để tạo các bản sao, duy nhất theo cách quan trọng, ví dụ như địa chỉ uuids và mac. Sau đó, có một kịch bản khởi động gọi những gì từng thay đổi, cấu hình bạn cần áp dụng cho máy ảo của mình để thử nghiệm hoặc chạy các thử nghiệm khác nhau.

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.