CodeGym /Các khóa học /Docker SELF /Giới thiệu về Docker Swarm

Giới thiệu về Docker Swarm

Docker SELF
Mức độ , Bài học
Có sẵn

6.1 Các khái niệm chính của Docker Swarm

Docker Swarm — là hệ thống orchestration container tích hợp sẵn, được cung cấp bởi Docker. Nó cho phép bạn tạo, quản lý và mở rộng cluster từ các Docker-hosts, biến chúng thành một host logic duy nhất, nơi bạn có thể chạy các container. Swarm tự động phân phối tasks giữa các nodes, mang lại sự tiện lợi và khả năng chịu lỗi. Trong bài giảng này, chúng ta sẽ cùng tìm hiểu các thành phần chính và các lệnh cơ bản để quản lý Docker Swarm.

Các khái niệm chính của Docker Swarm:

  1. Cluster (Swarm): một nhóm Docker-hosts, được gộp lại thành một cluster logic duy nhất.
  2. Managers: các nodes quản lý cluster và phân phối tasks giữa các nodes làm việc.
  3. Worker Nodes (Workers): các nodes thực hiện tasks và chạy các container.
  4. Services: biểu diễn logic của ứng dụng, mô tả các tasks cần thực hiện và số lượng instances container cần chạy.
  5. Tasks: các container đơn lẻ, là instances của services.

Kiến trúc Docker Swarm:

Docker Swarm sử dụng kiến trúc dựa trên managers và worker nodes. Managers quản lý trạng thái của cluster, còn các worker nodes chịu trách nhiệm thực hiện các tasks.

Managers:

  • Quản lý trạng thái của cluster và cấu hình của nó.
  • Phân phối tasks giữa các worker nodes.
  • Đảm bảo khả năng chịu lỗi và khả dụng cao (khi có nhiều managers).

Worker Nodes:

  • Thực hiện các tasks được giao bởi managers.
  • Chạy các container theo chỉ thị.

Các lệnh cơ bản của Docker Swarm:

  1. docker swarm init: khởi tạo một cluster Swarm mới.
  2. docker swarm join: kết nối một node vào cluster hiện có.
  3. docker node ls: xem danh sách các nodes trong cluster.
  4. docker service create: tạo một service mới.
  5. docker service ls: xem danh sách các services đang chạy.
  6. docker service scale: mở rộng service tới số lượng instances cụ thể.
  7. docker service rm: xóa một service khỏi cluster.

Việc sử dụng Docker Swarm giúp đơn giản hóa việc quản lý các ứng dụng trong các hệ thống phân tán, cung cấp khả năng chịu lỗi, khả năng mở rộng và tiện lợi trong triển khai.

6.2 Tạo cluster Docker Swarm

Tạo và quản lý cluster Docker Swarm

Bước 1: Khởi tạo cluster

Trên host đầu tiên (manager), chạy lệnh:

Terminal

docker swarm init --advertise-addr <MANAGER_IP>

Lệnh này khởi tạo một cluster Swarm mới, biến node hiện tại thành manager và xuất lệnh để thêm worker nodes.

Bước 2: Thêm worker nodes

Trên các host khác, chạy lệnh được cung cấp khi chạy docker swarm init, để thêm chúng vào cluster:

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

Trong đó:

  • <SWARM_TOKEN>: token để kết nối đến cluster (được cung cấp bởi lệnh docker swarm init).
  • <MANAGER_IP>: địa chỉ IP của manager node.

Bước 3: Xem danh sách nodes

Để xem tất cả các nodes trong cluster, sử dụng lệnh:

Terminal

docker node ls

Lệnh này hiển thị danh sách tất cả các nodes, bao gồm vai trò, trạng thái và mức độ khả dụng của chúng.

Ví dụ kết quả lệnh docker node ls

Terminal

ID                                    HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
qwertyuiop12345    manager-node        Ready               Active             Leader
asdfghjkl67890      worker-node1       Ready               Active
zxcvbnm09876       worker-node2       Ready               Active

Giải thích các cột:

  • ID: ID duy nhất của node.
  • HOSTNAME: Tên host nơi node đang chạy.
  • STATUS: Trạng thái hiện tại của node (ví dụ: Ready).
  • AVAILABILITY: Mức độ khả dụng của node (ví dụ: Active).
  • MANAGER STATUS: Hiển thị nếu node là manager (ví dụ: Leader, Reachable) hoặc là worker node (để trống).

Giờ đây, cluster Docker Swarm đã được cấu hình, bạn có thể tạo và mở rộng ứng dụng.

6.3 Quản lý Docker Swarm

Quản lý các dịch vụ trong Docker Swarm

1. Tạo dịch vụ

Tạo một dịch vụ, dịch vụ này sẽ chạy với số bản sao được chỉ định:

Terminal

docker service create --name my_web --replicas 3 -p 8080:80 nginx

Ví dụ này tạo dịch vụ my_web, dịch vụ này chạy 3 phiên bản Nginx. Các container công khai cổng 80 trên cổng 8080 của host.

2. Xem các dịch vụ

Để xem tất cả các dịch vụ đang chạy trong cụm, sử dụng lệnh:

Terminal

docker service ls

Ví dụ xuất lệnh docker service ls

Terminal

ID                     NAME         MODE           REPLICAS     IMAGE
ab12345               my_web       replicated     3/3          nginx:latest

3. Mở rộng dịch vụ

Để thay đổi số lượng bản sao (replicas) của dịch vụ, sử dụng lệnh docker service scale:

Terminal

docker service scale my_web=5

Bây giờ dịch vụ my_web sẽ có 5 phiên bản.

4. Cập nhật dịch vụ

Để cập nhật hình ảnh của dịch vụ lên phiên bản mới, sử dụng lệnh docker service update:

Terminal

docker service update --image nginx:latest my_web

Đảm bảo tính sẵn sàng cao

Docker Swarm hỗ trợ tính sẵn sàng cao thông qua:

  1. Phân phối tác vụ giữa các node trong cụm để tự động khôi phục các container khi có lỗi.
  2. Hỗ trợ nhiều manager: Khuyến nghị số lượng manager lẻ (ví dụ, 3 hoặc 5) để tránh vấn đề về quorum.
  3. Sử dụng replicas: Cấu hình nhiều bản sao cho mỗi dịch vụ để tăng khả năng chịu lỗi.

Khái niệm về quorum

Quorum là đa số các node, những node này cần đồng ý với một hành động cụ thể (ví dụ, ghi dữ liệu hoặc chọn leader) để hành động đó được coi là hợp lệ. Ví dụ, trong cụm có 5 node, quorum sẽ là 3 node.

Lời khuyên hữu ích! Đảm bảo rằng các manager được đặt trên các server vật lý hoặc đám mây khác nhau để giảm thiểu nguy cơ lỗi cùng lúc.

6.4 Ví dụ cấu hình Docker Compose cho Docker Swarm

Docker Compose có thể được sử dụng với Docker Swarm để đơn giản hóa việc quản lý các ứng dụng đa container.

Ví dụ tệp docker-compose.yml

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080-8090:80"
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: example
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

networks:
  my_overlay_network:
    driver: overlay
    

Chạy stack Docker Compose trong Swarm

Để triển khai stack trong Docker Swarm, sử dụng lệnh:

Terminal

docker stack deploy -c docker-compose.yml mystack

Xem stack

Xem các stack đã được triển khai:

Terminal

docker stack ls

Xem các service trong stack

Terminal

docker stack services mystack
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION