Nền tảng điều phối container

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kiến trúc triển khai liên tục cho các hệ thống dựa trên vi dịch vụ luận văn ths máy tính 84801 (Trang 42 - 46)

3.2 Phân tích và lựa chọn công nghệ

3.2.4 Nền tảng điều phối container

Hiện nay, cùng với sự phổ biến của công nghệ container, số lượng các nền tảng

điều phối container ngày càng tăng lên. Trong đó, các nền tảng phổ biến nhất là

Amazon ECS, Azure Container Service, Goole Container Engine, Diego của Cloud Foundry, Kubernetes, Docker Swarm, Mesosphere Marathon. Tuy nhiên, hầu hết các nền tảng điều phối đều là bản thương mại được cung cấp bởi các cơng ty điện tốn đám mây, ngoại trừ Docker swarm, Mesosphere Marathon và Kubernetes. Luận văn

3.2.4.1 Docker swarm

Từ Docker Engine phiên bản 1.12.0 trở đi, Docker cho phép người dùng triển

khai container theo trạng thái Swarm. Docker swarm được xây dựng dựa trên Docker API và làm việc như sau: một swarm là một nhóm các máy chạy Docker và làm việc cùng nhau như một cluster. Người dùng vẫn sử dụng các lệnh Docker như trước để

tương tác nhưng ở trạng thái này, các lệnh sẽ được thực thi trong cluster bởi swarm

manager.

Hình 3.5: Kiến trúc của Docker Swarm [17]

Swarm manager có trách nhiệm như bộ lập lịch, phối hợp với các agent chạy trên mỗi máy để quản lý tài nguyên. Trong Docker swarm, chức năng lập lịch không bị

giới hạn bởi Docker và có thể được thay thế bởi các phần mềm khác như Apache

Mesos. Các swarm manager là các máy duy nhất nhận yêu cầu của người dùng. Các máy khác gia nhập vào swarm sẽ đóng vai trị là worker, được ủy quyền để thực hiện tác vụ.

Để chạy một dịch vụ trong Docker Swarm, người dùng khai báo ảnh container

cần chạy và số lượng bản sao cần thiết.

Ví dụ: để khai báo việc chạy dịch vụ nginx với hai bản sao, người dung có thể

triển khai bằng câu lệnh sau:

# docker service create --replicas 2 --name mynginx nginx

Trong ví dụ này, hai bản sao của ảnh nginx sẽ được các manager node điều phối

để chạy trên worker node. Mỗi ảnh sẽ là một container chạy độc lập.

Để đảm bảo giao tiếp mạng giữa các container trên các máy khác nhau, Docker

trợ mặc định trên Docker swarm là Docker Overlay Driver. Ngoài ra, người dùng có thể sử dụng các cơng nghệ khác để thay thế như Flannel, Weave, Calico ...

Docker swarm hỗ trợ các công nghệ thường dùng để lưu trạng thái cluster như

etcd, consul và zookeeper. Trước đây người dùng cần tự phát triển tính năng khám phá dịch vụ dựa vào Docker API và các công nghệ lưu trữ nêu trên, nhưng hiện tại một số công cụ khám phá tự động dựa vào DNS đã được phát triển và sử dụng phổ biến với Docker Swarm như wagl.

3.2.4.2 Mesosphere Marathon

Apache Mesos là nền tảng quản lý cluster mục đích chung, hoạt động như nhân của một điều hành phân tán, được xây dựng dựa trên các nguyên lý tương tự như nhân Linux nhưng khác ở phạm vi ứng dụng: Mesos trừu tượng hóa CPU, bộ nhớ, bộ lưu trữ và các tài nguyên tính tốn khác trong tồn bộ cluster, khiến cluster giống như một máy tính khổng lồ mà dựa vào đó các hệ thống phân tán được build và chạy một cách dễ dàng, hiệu quả.

Nhân Mesos được chạy trên tất cả các máy và cung cấp các ứng dụng lớp trên

(như: Hadoop, Spark, Cassandra, Elasticsearch) những API giúp quản lý tài nguyên và lập lịch chạy trên toàn bộ cluster. Giống với nhân hệ điều hành bình thường, Mesos

thường khơng hoạt động một mình mà được sử dụng kèm với các bộ khung khác, như Apache Spark, Apache Casandra, Chronos hay Marathon (Hình 3.6). Mesos hỗ trợ chạy dịch vụ ở dạng đã được container hóa cũng như dạng chạy trực tiếp (bash script, Python, ứng dụng JVM...).

Mesosphere Marathon là một bộ khung giúp điều phối container trên Mesos,

cung cấp khả năng scale và tự khôi phục. Tương tự như Docker Swarm, Mesos hoạt

động theo mơ hình chủ-nơ lệ, trong đó các agent trong máy nô lệ sẽ gửi thông tin về

tài nguyên cho máy chủ. Bộ lập lịch trong Marathon đăng kí với Mesos để nhận các

thơng tin cập nhật về tài nguyên và dựa theo đó để lựa chọn máy chạy một cách hợp lí. Kết nối mạng giữa các container trên các máy chạy trong Mesos cluster phụ thuộc vào công nghệ container được sử dụng: Mesos containerizer hoặc Docker

containerizer. Với Docker containerizer, kỹ thuật mạng multihost được sử dụng như đề cập ở phần Docker swarm [11].

Hình 3.6: Kiến trúc của Apache Mesos

Mesos cho phép người dùng tích hợp nhiều cơng cụ khám phá dịch vụ khác nhau, tuy nhiên giải pháp thường được dùng là Mesos-DNS, một dạng dịch vụ DNS

tương tự như DNS trong Docker swarm wagl.

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kiến trúc triển khai liên tục cho các hệ thống dựa trên vi dịch vụ luận văn ths máy tính 84801 (Trang 42 - 46)

Tải bản đầy đủ (PDF)

(83 trang)