Làm thế nào để quy mô đúng Jenkins?


27

Trong dự án của tôi, chúng tôi có một máy chủ AWS chạy Jenkins Master + 1 Jenkins nô lệ (2 người thực thi) ... và chúng tôi cần nhiều hơn nữa
để tăng sức mạnh xây dựng của chúng tôi, chúng tôi có ba tùy chọn:

  1. Mở rộng quy mô : Làm cho cá thể AWS lớn hơn và thêm nhiều người thực thi.
  2. Mở rộng quy mô : Làm cho cá thể AWS lớn hơn và thêm một quy trình nô lệ jenkins khác.
  3. Thu nhỏ : Tạo một cá thể AWS khác với nô lệ jenkins và kết nối nó với chủ

Chúng tôi muốn làm 2. vì chúng tôi đang ở trong một tổ chức lớn và Jenkins Master hiện tại của chúng tôi đã truy cập vào mọi nơi anh ấy cần. Tùy chọn 3. "Máy chủ mới" rất phức tạp vì nó cần nhiều phê duyệt quan liêu hơn sẽ mất vài tuần.

Vì vậy, câu hỏi của tôi là:

  • Có bất kỳ vấn đề kỹ thuật trong tùy chọn 2? . Có lẽ những người thi hành của mỗi nô lệ jenkins không biết về những người thi hành nô lệ khác?
  • Nói chung, cách tiếp cận tốt nhất để quy mô Jenkins là gì? Mở rộng quy mô hay nhân rộng?

Bạn sẽ gặp khó khăn, việc thay đổi loại thể hiện có thể gặp vấn đề nếu bạn chuyển sang loại phần cứng khác, vì âm lượng của bạn sẽ phải được sao lưu và khôi phục trong trường hợp mới.
Tensibai

2
Tại sao không phải là số 3? Cách thông thường để gửi công việc cho Jenkins là thành thạo. Và dựa trên một số tiêu chí nhất định, chủ nhân sẽ gửi nó liền mạch đến nô lệ thích hợp
Romeo Ninov

FWIW, bạn cũng cần phân tích cấu trúc bản dựng của mình để xem cách nó sử dụng tài nguyên của máy xây dựng - mở rộng có thể không giúp ích - Tôi gặp phải trường hợp thời gian xây dựng cho 2 bản dựng song song trên cùng một thời gian dài hơn thời gian xây dựng kết hợp của cùng 2 bản dựng được thực hiện tuần tự, không chồng chéo. Trong trường hợp như vậy # 3 thực sự sẽ là lựa chọn thực tế duy nhất có sẵn.
Dan Cornilescu

Tôi đồng ý rằng # 3 tốt hơn nhưng tôi không có tranh luận về nó hoặc tranh cãi với # 1 và # 2 ...
Oscar Foley

Nếu bạn có cơ hội trong môi trường của mình, tôi sẽ tìm đến một giải pháp phù du. Thấy rằng bạn đã ở trong AWS, bạn có thể dễ dàng đưa máy lên xuống khi cần trong khi xử lý khối lượng công việc. wiki.jenkins.io/display/JENKINS/Amazon+EC2+Plugin
vega

Câu trả lời:


11

Không có vấn đề kỹ thuật cơ bản nào với việc chạy nhiều nô lệ jenkins trên cùng một máy. Trong thực tế Chạy nhiều nô lệ trên cùng một máy liệt kê một số lý do chính đáng để thực hiện:

Mặc dù việc sử dụng chính xác các trình thực thi phần lớn làm giảm nhu cầu sử dụng nhiều phiên bản nô lệ trên cùng một máy, có một số trường hợp sử dụng duy nhất cần xem xét:

  • Bạn muốn có nhiều cấu hình hơn giữa các nút được cấu hình. Giả sử bạn có một nút được đặt để sử dụng càng nhiều càng tốt và nút khác chỉ được sử dụng khi cần.
  • Bạn có thể có nhiều bản cài đặt chính Jenkins xây dựng những thứ khác nhau, và vì vậy cấu hình này sẽ cho phép bạn có nô lệ cho nhiều chủ trên cùng một hộp. Đúng vậy, với Jenkins bạn thực sự có thể phục vụ hai bậc thầy.
  • Bạn có thể muốn tận dụng sự dễ dàng của việc khởi động / dừng / thay thế máy ảo, có thể kết hợp với các plugin Jenkins như Plugin Libvirt Slaves .
  • Bạn muốn tối đa hóa đầu tư và sử dụng phần cứng của mình, đồng thời giảm thiểu chi phí vận hành (ví dụ: chi phí tiện ích để chạy nô lệ chạy không tải).

Nói chung, việc mở rộng quy mô được ưu tiên, chủ yếu là vì khả năng mở rộng quy mô thường bị giới hạn bởi các loại / kích cỡ của tài nguyên vật lý có sẵn.

Đặc biệt để tăng sức mạnh xây dựng, tôi khuyên bạn nên phân tích bản dựng thực tế của mình để xác định cách sử dụng tài nguyên máy, trong đó / nơi tắc nghẽn của nó và những hạn chế về khả năng mở rộng mà nó tăng lên để tiết lộ nếu tăng quy mô thậm chí còn giúp ích.

Ví dụ: tôi gặp các trường hợp trong đó thời gian xây dựng cho 2 bản dựng song song trên cùng một máy dài hơn thời gian xây dựng kết hợp của cùng 2 bản dựng được thực hiện tuần tự (không chồng lấp) trên cùng một máy. Trong trường hợp như vậy, tôi thậm chí sẽ không xem xét mở rộng vì nó thực sự sẽ làm giảm công suất xây dựng chung.



3

Tôi nghĩ bạn không nên làm;)

Vâng tốt bụng. Tôi nghĩ rằng bạn cần nhiều người thực thi hơn, có thể các bản dựng của bạn thực sự tốn nhiều tài nguyên? Tôi sẽ chạy ít nhất 4 nhưng chúng tôi chạy 6 đến 8 tùy theo công việc. Tôi thích kết hợp # lõi với exector. Vì vậy, bạn có thể muốn mở rộng các nút của mình, tôi nghĩ rằng chúng tôi chạy một M4 lớn cho 4-8 người thực thi của chúng tôi.

Tôi cũng nghĩ bạn nên mở rộng quy mô nhưng bạn nên làm như vậy một cách thông minh. Jenkins có một plugin để tự động mở rộng quy mô trên AWS tùy thuộc vào những gì trong hàng đợi xây dựng. Về cơ bản, bạn cho nó biết có bao nhiêu công việc và thời gian chờ đợi trước khi nó đứng lên làm nô lệ và gửi công việc cho nô lệ mới. Bạn cũng có thể đặt số lượng nô lệ tối đa, số tiền tối thiểu, v.v.


2

Tôi sẽ mở rộng thay vì mở rộng quy mô, đi đến tùy chọn 3. Chúng tôi đã thiết lập nơi chúng tôi có tất cả các đại lý Jenkins chạy trên ECS (Dockkins dựa trên Docker tùy chỉnh) với một nhóm tự động mở rộng. Chúng tôi có tất cả các bậc thầy Jenkins của chúng tôi liên lạc với ECS, do đó chia sẻ khối lượng công việc trên ECS, và không cần phải tạo lại chủ nhân Jenkins trong một bài tập mở rộng.

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.