2014-07-06 17 views
7

Tôi đang cố gắng mở rộng quy mô Jenkins cho một tổ chức lớn. Có cách nào để có nhiều bậc thầy Jenkins chia sẻ một hồ bơi nô lệ không? Ví dụ, nếu tôi có 200 Jenkins Masters và tôi muốn họ chia sẻ cùng một bộ 50 nô lệ Linux.Nhiều bậc thầy Jenkins sử dụng hồ bơi Slave chung

Tức là, mỗi nô lệ chỉ có 1 người thi hành, nếu Master A gửi công việc tới nhóm nô lệ và nó đang chạy trên Slave 1, nếu Master B gửi công việc tới nhóm nô lệ, nó sẽ cố gắng chạy một trong những nô lệ miễn phí khác, kể từ khi Slave 1 đã bị chiếm đóng.

Tôi biết nhiều thạc sĩ có thể chia sẻ một nô lệ duy nhất nếu tôi định cấu hình bộ tớ để có một không gian làm việc mới và bộ thực thi cho mỗi chủ. Tuy nhiên, tôi muốn có thể thiết lập các nô lệ lên một lần, thay vì có một slave.jar chạy trên nô lệ cho mỗi chủ.

Cloudbees Op Center dường như cung cấp chức năng này, nhưng tìm cách để thực hiện việc này với phiên bản Nguồn mở. Nếu không, làm thế nào khó khăn để bạn nghĩ rằng nó sẽ được mở rộng Jenkins để có chức năng này? Tôi có kinh nghiệm phát triển Java và đã thực hiện một công việc nhỏ với việc phát triển plugin Jenkins.

Cảm ơn,

Trả lời

8

Như bạn đã thấy nó không khó để chia sẻ nô lệ giữa các bậc thầy, chỉ cần thiết lập nhiều không gian làm việc và mỗi chủ sẽ cài đặt nó jar nô lệ riêng. Bí quyết là chia sẻ tài nguyên đúng cách.

Một trình quản lý tài nguyên như vậy là Apache Mesos. Một Jenkins Mesos plugin tồn tại cho phép tạo ra nô lệ trên một cụm được quản lý.

Cách tiếp cận này là rất mới và Ebay đã viết blog về cách họ đã phát triển thiết lập Jenkins họ để sử dụng Mesos:

Hope this helps.

+0

Cảm ơn điều này, điều này có vẻ thực sự thú vị. Chưa đào sâu vào điều này nhiều, nhưng điều này chắc chắn dường như phù hợp với rất nhiều những gì chúng tôi muốn làm. Sẽ đào sâu vào điều này, cảm ơn một lần nữa. – mpstack

+0

@ mark-oconnor Sau hai năm nữa, bạn có thể xác nhận rằng phương pháp tiếp cận Mesos vẫn hoạt động tốt và có quy mô tốt trong sản xuất không? Có điều gì phải lo lắng không? – sorin

+0

@sorin Hai năm là một đời trong công nghệ :-) Những ngày này tôi chạy Jenkins như một container trên Kubernetes, với các plugin Kubernetes để chạy công việc nô lệ. –

2

Có một số Gearman Plugin được phát triển bởi Open Stack để xử lý các bản chia sẻ nô lệ của nhiều chủ.

+2

Thật không may nó cung cấp một chi phí rất lớn và chủ Jenkins của chúng tôi với ~ 2000 việc làm và 32 nô lệ ngừng đáp ứng, khi chúng tôi bật plugin. Ngoài ra nó được cho là, nó không hoạt động với các dự án Matrix. –

0

Nếu đó là tôi, tôi sẽ thiết lập tất cả các bậc thầy với một plugin đám mây cho nô lệ. Ví dụ, bạn có thể cài đặt kubernetes plugin hoặc nomad plugin và kết nối tất cả các bậc thầy lên đến cùng một kubernetes hoặc cụm du mục. Nomad hoặc Kubernetes sẽ quản lý việc quản lý tài nguyên và các thạc sĩ sẽ chỉ gửi công việc tới một nhóm tài nguyên được chia sẻ. Khái niệm này có thể dễ dàng được áp dụng cho các nhà cung cấp đám mây khác, như AWS, nhưng IMHO nếu bạn chỉ muốn thiết lập một nguồn tài nguyên tại chỗ cho các bậc thầy jenkins của bạn từ đầu, nomad là lựa chọn dễ dàng nhất.

Các vấn đề liên quan