Quản lý một ứng dụng trên nhiều máy chủ hoặc PXE so với cfEngine / Chef / Puppet


15

Chúng tôi có một ứng dụng đang chạy trên một vài hộp (5 hoặc hơn và sẽ phát triển). Phần cứng giống hệt nhau trong tất cả các máy, và lý tưởng là phần mềm cũng vậy. Tôi đã quản lý chúng bằng tay cho đến bây giờ và không muốn nữa (địa chỉ IP tĩnh, vô hiệu hóa tất cả các dịch vụ cần thiết, cài đặt các gói cần thiết ...). Bất cứ ai cũng có thể cân bằng ưu và nhược điểm của các tùy chọn sau, hoặc đề xuất một cái gì đó thông minh hơn?

1: Cá nhân cài đặt centos trên tất cả các hộp và quản lý các cấu hình với đầu bếp / cfengine / con rối. Điều này sẽ tốt, vì tôi muốn có một cái cớ để học cách sử dụng một trong các ứng dụng, nhưng tôi không biết liệu đây có thực sự là giải pháp tốt nhất hay không.

2: Làm cho một hộp hoàn hảo và hình ảnh nó. Phục vụ hình ảnh qua PXE và bất cứ khi nào tôi muốn sửa đổi, tôi có thể khởi động lại các hộp từ một hình ảnh mới. Làm thế nào để những người trong cụm thường xử lý những việc như có địa chỉ mac trong tệp / etc / sysconfig / network-scripts / ifcfg *? Chúng tôi cũng sử dụng infiniband và nó cũng từ chối bắt đầu nếu hwaddr sai. Chúng có thể được tạo chính xác khi khởi động không?

Tôi đang nghiêng về giải pháp PXE, nhưng tôi nghĩ việc theo dõi bằng munin hoặc nagios sẽ phức tạp hơn một chút với việc này. Bất cứ ai có kinh nghiệm với loại vấn đề này?

Tất cả các máy chủ đều có ổ SSD và rất nhanh và mạnh.

Cảm ơn, matt.

Câu trả lời:


12

Cụm của bạn nghe giống cụm HPC hơn cụm OLTP như của tôi, nhưng tôi nghĩ rằng thiết lập tôi đang sử dụng cũng sẽ phù hợp với bạn. Tôi gọi nó là "mpdehaan trifecta" bởi vì đó là ircnick của anh chàng đã viết hoặc quản lý ba công cụ liên quan.

1.) Cobbler để cung cấp xây dựng cơ sở. Cobbler là một dự án nhằm mục đích trở thành giao điểm của các hệ thống khởi động, pxe, yum-repo, dhcp, dns, v.v. Đây là cách dễ nhất để thiết lập khởi động và chạy, và bạn có thể phát triển thành các tính năng khác khi cần.

2.) Con rối để quản lý cấu hình. Lý tưởng nhất là các máy chủ cobbler được xây dựng của bạn là các cấu hình rất barebones chỉ đủ để gọi điện về nhà cho máy chủ con rối của bạn khi khởi động. Con rối sau đó sẽ áp dụng các cài đặt cấu hình của bạn và giữ cho chúng nhất quán trong môi trường của bạn vĩnh viễn.

3.) Func cho các lệnh ad-hoc cho nhiều máy song song. Ví dụ: "triển khai kiểm tra svn mới của mã và khởi động lại apache". Thật dễ dàng khi chỉ cần sử dụng func để gọi cùng một lệnh bash trên một nhóm máy chủ giống như cluster-ssh. Nếu bạn thực sự muốn vào nó, bạn có thể viết các mô-đun của riêng bạn cho nó với một số python thực sự đơn giản.

Tất cả ba công cụ này đều có các kênh irc hoạt động và wiki tốt để được trợ giúp về freenode.


Tôi nghĩ rằng đây là giải pháp mà tôi sẽ đi. Tôi sẽ cho nó một shot và cho tất cả các bạn biết. Tôi có thể sẽ viết blog quá trình là tốt. Cảm ơn!
matt

5

Tổng quat

Theo một số cách, bạn có hai câu hỏi ở đây ..

  • Làm cách nào để xây dựng và duy trì các máy chủ tiêu chuẩn?
  • Làm cách nào để duy trì cấu hình tiêu chuẩn và thực hiện các thay đổi sau này?

Tôi đã chia câu trả lời của mình dưới đây để giải quyết hai điều đó một cách riêng biệt nhưng chúng có liên quan rất chặt chẽ với nhau. Tôi đang giải quyết các giải pháp công nghệ ở đây và không phải bất kỳ thực tiễn tốt nhất nào có liên quan, chẳng hạn như kiểm soát thay đổi.

Nếu điều này không bao gồm phạm vi câu hỏi của bạn, xin vui lòng làm rõ và tôi sẽ vui lòng giải thích. Đây là nền tảng cần thiết, rất quan trọng đối với cơ sở hạ tầng công nghệ đang hoạt động tốt.

Máy chủ xây dựng

Tôi không thích hình ảnh trong thế giới UNIX; đó là nhiều hơn một cách tiếp cận phong cách Windows. Ngay cả một số người Windows dường như đang tập trung vào các tập lệnh cho các bản dựng tiêu chuẩn.

Vệ tinh dường như đang trở nên phổ biến trong thế giới RHEL. Spacewalk là đối tác nguồn mở. Bạn chắc chắn phải mua hoàn toàn vào phương pháp của RHEL để sử dụng nó. Điều này phục vụ như cả việc xây dựng máy chủ và quản lý cấu hình.

Lý tưởng nhất, bạn sẽ muốn thiết lập các bản sao và kho lưu trữ cục bộ trên một máy chủ tệp cho tất cả các phần mềm cần thiết.

Trước tiên, hãy tận dụng tự động hóa bản dựng phân phối của bạn, chẳng hạn như Kickstart trong RHEL / CentOS. Kickstart sẽ là một đường cơ sở với các biến thể, tùy thuộc vào nhu cầu của bạn. Bản dựng Kickstart có thể được bắt đầu từ máy chủ PXE.

Đối với phần nâng cao hơn của bản dựng và bất kỳ thứ gì không phù hợp với tệp Kickstart, bạn có thể viết các tập lệnh tùy chỉnh của riêng mình. Tuy nhiên, bạn có thể thấy rối hoặc cengine hoạt động tốt cho bạn thay vì các tập lệnh tùy chỉnh. Tôi đã tìm thấy các tập lệnh tùy chỉnh là linh hoạt nhất và không bị giới hạn trong bất kỳ cách tiếp cận nào.

Nếu bạn chọn viết các tập lệnh của riêng mình, tôi khuyên bạn nên một tập lệnh cốt lõi cho cấu hình phổ quát. Đây sẽ là cấu hình bảo mật, tăng cường và bất cứ điều gì áp dụng cho tất cả các bản dựng. Sau đó, một kịch bản cuối cùng để hoàn thành vai trò máy chủ. Ví dụ: máy chủ web hoặc máy chủ cơ sở dữ liệu.



Duy trì tiêu chuẩn

Những gì bạn mô tả cũng rơi vào việc duy trì cấu hình. Xây dựng các tiêu chuẩn, cập nhật phần mềm và những thứ khác có liên quan đến các bản dựng nhưng theo nhiều cách riêng biệt.

Nếu bạn chọn dựa vào các gói hệ thống thay vì tạo các bản dựng dựa trên nguồn của riêng bạn cho các vai trò máy chủ quan trọng nhất của bạn, rất nhiều trong số đó có thể được duy trì với các tiện ích hệ thống gốc. Đây có thể là một tập lệnh đơn giản để chạy một forvòng lặp đối với danh sách máy chủ của bạn và chạy một yum -y update package.

Để quản lý cấu hình, đây là nơi mà các tiện ích quản lý cấu hình rối, cengine và các cấu hình khác phát huy tác dụng. Đây là những tiện ích rất hữu ích và cung cấp nền tảng cần thiết mà không cần viết kịch bản của riêng bạn từ đầu.

Khi bạn cập nhật các tiêu chuẩn cấu hình cho các máy chủ của mình, điều quan trọng là phải lấp đầy điều này vào các bản dựng máy chủ tiêu chuẩn của bạn.


0

Gần đây tôi đã hoàn thành một dự án lớn để triển khai một hệ thống quản lý cấu hình / cung cấp và xây dựng tập trung tại $ WORK. Chúng tôi đang chạy CentOS.

Thiết kế của tôi, thứ mà tôi thực sự thích, cung cấp cho chúng tôi quy trình xây dựng gần như một cú nhấp chuột (tốt, một trang web GUI), sử dụng một số tập lệnh PHP tùy chỉnh để liên kết mọi thứ với nhau thông qua giao diện người dùng web đơn giản nhưng hiệu quả.

Lý thuyết chung là:

  1. Thực hiện tất cả các cài đặt từ một tệp KickStart duy nhất, thống nhất, tối giản (tốt, OK, một cho x86 và một cho x86-64, nhưng các tệp gần như giống hệt nhau với lựa chọn gói tối thiểu).
  2. KickStat postinstall script bootstraps Puppet.
  3. Con rối áp dụng tất cả cấu hình nút / máy chủ cụ thể, cài đặt gói, v.v.

Tôi đồng ý rằng hình ảnh không phải là cách làm của Unix-y ... chúng thực sự phù hợp hơn với thế giới Windows nơi cài đặt và cấu hình tự động theo kịch bản không đơn giản.

Bạn có thể thay thế Puppet bằng bất kỳ hệ thống quản lý cấu hình nào khác phù hợp với dự luật, nhưng tôi tình cờ thích bản chất khai báo của Puppet và khái niệm về sự hội tụ của nó.

Hệ thống này mang lại một số lợi ích:

  • Con rối xử lý mọi thứ trong quá trình cài đặt cơ sở chung, vì vậy tất cả các gói và cấu hình bắt buộc nằm ở một nơi.
  • Các bản kê khai rối phục vụ như một nguồn bổ sung của tài liệu cấp thấp.
  • Miễn là bạn gắn bó với Puppet (tức là không thực hiện thay đổi cấu hình cục bộ hoặc hợp nhất chúng trở lại thành Puppet), việc xây dựng một bản sao của máy là chuyện nhỏ.
  • Vì tất cả các máy chủ được xây dựng từ một cơ sở chung, bạn có thể cài đặt sẵn phần cứng hoặc máy ảo với gói cơ sở (KickStart) và sau đó biến chúng thành các nút chức năng chỉ bằng cách thêm các lớp khi cần.
  • Con rối cho phép "gắn thẻ" máy chủ để sản xuất hoặc phát triển, do đó cực kỳ dễ dàng để tạo bản sao phát triển / thử nghiệm của máy chủ, nâng cấp gói hoặc thực hiện thay đổi cấu hình khi cần, kiểm tra và sau đó hợp nhất trở lại sản xuất.

0

Nếu bạn đi xuống tuyến đường pxe, hãy chắc chắn có một cái nhìn

http://etherboot.org/wiki/index.php

Gpxe sẽ giúp bạn linh hoạt hơn với các mục tiêu khởi động. Việc khởi động một lưỡi kiếm aoe khá dễ dàng và không có gì giống như khởi động kernel từ máy chủ http từ xa !!!!!!!!!! :-).

Những gì máy chủ lên thời gian bạn cần?

Không thể tạo ra một hình ảnh hoàn hảo, vì bạn luôn cần phải áp dụng các bản vá bảo mật và nâng cấp phần mềm. Nếu họ đang đối mặt với internet, bạn không thể bỏ qua việc vá lỗi.

Về phía pxe, bạn đã có một vài tùy chọn, tùy thuộc vào I / O tệp của bạn trong cụm của bạn. Chỉ cần khởi động kernel và mount đĩa từ xa qua aoe hoặc iscsi.

Bạn cũng có thể làm một số công cụ rất thông minh với bản sao trên viết hình ảnh. Thật tuyệt vời để nâng cấp và đẩy lùi mọi thay đổi có thể có vấn đề.

Tôi cũng đã thành công khi sử dụng nfs root, sử dụng giải pháp nfs cụm. Bạn có thể chỉ định các tệp khác nhau sẽ được phục vụ tùy thuộc vào địa chỉ khách hàng của họ.

Một lần nữa, bạn phải kiểm tra xem (các) ứng dụng của bạn có thích chạy nfs không. Nó không phù hợp với mọi khối lượng công việc.

sever nfs sever có thể chứa 192.168.0.1:/etc/hostname 192.168.0.2:/etc/hostname

vì vậy, mọi khách hàng tham chiếu cùng một tệp, nhưng được phục vụ tệp có liên quan đến máy khách. Đó là thứ khá ấn tượng, tuy nhiên nó không đơn giản!

Tất cả điều này sẽ cung cấp cho bạn thời gian giới thiệu nhanh hơn nếu bạn tập trung hệ thống tệp vào bộ nhớ mạng. Hình ảnh một hệ điều hành qua mạng vào một đĩa từ xa cần có thời gian !!!!

Nếu bạn sử dụng bất kỳ giải pháp nào trong số những giải pháp này, hãy đảm bảo rằng bạn có lớp mạng chịu lỗi được thiết kế tốt và máy chủ nfs / SAN của bạn được thiết kế tốt + an toàn!

Mất kết nối NFS / SAN của bạn sẽ có hại cho sức khỏe máy chủ. :-(

Thật dễ dàng để tạo một số tập lệnh cho tftp / pxe để kiểm soát quá trình khởi động.

Nếu tôi biết nhiều hơn những gì bạn thực sự cố gắng phân cụm, có lẽ tôi có thể nghĩ ra một giải pháp phù hợp hơn với bạ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.