Tự động triển khai máy chủ


28

Tôi thấy rằng tôi liên tục thiết lập khá nhiều máy chủ và VPS gần như giống hệt nhau cho một số khách hàng của tôi và nó có thể rất tốn thời gian. Thông thường, điều duy nhất thay đổi giữa mỗi lần triển khai là trang web khác nhau sẽ được phục vụ. Có một cách dễ dàng để tự động hóa tất cả điều này và có được sự đơn điệu nhàm chán của việc thiết lập 56 máy chủ giống hệt nhau?

Các máy chủ tôi đã triển khai cho đến nay chỉ là Ubuntu, nhưng có thể tôi bắt đầu sử dụng các hệ điều hành linux khác hoặc thậm chí là Windows. Cho đến nay tôi đã xem Capistrano, nhưng dường như nó tập trung vào việc viết các chương trình ruby ​​nhỏ để thực hiện công việc và tôi không có kiến ​​thức nào cả


Câu trả lời:


20

Con rối nghe có vẻ hoàn hảo cho những gì bạn đang cố gắng thực hiện, với sự cảnh báo rằng ngay bây giờ, không có hỗ trợ cho Windows.

Trong trường hợp của bạn, bạn sẽ xác định nút Máy chủ theo tất cả các gói giống hệt nhau trên các máy. Sau đó, bạn xác định các máy chủ riêng lẻ là các nút kế thừa từ Máy chủ và thiết lập những thứ duy nhất cụ thể cho nó.

Con rối là khai báo - nó cho phép bạn mô tả các hộp của bạn theo các tài nguyên mà mỗi hộp nên có. Vì vậy, nếu bạn muốn ssh- bạn viết một lớp cho tài nguyên đó - và bên trong lớp bạn có thể bao gồm logic về cách ssh được gọi hơi khác nhau trên FreeBSD so với Ubuntu. Nó cũng biết sử dụng yumbên trong Redhat và apt-getbên trong các bản phát hành dựa trên Debian và portstrong BSD. Bây giờ trong nút Máy chủ của bạn, bạn sẽ chỉ có một dòng như include ssh- và con rối sẽ thực hiện đúng và đưa SSH vào máy mà bạn không cần phải nhớ nếu đó là Ubuntu hoặc Redhat hoặc FreeBSD.

Điều tuyệt vời là tất cả các công cụ Máy chủ đều sống ở một nơi - và nếu tại bất kỳ thời điểm nào bạn thêm vào định nghĩa nút Máy chủ, TẤT CẢ các máy sẽ cập nhật cấu hình của chúng theo đó.

Ngay bây giờ, tôi chỉ quản lý ba hộp bằng cách sử dụng Puppet - nhưng nó đã được đền đáp. Sau khi dành một tuần để thiết lập một hộp chúng tôi sẽ sử dụng để trình bày kích thích trong một thử nghiệm, hóa ra trình điều khiển card đồ họa đã quá cũ trong phiên bản Ubuntu tôi đã cài đặt (8.04). Tôi đã phải cài đặt Ubuntu mới nhất (9.04), nhưng sau đó tôi chỉ cần apt-get và chạy con rối - và mọi thứ tôi đã dành một tuần để thiết lập đã được khôi phục.

Con rối có một chút đường cong học tập, nhưng tôi đã tránh thành công việc học Ruby - Tôi biết tôi đang sử dụng nó, vì đó là những gì con rối được viết trong - nhưng cho đến nay tôi đã thành công khi sửa đổi các ví dụ trong các tài liệu và công thức nấu ăn trên wiki . Một nhược điểm khác là lần đầu tiên con rối mất nhiều thời gian hơn để làm mọi việc. Ưu điểm là mọi thứ bạn thay đổi trên tất cả các máy của bạn đều được lưu trữ ở một nơi - đó là thông lệ tiêu chuẩn để giữ cấu hình con rối của bạn trong hệ thống kiểm soát phiên bản - vì vậy bạn luôn có thể nhìn lại và xem cách bạn đã thiết lập máy chủ trong quá khứ - hoặc khôi phục một số thay đổi không thành công.

Cuối cùng, đây là một video nhanh thực hiện một bản demo rối đơn giản giúp tôi bắt đầu nhanh chóng.


3
Digg.com sử dụng con rối để quản lý máy chủ của họ, một số ví dụ cơ bản có thể được tìm thấy trên blog của họ: blog.digg.com/?p=335 blog.digg.com/?p=562
Adam Gibbins

Tôi tin rằng nhóm quản trị Fedora cũng sử dụng con rối.
Mei

9

Chúng tôi sử dụng CobblerPuppet để xây dựng và tự động hóa cấu hình của cả máy thật và máy ảo.

Cobbler liên kết với nhau DHCP, PXE boot và Kickstart để triển khai không gì khác hơn là thêm cấu hình máy và nhấn nút nguồn. Đối với máy ảo, koan lệnh thực hiện phép thuật Xen (trong trường hợp của chúng tôi) để bắt đầu cài đặt - trên kiểu dom0I chỉ:

koan --system vps.fqdn --server cobbler --no-gfx

sau đó virsh consoleđể xem một tòa nhà VPS mà không có bất kỳ tương tác.

Chúng tôi sử dụng RHEL và có một loạt các cấu hình được thiết lập cho các đĩa phân vùng, cấu hình mạng và cài đặt các gói cơ sở cho các lớp máy chủ khác nhau. Cobbler hỗ trợ các giống Debian và Ubuntu nhưng tôi chưa bao giờ thử nó. Một khía cạnh khác: các ứng dụng thú vị khác cho Cobbler bao gồm chạy ISO memtest và cập nhật firmware HP .

Khi các hệ thống của chúng tôi được xây dựng với Cobbler Puppet đảm nhận việc định cấu hình các ứng dụng, trình nền hệ thống, đăng ký hộp với RHN, v.v. Puppet chạy như một trình nền kiểm tra định kỳ rằng cấu hình của hệ thống phù hợp với các biểu hiện đã xác định - bạn biết rằng các cập nhật của bạn đã biến mất cho tất cả các máy chủ. Đây cũng là một cách tuyệt vời để chắc chắn rằng một hộp bị ngừng bảo trì có cấu hình chính xác trước khi bạn đưa nó trở lại dịch vụ trực tiếp.

Con rối thực sự là tuyệt vời. Bạn không cần phải kiểm soát mọi khía cạnh của cấu hình của mình - hãy bắt đầu bằng cách quản lý một cái gì đó đơn giản mà bạn cần cấu hình trên mỗi hộp ( sudoerslà ví dụ chính tắc) và lấy nó từ đó. Hãy chắc chắn rằng các bản kê khai rối của bạn cũng được phiên bản; không có gì tốt hơn là có thể dễ dàng quay trở lại cấu hình nổi tiếng mà không cần phải nhớ điều chỉnh.


6

Hiện tại tôi đang làm việc ở đâu, chúng tôi phải quản lý phần Linux trong trang trại máy chủ của chúng tôi, nơi chỉ có hơn 300 máy chủ Linux. Điều này bao gồm chủ yếu là HP Proliants, tiếp theo là IBM 3850, một số lưỡi IBM, VMware ESX và một số KVM cho các máy chủ quản lý nội bộ của chúng tôi.

rắn hổ mang

Chúng tôi đã xem xét cobbler nhưng vấn đề ở đó là cobbler rất đặc trưng của RHEL / Red Hat. Chúng tôi cần hỗ trợ ít nhất là RHEL và SLES, và Ubuntu là tiếp theo.

con rối

Chúng tôi đã xem xét con rối, tuy nhiên sau đó đã quyết định chống lại nó vì nó phụ thuộc vào Ruby, điều đó có nghĩa là việc nâng cấp Ruby, có khả năng phá vỡ hệ thống quản lý của chúng tôi.

đường dây nóng

Hotwire là những gì chúng tôi sử dụng (được phát triển nội bộ, nhưng là nguồn mở) và đã làm như vậy trong vài năm qua. Đầu tiên, nó kiểm kê các hệ thống sẽ được xây dựng, có nghĩa là kiểm kê trung tâm dữ liệu, giá đỡ, phần cứng, hệ điều hành, mạng, v.v. và thứ hai thực hiện việc xây dựng & triển khai nhanh chóng. Khi hệ thống được xây dựng, kho lưu trữ tự động của hotwire giữ cho kho lưu trữ không đồng bộ, trong khi cengine duy trì chúng. Hotwire biết về phần cứng máy chủ bằng cách nói chuyện với dữ liệu SMBIOS / DMI trong Bios thông qua python-dmidecode .

Điểm thưởng là nó được kết hợp quy trình kiểm kê và xây dựng thành một, do đó, ít quản lý hơn và tính năng kiểm kê trực tiếp rất tuyệt vời như chúng ta biết nếu có gì đó không hoàn toàn đúng.

Nhược điểm là giao diện người dùng vẫn cần đánh bóng, và có lỗi ở đây và đó, nhưng sự phát triển vẫn còn nóng và các lỗi được báo cáo là đã được sửa tương đối nhanh.

kim tuyến

Chúng tôi sử dụng cengine vì khác với nó, và con rối, không có gì khác. Nó thực sự một công cụ tốt, nhưng "tốt" chỉ là một chức năng cho thấy chính sách của bạn tốt như thế nào - nếu bạn đặt chính sách nguy hiểm, thì một lỗi nhỏ có thể gây ra nhiều thiệt hại. Ví dụ: theo chính sách, chúng tôi không "sửa đổi" tệp, chúng tôi sẽ thay thế chúng hoặc chúng tôi không. Ngoài ra tất cả các tệp được thay thế đều có tiêu đề làm cho bất kỳ người nào chỉnh sửa nó đều biết rằng nó sẽ được thay thế vào lần chạy tiếp theo (nó được chạy qua cron hàng giờ).

Cấu hình và tất cả các tệp được đẩy ra bởi cfengine đến các máy chủ cũng được giữ trong SCM và sử dụng các móc nối sau cam kết, nếu có thể, chúng tôi kiểm tra cú pháp và nếu thất bại, thì cam kết sẽ bị từ chối. Điều này dễ dàng cho các ứng dụng đẹp như Apache, nhưng không dễ cho hầu hết các ứng dụng doanh nghiệp.


Bạn quyết định chống lại Puppet vì nó phụ thuộc vào Ruby? Dựa trên điều này, bạn có thể quyết định chống lại hầu hết mọi thứ, bởi vì nâng cấp libc hoặc kernel có thể phá vỡ nó.
Cristian Ciupitu

2
Bạn nêu lên một quan điểm, nhưng cuối cùng, đó là một sự thỏa hiệp - tôi muốn "lo lắng" bao nhiêu gói trong lần nâng cấp tiếp theo. Nếu nâng cấp kernel / glibc bị trục trặc - bạn thường sẽ tìm ra gần như ngay lập tức vì đây là thành phần cơ bản nhất của HĐH, tuy nhiên nếu Ruby xuất hiện hơi khác, bạn sẽ không thực sự chú ý, nhưng khi bạn làm vậy, bạn có thể có 300 máy chủ đã được nâng cấp và chạy trên phiên bản đó, và bây giờ Puppet là nạn nhân. Nhưng một lần nữa, tôi không chạm khắc bất cứ thứ gì trên đá; đây chỉ là sở thích của tôi về vấn đề này
Xerxes


3

Để tự động cài đặt tùy thuộc vào hệ thống đích:

  • Debian / Ubuntu: FAI hoặc di preseising
  • RedHat / Fedora: Khởi động
  • Novell / openSuSE: AutoYaST
  • Solaris: Khởi động
  • Windows: unattends.sourceforge.net

Đối với việc quản lý cấu hình trên hết, tôi khuyên bạn nên sử dụng con rối.


2

Tôi có rất nhiều thành công với Puppet , nhưng bạn phải viết rất nhiều cấu hình.


2

Một phiếu bầu khác cho Puppet ở đây. Chúng tôi sử dụng nó rộng rãi để thực hiện tất cả các cài đặt và quản lý cấu hình máy chủ và ứng dụng. Hơn 200 nút và đếm. Hỗ trợ Windows rõ ràng đang được phát triển, mặc dù ở trạng thái nào tôi không chắc chắn.

Chúng tôi vẫn đang xem xét khía cạnh khởi động hệ điều hành ban đầu của mọi thứ, nhưng như đã đề cập ở trên Cobbler có vẻ thú vị. Hiện tại chúng tôi đang sử dụng kết hợp khởi động PXE với tính năng sắp đặt trước Debian / Ubuntu, nhưng hầu như không tối ưu.


Này Mike, bạn có nghĩ rằng bạn có thể thêm thẻ rối vào câu hỏi này không? Tôi sẽ làm điều đó, nhưng không có đại diện cần thiết
Paul Ivanov
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.