Làm thế nào để bạn quản lý các hộp EC2 Linux của bạn?


8

Tôi có một vài hình ảnh EC2 Linux thực hiện các công việc xử lý hàng đêm cho một trong các dự án của tôi. Thỉnh thoảng, tôi sẽ cần phải tham gia, thực hiện một số thay đổi mã, định cấu hình một số thứ và đóng gói lại hình ảnh.

Bộ công cụ của tôi cho các hoạt động này rất thưa thớt (SSH vào hộp, chỉnh sửa các tệp trong các tệp từ xa VIM, WGET mà tôi cần) và tôi nghi ngờ có một cách tốt hơn để làm điều đó. Tôi tò mò muốn nghe những gì người khác ở vị trí của tôi đang làm.

  • Bạn đang sử dụng một số dạng hệ thống Windowing và máy tính để bàn từ xa tương đương với việc truy cập hộp, hay đó là tất cả dòng lệnh? Quản lý các hộp Windows EC2 là không đáng kể, vì bạn có thể chỉ cần từ xa để bàn và truyền tệp qua mạng. Có một cái tương đương với cái này trong thế giới Linux không?

  • Bạn đang thực hiện thay đổi cấu hình / chỉnh sửa tập lệnh trực tiếp trên máy? Hoặc bạn có một cái gì đó được thiết lập trên hộp cục bộ của bạn để chỉnh sửa các tệp này từ xa? Hay bạn chỉ đơn giản là chỉnh sửa chúng từ xa sau đó chuyển chúng ở mỗi lần lưu?

  • Làm thế nào để bạn di chuyển các tập tin qua lại giữa EC2 và môi trường địa phương của bạn? FTP? Một số loại ổ đĩa được ánh xạ thông qua VPN?

Tôi thực sự cần phải có một số thực tiễn tốt nhất để quản lý các hộp này. Bất kỳ đề xuất để loại bỏ một số nỗi đau sẽ được hoan nghênh nhất!

EDIT: Rõ ràng, tôi đã không rõ ràng ở trên, vì hai phản hồi đầu tiên xoay quanh việc quản lý và định cấu hình EC2 Instances. Tôi chỉ muốn biết làm thế nào để điều khiển máy tính từ xa vào Máy chủ Linux đang chạy để việc di chuyển các tệp xung quanh và chỉnh sửa chúng ít gây đau đớn hơn.


Bạn có thể đã nhận được câu trả lời về việc quản lý và định cấu hình phiên bản EC2 vì tiêu đề của bạn là "Làm thế nào để bạn quản lý các hộp EC2 Linux của bạn?"
Bill Weiss

Câu trả lời:


13

Tôi không làm quản trị hệ thống thủ công nữa. Tôi xem cơ sở hạ tầng của mình như một thực thể có thể lập trình và xử lý nó như vậy, bằng cách định cấu hình hệ thống bằng các công cụ tự động hóa quản lý cấu hình, bảo trì nút EC2, v.v. Các công cụ trong hộp công cụ của tôi:

  • Ruby (ngôn ngữ kịch bản / công cụ yêu thích của tôi)
  • Git (kiểm soát phiên bản)
  • Đầu bếp của Opscode (viết bằng Ruby) (1)
  • Capistrano (bảo trì hàng loạt ad hoc)
  • Các công cụ API EC2 của Amazon để bảo trì ví dụ và hình ảnh.
  • Đá quý AWS của Rightscale (ràng buộc Ruby cho EC2)

(1) - Tiết lộ, tôi làm việc cho Opscode. Các công cụ khác lấp đầy không gian này như Con rối của phòng thí nghiệm.

Tôi thực hiện gói AMI khi tôi có một nút được xây dựng theo cách tôi cần cho một chức năng cụ thể. Ví dụ: nếu tôi đang xây dựng máy chủ ứng dụng Rails, tôi sẽ nhận được tất cả các gói điều kiện tiên quyết được cài đặt để tiết kiệm thời gian xây dựng.

Khi thất bại, tôi đăng nhập vào hệ thống bằng SSH. Tôi đã làm quản trị hệ thống thủ công trong nhiều năm, đây là chiếc mũ cũ.

Bạn đang sử dụng một số dạng hệ thống Windowing và máy tính để bàn từ xa tương đương với việc truy cập hộp, hay đó là tất cả dòng lệnh?

Tôi không cài đặt bất kỳ GUI nào trên máy chủ trừ khi gói có phụ thuộc và gói được cài đặt tự động.

Có một cái tương đương với cái này trong thế giới Linux không? (chuyển tập tin)

Tôi thường làm hai loại chuyển tập tin / bảo trì tập tin.

  • Cài đặt gói
  • Tập tin cấu hình

Đối với các gói có nguồn gốc từ nền tảng, tôi sử dụng công cụ quản lý gói tiêu chuẩn như APT hoặc YUM. Đối với các cài đặt nguồn (Something.tar.gz) Tôi thường tải xuống qua wget.

Các tệp cấu hình thường là các mẫu ERB được quản lý bởi Chef.

Tôi sử dụng SSH và SCP / SFTP để truyền tệp theo cách thủ công.

Bạn đang thực hiện thay đổi cấu hình / chỉnh sửa tập lệnh trực tiếp trên máy? Hoặc bạn có một cái gì đó được thiết lập trên hộp cục bộ của bạn để chỉnh sửa các tệp này từ xa? Hay bạn chỉ đơn giản là chỉnh sửa chúng từ xa sau đó chuyển chúng ở mỗi lần lưu?

Tôi giữ mọi thứ liên quan đến việc quản lý hệ thống trong kho điều khiển phần mềm. Đây là quy trình công việc điển hình của tôi khi cập nhật cấu hình trên một hoặc nhiều hệ thống. Tôi bắt đầu từ máy trạm địa phương của tôi.

  • Kéo từ kho Git chính cho những thay đổi của người khác.
  • Chỉnh sửa (các) tệp cục bộ (như, cập nhật tệp cấu hình).
  • Cam kết thay đổi, đẩy lên làm chủ.
  • Trên máy chủ Chef (đăng nhập qua SSH), lấy thay đổi mới nhất tôi vừa cam kết.
  • Triển khai cấu hình đến vị trí thích hợp trên máy chủ Chef (Tôi sử dụng Rake cho việc này).
  • Khách hàng đầu bếp chạy trên một khoảng thời gian, vì vậy họ sẽ nhận thay đổi cứ sau 30 phút. Nếu tôi cần một cái gì đó ngay lập tức, tôi điều hành đầu bếp-khách hàng bằng tay.
  • Xác nhận thay đổi!

Làm thế nào để bạn di chuyển các tập tin qua lại giữa EC2 và môi trường địa phương của bạn? FTP? Một số loại ổ đĩa được ánh xạ thông qua VPN?

Có một vài vị trí nơi các tệp tôi sử dụng trên các nút EC2 có thể được lưu trữ.

  • Máy chủ đầu bếp. Mẫu cấu hình là chủ yếu, một số gói nhỏ quá.
  • GitHub. Chúng tôi lưu trữ mã của chúng tôi (các dự án nguồn mở) trên GitHub. Các nút EC2 có thể nhận được điều này một cách dễ dàng (chẳng hạn như để kiểm tra phiên bản mới nhất của một cái gì đó).
  • Amazon S3 xô. Một số thứ được lưu trữ trong một cái xô.

Tôi làm rất nhiều việc trong EC2, chủ yếu là kiểm tra môi trường và thay đổi. Là kết quả của các công cụ và quy trình làm việc của tôi, tôi dành nhiều thời gian hơn để làm những việc tôi thực sự quan tâm và ít phải xử lý các tệp riêng lẻ và suy nghĩ về các cấu hình cụ thể.


"Tôi sử dụng công cụ quản lý gói tiêu chuẩn như APT hoặc YUM" - apt-get / yum luôn chọn bản mới nhất. Làm thế nào để bạn quản lý nếu bạn phải cài đặt một phiên bản khác của gói (cần thiết theo nhu cầu cụ thể của ứng dụng của bạn)? Hay bạn chưa bao giờ phải đối mặt với điều này?
Talonx

6

Tất cả phần mềm của chúng tôi được triển khai thông qua RPM. Mỗi loại thể hiện EC2 được mô tả bằng tệp khởi động (liệt kê các RPM sẽ được cài đặt ...). Thiết lập khởi động có nghĩa là một máy làm việc của từng loại thể hiện có thể được xây dựng từ đầu trong khoảng 10 phút.

Sau đó, chúng tôi có một chương trình gọi anaconda (trình cài đặt Red Hat) để lấy tệp khởi động, cài đặt hệ thống vào một thư mục, sau đó đóng gói thư mục và đẩy nó lên S3 dưới dạng Amazon Machine Image. Đây là tất cả một bước, vì vậy tôi chỉ cần gõ:

kickstart2ami webserver.ks

Vì một máy có thể được xây dựng lại hoàn toàn, tải lên và chạy trong khoảng 40 phút, việc xây dựng hình ảnh máy mới dễ dàng hơn so với thực hiện sysadmin trên các trường hợp EC2 thực tế (vứt bỏ). Do đó, không có sysadmin thực sự được thực hiện trên các thể hiện EC2.


Vì vậy, bạn thực sự xây dựng lại toàn bộ hộp từ đầu mỗi khi bạn khởi chạy nó? Ôi. Ngay cả công việc nhỏ mà hộp của tôi làm cũng có hàng tá phụ thuộc ngẫu nhiên và một loạt mã tùy chỉnh trong 3 ngôn ngữ. Phải mất một tháng điều chỉnh để thiết lập đúng, vì vậy tôi không thể tưởng tượng được kịch bản phức tạp sẽ tái tạo tất cả những thứ đó trong một lần. Làm thế nào bạn xây dựng và kiểm tra kịch bản đó của bạn?
Jason Kester

tất cả các mã được đóng gói thành các gói RPM ( en.wikipedia.org/wiki/RPM_Package_Manager ), do đó, bất kỳ sự phức tạp nào trong việc cài đặt các đoạn mã khác nhau đều được trừu tượng hóa trong các gói. Hầu hết các nỗ lực sau đó là trong việc đóng gói mã. Tôi thường coi mọi thứ được cài đặt không phải thông qua quản lý gói sẽ được cải thiện. Khởi động chỉ cần cài đặt một danh sách các gói này, vì vậy công việc của nó khá đơn giản. Vì, không có cấu hình / tinh chỉnh ma thuật, không có máy nào là đặc biệt hay quý giá. "kickstart2ami" chỉ cần gọi anaconda, sau đó các công cụ đăng ký / đăng ký ec2 theo thứ tự, với một số keo.
tfh1985

1
Bạn có thể chia sẻ kịch bản kickstart2ami của bạn?

@JasonKester Bất cứ điều gì quan trọng mà "mất một tháng điều chỉnh để thiết lập đúng" chắc chắn là tài liệu đáng để ghi lại các bước để tái tạo. Cách nào tốt hơn để ghi lại nó hơn bằng cách viết kịch bản?
Skyhawk

3

Tôi thích NX để truy cập gui từ xa. Tài liệu rất tốt quá.


3

Tôi sử dụng nautilus cho khá nhiều quản lý tập tin và ssh cho các lệnh. Nó cắm ngay vào hệ thống của bạn giống như bạn đang sử dụng nó trong trung tâm dữ liệu. Nếu bạn đang thực hiện nó từ hộp cửa sổ, thì loại kết nối này sẽ không hoạt động vì vfs trong windows bị hạn chế.


2

Tôi nghĩ bạn không cần Remote Desktop cho các tác vụ này.

Như những người khác đã đề cập, bạn có thể sử dụng SFTP để chuyển các tệp giữa các hộp. Sử dụng ứng dụng khách WinSCP để kết nối qua sftp, bạn cũng có thể sử dụng để chỉnh sửa các tệp trên máy windows của mình (bằng cách nhấp đúp vào chúng) như thể nó nằm trên máy cục bộ của bạn. Bạn cũng có thể sử dụng nó để sao chép / di chuyển các tập tin từ xa.

Bạn cũng có thể xem xét sử dụng Midnight Commander (mc) trên bảng điều khiển ssh có thể tăng tốc hoạt động của tệp. Để cài đặt sử dụng lệnh yum install mchoặc apt-get install mc. Sau đó, bạn có thể bắt đầu nó bằng cách gõ mctrên thiết bị đầu cuối. Nó cũng có một trình xem và trình soạn thảo tích hợp đơn giản hơn vim.

Nếu bạn thực sự muốn có GUI - mà chúng ta thường không có trên máy chủ - bạn phải cài đặt môi trường X và kết nối với nó với VNC. Trong những trường hợp như vậy, chúng tôi kết nối với máy chủ VNC thông qua một đường hầm ssh để tăng thêm bảo mật cho nó.


1

Để trả lời câu hỏi của bạn về việc thiết lập máy tính để bàn từ xa với X, nếu bạn đang sử dụng Debian, hãy đọc phần này . Đây không hẳn là tài liệu tuyệt vời nhất để thiết lập nó. Nó có cách bạn cài đặt quá nhiều gói, nhưng nó đã có ý tưởng đúng. Bạn thực sự chỉ cần một trình điều khiển video giả cho X, và sau đó có VNC khởi động máy tính để bàn X.


0

Nếu bạn đang sử dụng ubfox: chúng tôi đang xem xét sử dụng phong cảnh cho việc này, đây là một sản phẩm thương mại của nhóm ubfox (chính tắc) và sẽ được tích hợp với các lệnh ec2.


Cảm ơn, nhưng đó dường như là một công cụ để quản lý các phiên bản EC2, thay vì để máy tính từ xa vào một hộp riêng lẻ, đó là điều tôi đang tìm kiếm các công cụ để làm.
Jason Kester

0

Bạn có thể thử một cái gì đó như capistrano nhưng nếu điều đó không đủ cho những gì sau đó thì có vẻ như bạn là ứng cử viên cho một số loại quản lý cấu hình.
Con rối, reducteelsabs.com/products/puppet/, là một người thực sự nổi bật trong lĩnh vực này nhưng có thể hơi quá mức cho bạn trừ khi bạn có kế hoạch trở nên lớn hơn và sau đó là công việc khó khăn của bạn.
Nếu bạn đang sử dụng một trong các bản phân phối debian / ub Ubuntu thì tôi sẽ kiểm tra Slack Roles
Nó là một trình bao bọc ưa thích cho rsync và shell script. Điều này có rất ít học tập trả trước và hoạt động tốt, tuy nhiên khi bạn phát triển nó có thể có một chút lộn xộ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.