Bài 6. Docker Swarm: Orchestration Cơ Bản để Scale Container

Khi hệ thống của bạn lớn lên – từ vài container đơn lẻ sang hàng chục, hàng trăm chạy trên nhiều máy – việc quản lý thủ công trở thành cơn ác mộng. Docker Swarm trong DevOps là cách đơn giản để bước vào thế giới orchestration container. Trong bài thứ sáu của series, tôi sẽ dẫn bạn qua Swarm mode, cách scale container, và thực hành triển khai ứng dụng web trên cluster. Đây là giải pháp nhẹ nhàng, thực tế, không quá phức tạp như Kubernetes, nhưng đủ mạnh cho DevOps.

Docker Swarm Là Gì?

Swarm Mode: Orchestration Đơn Giản

Docker Swarm là chế độ tích hợp sẵn trong Docker để quản lý và điều phối container trên nhiều host (node).

  • Manager: Node điều khiển (quản lý cluster).
  • Worker: Node chạy container (thực thi task).
  • Service: Định nghĩa container cần chạy, số lượng replica.

So với Compose: Compose chạy multi-container trên một host, Swarm mở rộng ra nhiều host.

DevOps: Swarm giúp deploy ứng dụng production mà không cần học ngay Kubernetes.

Tại Sao Dùng Swarm trong DevOps?

  • Dễ dùng: Chỉ cần lệnh Docker quen thuộc.
  • Scale nhanh: Tăng giảm container trong giây lát.
  • Tích hợp CI/CD: Deploy từ pipeline dễ dàng.

Tình huống thực tế: Một team DevOps cần chạy 5 instance API để xử lý tải cao. Swarm giúp họ scale từ 1 lên 5 chỉ bằng một lệnh, không cần thêm tool phức tạp.

Cách Swarm Hoạt Động

Khởi Tạo Swarm

  1. Trên manager node:
    docker swarm init
    • Nhận token để worker join.
  2. Trên worker node:
    docker swarm join --token <token> <manager-ip>:2377

Kết quả: Cluster sẵn sàng với 1 manager, 1+ worker.

Service: Đơn Vị Cơ Bản

  • Service: Một ứng dụng chạy nhiều replica.
  • Ví dụ:
    docker service create --name web --replicas 3 -p 8080:80 nginx
    • Chạy 3 container Nginx, load balance qua port 8080.

DevOps: Service tự động phân phối task qua worker, đảm bảo HA (high availability).

Scale và Update

  • Scale:
    docker service scale web=5
    • Tăng từ 3 lên 5 replica.
  • Update:
    docker service update --image nginx:1.21 web
    • Rolling update không downtime.

Thực Hành: Triển Khai Web trên Swarm

Chuẩn Bị

  • Máy: 2 node (1 manager, 1 worker). Dùng local hoặc VM (VD: VirtualBox).
  • Docker đã cài trên cả hai.

Khởi Tạo Cluster

  1. Manager:
    docker swarm init --advertise-addr 192.168.1.10
    • Copy token từ output.
  2. Worker:
    docker swarm join --token <token> 192.168.1.10:2377
  3. Kiểm tra:
    docker node ls
    • Thấy 2 node (1 manager, 1 worker).

Deploy Ứng Dụng

  1. Tạo overlay network:
    docker network create -d overlay my-net
  2. Deploy Nginx service:
    docker service create --name web --replicas 3 --network my-net -p 8080:80 nginx
  3. Test:
    curl 192.168.1.10:8080
    • Thấy trang Nginx (load balance giữa 3 replica).

Scale và Debug

  • Scale:
    docker service scale web=5
    docker service ps web
    • Xem 5 container chạy trên node nào.
  • Debug:
    docker service logs web
    • Xem log nếu lỗi.

Ghi chú thực tế: Tôi từng deploy Swarm trên 3 VM, scale từ 2 lên 10 replica mất chưa tới 30 giây – nhanh và không rắc rối.

Ứng Dụng trong DevOps

Pipeline CI/CD

  • Deploy từ GitLab CI:
    deploy:
    image: docker
    script:
      - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
      - docker service update --image myapp:$CI_COMMIT_SHA web
  • Kết quả: Ứng dụng cập nhật trên Swarm từ pipeline.

Microservices

  • Chạy web, API, DB trên Swarm với overlay network:
    docker service create --name api --replicas 2 --network my-net my-api

Case study: Một team nhỏ dùng Swarm thay Kubernetes cho hệ thống 10 service, giảm thời gian học và quản lý 50%, vẫn đáp ứng tải 1000 user.

So Sánh với Kubernetes

  • Swarm: Nhẹ, dễ, tích hợp Docker.
  • Kubernetes: Mạnh, phức tạp, nhiều tính năng hơn.
  • DevOps: Swarm tốt cho team nhỏ hoặc dự án vừa, K8s cho hệ thống lớn.

Kết Luận

Docker Swarm trong DevOps là cách đơn giản để làm orchestration container, từ khởi tạo cluster, deploy service, đến scale container dễ dàng. Thực hành với Nginx cho thấy bạn có thể áp dụng Swarm vào production mà không cần quá nhiều công sức. Nó không phải Kubernetes, nhưng đủ tốt cho nhiều trường hợp thực tế. Bài tiếp theo, chúng ta sẽ khám phá Docker Security – cách bảo mật container trong DevOps.

Điều hướng chuỗi bài viết<< Bài 5. Docker Compose: Điều Phối Multi-Container Hiệu Quả
>> Bài 7. Docker Security: Bảo Mật Container Hiệu Quả
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Có thể bạn quan tâm