Trang chủTác giảLiên hệ

[Docker swarm - P1] Kiến thức cơ bản về Docker swarm

By Nguyễn Thanh Sơn
Published in Docker
June 09, 2021
2 min read

Hãy hình dung khi phát triển một dự án web với docker bao gồm các service sau: web server (apache, nginx), database, redis

Thiết kế đơn giản nhất đó là deploy tất cả các service lên cùng một host như sau: alt text

Về cơ bản giải pháp này hoàn toàn ổn với các dự án nhỏ với lượng truy cập thấp. Tuy nhiên với dự lớn hơn, việc scale khá là khó khăn với kiến trúc này.

Để giải quyết vấn đề đó, ta có thể deploy riêng biệt từng service lên các host khác nhau alt text

Với việc quản lý bằng docker cơ bản, mỗi service sẽ được quản lý bằng một Docker CLI riêng biệt. Điều này lại dẫn tới vấn đề khó khăn trong việc quản lý nếu số lượng service tăng lên.

Docker swarm chính là câu trả lời cho vấn đề này.

Docker swarm là gì?

Docker swarm là một công cụ cho phép nhóm các physical hoặc virtual machine có cài đặt Docker deamon thành một cụm (cluster) hay còn gọi là swarm, ta có thể xem nó như là một docker host ảo (vitural docker host) duy nhất. Docker swarm cung cấp các tính năng để có thể dễ dàng quản lý và điều phối cluster.

alt text

Các khái niệm chính trong docker swarm

alt text

Node

Khi run docker với swarm mode, mỗi docker host được gọi là một node. Node được chia làm 2 loại đó là manager (để quản lý swarm) và worker (để run service). Mỗi node trong swarm có thể là manager, worker hoặc có thể là cả 2.

Manager node: Là node nhận thông tin service cần deploy từ user, nó điều phối các task đến các worker trong swarm. Mặc định manager node cũng là một worker node

Worker node: Có trách nhiệm nhận và thực thi các task được gửi đi từ manager node.

Service và Task

Một Service là một khai báo docker image cần được run trên các manage và worker node trong swarm. Khi tạo một service, cần phải chỉ định cụ thể image và command nào sẽ được thực thi bên trong container.

Service có thể được run với 2 model sau:

  • Replicated services: swarm manager chỉ định cụ thể số lượng replica của task giữa các node trong cluster.
  • Global services: swarm manager assign 1 task cho mỗi node trong cluster

Một Task tương ứng với 1 docker container và các command sẽ thực thi trong container đó, được khai báo khi tạo service. Manager node assign task tới các worker node dựa vào số lượng replica được khai báo trong service.

Kết

Trên đây là những khái niệm cơ bản nhất về Docker swarm. Hy vọng bài viết này sẽ giúp các bạn có được cái nhìn tổng quan về Docker swarm. Ở phần tiếp theo mình sẽ hưỡng dẫn các bạn cách để tạo 1 swarm và làm sao để deploy service lên Docker swarm. Hẹn các bạn ở bài viết tiếp theo.


Nguyễn Thanh Sơn

Developer

Related Posts

Docker
[Docker swarm - P3] Deploy một stack lên docker swarm
June 09, 2021
3 min
© 2021, All Rights Reserved.

Quick Links

Liên hệ quảng cáoThông tinLiên hệ

Social Media