Chủ Nhật, 01/02/2015 | 00:00 GMT+7

Hệ sinh thái Docker: Lập lịch và Điều phối

Công cụ Docker cung cấp tất cả các chức năng cần thiết để xây dựng, tải lên, download , bắt đầu và dừng các containers . Nó rất phù hợp để quản lý các quy trình này trong môi trường server đơn với số lượng containers tối thiểu.

Tuy nhiên, nhiều user Docker đang tận dụng nền tảng này như một công cụ để dễ dàng mở rộng số lượng lớn các containers trên nhiều server khác nhau. Các server Docker theo cụm đưa ra những thách thức quản lý đặc biệt đòi hỏi một bộ công cụ khác.

Trong hướng dẫn này, ta sẽ thảo luận về bộ lập lịch Docker và các công cụ điều phối. Chúng đại diện cho giao diện quản lý containers chính dành cho administrator của các triển khai phân tán.

Lập lịch containers , điều phối và quản lý cụm

Khi các ứng dụng được mở rộng trên nhiều hệ thống server lưu trữ, khả năng quản lý từng hệ thống server lưu trữ và loại bỏ sự phức tạp của nền tảng cơ bản trở nên hấp dẫn. Điều phối là một thuật ngữ rộng đề cập đến việc lập lịch containers , quản lý cụm và có thể là việc cung cấp các server bổ sung.

Trong môi trường này, “lập lịch” đề cập đến khả năng administrator tải file dịch vụ lên hệ thống server lưu trữ cài đặt cách chạy một containers cụ thể. Trong khi lập lịch đề cập đến hành động cụ thể tải định nghĩa dịch vụ, theo nghĩa chung hơn, bộ lập lịch có trách nhiệm kết nối vào hệ thống init của server để quản lý dịch vụ ở bất kỳ khả năng nào cần thiết.

Quản lý cụm là quá trình kiểm soát một group server . Điều này có thể liên quan đến việc thêm và xóa server khỏi một cụm, nhận thông tin về trạng thái hiện tại của server và containers cũng như bắt đầu và dừng các quy trình. Quản lý cụm gắn chặt với lập lịch vì bộ lập lịch phải có quyền truy cập vào từng server trong cụm để lập lịch dịch vụ. Vì lý do này, cùng một công cụ thường được sử dụng cho cả hai mục đích.

Để chạy và quản lý containers trên các server trong toàn cụm, bộ lập lịch phải tương tác với hệ thống init riêng lẻ của mỗi server . Đồng thời, để dễ quản lý, bộ lập lịch trình bày một cái nhìn thống nhất về trạng thái của các dịch vụ trong toàn bộ cụm. Điều này kết thúc hoạt động giống như một hệ thống init toàn cụm. Vì lý do này, nhiều bộ lập lịch phản ánh cấu trúc lệnh của hệ thống init mà chúng đang trừu tượng hóa.

Một trong những trách nhiệm lớn nhất của người đặt lịch là lựa chọn server . Nếu administrator quyết định chạy một dịch vụ (vùng chứa) trên cụm, người lập lịch thường được tính tự động chọn server . Người quản trị có thể tùy chọn cung cấp các ràng buộc lập lịch theo nhu cầu hoặc mong muốn của họ, nhưng người lập lịch cuối cùng phải chịu trách nhiệm thực hiện các yêu cầu này.

Người lập kế hoạch đưa ra quyết định lập lịch biểu như thế nào?

Người lập lịch thường xác định một policy lập lịch mặc định. Điều này xác định cách các dịch vụ được lên lịch khi không có thông tin đầu vào nào từ administrator . Ví dụ: một bộ lập lịch có thể chọn đặt các dịch vụ mới trên các server có ít dịch vụ hiện đang hoạt động nhất.

Bộ lập lịch biểu thường cung cấp các cơ chế overrides mà administrator có thể sử dụng để tinh chỉnh các quy trình lựa chọn nhằm đáp ứng các yêu cầu cụ thể. Ví dụ: nếu hai containers phải luôn chạy trên cùng một server lưu trữ vì chúng hoạt động như một đơn vị, thì mối quan hệ đó thường có thể được khai báo trong quá trình lập lịch.Tương tự như vậy, nếu hai containers không nên được đặt trên cùng một server , chẳng hạn như đảm bảo tính khả dụng cao của hai version của cùng một dịch vụ, thì điều này cũng có thể được xác định.

Các ràng buộc khác mà người lập lịch có thể chú ý đến có thể được biểu diễn bằng metadata tùy ý. Các server riêng lẻ có thể được gắn nhãn và nhắm đến theo lịch trình. Điều này có thể cần thiết, ví dụ, nếu một server chứa data volumes cần thiết cho một ứng dụng. Một số dịch vụ có thể cần được triển khai trên mỗi server riêng lẻ trong cụm. Hầu hết các lịch trình cho phép bạn làm điều này.

Bộ lập lịch cung cấp các chức năng quản lý cụm nào?

Lập lịch thường được gắn với các chức năng quản lý cụm vì cả hai chức năng đều yêu cầu khả năng hoạt động trên các server cụ thể và trên toàn bộ cụm.

Phần mềm quản lý cụm được dùng để truy vấn thông tin về các thành viên của cụm, thêm hoặc xóa thành viên hoặc thậm chí kết nối với các server riêng lẻ để quản trị chi tiết hơn. Các chức năng này có thể được đưa vào bộ lập lịch, hoặc có thể là trách nhiệm của một quá trình khác.

Thông thường, quản lý cụm cũng được liên kết với công cụ khám phá dịch vụ hoặc kho giá trị khóa phân tán. Chúng đặc biệt phù hợp để lưu trữ loại thông tin này vì thông tin được phân tán trong chính cụm và nền tảng đã tồn tại cho chức năng chính của nó.

Do đó, nếu bản thân bộ lập lịch không cung cấp các phương pháp, một số hoạt động quản lý cụm có thể phải được thực hiện bằng cách sửa đổi các giá trị trong repository lưu trữ cấu hình bằng cách sử dụng các API được cung cấp. Ví dụ: các thay đổi về thành viên cụm có thể cần được xử lý thông qua các thay đổi thô đối với dịch vụ khám phá.

Kho key-value cũng thường là vị trí có thể lưu trữ metadata về các server riêng lẻ. Như đã đề cập trước đây, server lưu trữ gắn nhãn cho phép bạn nhắm đến các cá nhân hoặc group để lên lịch quyết định.

Làm thế nào để triển khai nhiều containers phù hợp với lập lịch trình?

Đôi khi, ngay cả khi mỗi thành phần của một ứng dụng đã được chia thành một dịch vụ riêng biệt, chúng nên được quản lý như một đơn vị duy nhất. Có những lúc sẽ không hợp lý nếu triển khai một dịch vụ này mà không có dịch vụ khác vì các chức năng mà mỗi dịch vụ cung cấp.

Lập lịch nâng cao có tính đến group containers có sẵn thông qua một số dự án khác nhau. Có khá nhiều lợi ích mà user có được khi truy cập vào chức năng này.

Quản lý containers group cho phép administrator xử lý tập hợp các containers như một ứng dụng duy nhất. Chạy các thành phần tích hợp chặt chẽ như một đơn vị giúp đơn giản hóa việc quản lý ứng dụng mà không làm mất đi lợi ích của việc phân chia chức năng riêng lẻ. Trên thực tế, nó cho phép các administrator giữ được lợi ích giành được từ quá trình container hóa và kiến trúc hướng dịch vụ trong khi giảm thiểu chi phí quản lý bổ sung.

Group các ứng dụng lại với nhau nghĩa là chỉ cần lên lịch cho chúng cùng nhau và cung cấp khả năng khởi động và dừng chúng cùng một lúc. Nó cũng có thể cho phép các tình huống phức tạp hơn như cấu hình các mạng con riêng biệt cho từng group ứng dụng hoặc mở rộng toàn bộ group containers mà trước đây ta chỉ có thể mở rộng trên quy mô containers .

Cấp phép là gì?

Một khái niệm liên quan đến quản lý cụm là cung cấp. Cấp phép là quy trình đưa các server mới trực tuyến và cấu hình chúng theo cách cơ bản để chúng sẵn sàng hoạt động. Với triển khai Docker, điều này thường ngụ ý cấu hình Docker và cài đặt server mới để tham gia một cụm hiện có.

Mặc dù kết quả cuối cùng của việc cung cấp server lưu trữ phải luôn là một hệ thống mới có sẵn để hoạt động, phương pháp luận thay đổi đáng kể tùy thuộc vào các công cụ được sử dụng và loại server lưu trữ. Ví dụ: nếu server lưu trữ là một máy ảo, các công cụ như vagrant được dùng để tạo một server mới. Hầu hết các nhà cung cấp cloud cho phép bạn tạo server mới bằng cách sử dụng API. Ngược lại, việc cung cấp phần cứng trống có thể yêu cầu một số bước thủ công. Có thể tham gia vào các công cụ quản lý cấu hình như Chef, Puppet, Ansible hoặc Salt để quản lý cấu hình ban đầu của server và cung cấp cho nó thông tin cần thiết để kết nối với một cụm hiện có.

Việc cấp phép có thể được để lại như một quá trình do administrator khởi xướng hoặc có thể nó có thể được kết nối với các công cụ quản lý cụm để mở rộng quy mô tự động. Phương pháp thứ hai này liên quan đến việc xác định quy trình yêu cầu các server bổ sung cũng như các điều kiện mà điều này sẽ tự động được kích hoạt. Ví dụ: nếu ứng dụng của bạn đang bị tải nặng, bạn có thể cần hệ thống của bạn tạo thêm các server và chia tỷ lệ các containers theo chiều ngang trên cơ sở hạ tầng mới để giảm bớt tắc nghẽn.

Một số bộ lập lịch phổ biến là gì?

Về lập lịch cơ bản và quản lý cụm, một số dự án phổ biến là:

  • hạm đội : Hạm đội là thành phần lập lịch trình và quản lý cụm của CoreOS. Nó đọc thông tin kết nối cho từng server trong cụm từ etcd và cung cấp quản lý dịch vụ giống systemd.
  • marathon : Marathon là thành phần lập lịch trình và quản lý dịch vụ của cài đặt Mesosphere. Nó hoạt động với mesos để kiểm soát các dịch vụ chạy lâu dài và cung cấp giao diện user web để quản lý quy trình và containers .
  • Swarm : Docker Swarm là một bộ lập lịch mà dự án Docker đã công bố vào tháng 12 năm 2014. Nó hy vọng sẽ cung cấp một bộ lập lịch mạnh mẽ có thể tạo ra các containers trên các server được cung cấp với Docker, sử dụng cú pháp Docker-native.

Là một phần của chiến lược quản lý cụm, các cấu hình Mesosphere dựa vào thành phần sau:

  • mesos : Apache mesos là một công cụ tóm tắt và quản lý tài nguyên của tất cả các server trong một cụm. Nó trình bày một bộ sưu tập các tài nguyên có sẵn trong toàn bộ cụm cho các thành phần được xây dựng trên nó (như marathon). Nó mô tả bản thân nó tương tự như một “ kernel ” cho một cấu hình được phân group .

Về lập lịch nâng cao và kiểm soát các group container như một đơn vị duy nhất, các dự án sau đây có sẵn:

  • kubernetes : Bộ lập lịch nâng cao của Google, kubernetes cho phép kiểm soát nhiều hơn các containers đang chạy trên cơ sở hạ tầng của bạn. Các containers có thể được gắn nhãn, group và cấp mạng con của riêng chúng để giao tiếp.
  • soạn : Dự án soạn của Docker được tạo để cho phép quản lý group các containers bằng cách sử dụng file cấu hình khai báo.Nó sử dụng các liên kết Docker để tìm hiểu về mối quan hệ phụ thuộc giữa các containers .

Kết luận

Quản lý cụm và lập lịch làm việc là một phần quan trọng của việc triển khai các dịch vụ container trên một tập hợp các server phân tán. Chúng cung cấp điểm quản lý chính để thực sự bắt đầu và kiểm soát các dịch vụ đang cung cấp ứng dụng của bạn. Bằng cách sử dụng các bộ lập lịch một cách hiệu quả, bạn có thể áp dụng các thay đổi mạnh mẽ cho các ứng dụng của bạn mà không tốn rất nhiều công sức.


Tags:

Các tin liên quan

Hệ sinh thái Docker: Giới thiệu về các thành phần chung
2015-02-01
Hệ sinh thái Docker: Tổng quan về Containerization
2015-02-01
Hệ sinh thái Docker: Khám phá dịch vụ và Cửa hàng cấu hình phân tán
2015-02-01
Hệ sinh thái Docker: Mạng và Truyền thông
2015-02-01
Cách thiết lập registry Docker riêng trên Ubuntu 14.04
2014-10-15
Cách thực hiện kiểm tra tích hợp liên tục với Drone.io trên CoreOS và Docker
2014-10-08