12/08/2018, 15:17

In Action Tutorial Series - Docker - Làm quen với Docker Swarm

Bài viết này phù hợp với các bạn đã có kiến thức, làm quen với: Docker (Tham khảo tại: https://viblo.asia/KmasterYC/posts/3P0lPOkGZox) Docker-machine (Tham khảo tại: https://viblo.asia/KmasterYC/posts/bJzKmLMY59N) 1. Docker swarm là gì? Docker swarm là công cụ nằm trong bộ docker CLI giúp ...

Bài viết này phù hợp với các bạn đã có kiến thức, làm quen với:

  • Docker (Tham khảo tại: https://viblo.asia/KmasterYC/posts/3P0lPOkGZox)
  • Docker-machine (Tham khảo tại: https://viblo.asia/KmasterYC/posts/bJzKmLMY59N)

1. Docker swarm là gì?

Docker swarm là công cụ nằm trong bộ docker CLI giúp bạn quản lý các service chạy trong các node (docker machine) một cách dẽ dàng. Đặc biệt trong vấn đề scale services. Đặc điểm nổi bật của docker swarm:

  • Cluster management integrated with Docker Engine: Sử dụng chính bộ docker cli để tạo swarm một cách dễ dàng

  • Scaling: Scale up, down replicas của 1 service một cách dễ dàng

  • Desired state reconciliation: Swarm đảm bảo 1 service hoạt động ổn định bằng cách tự động thay 1 replicas crash bằng 1 replicas mới

  • Multi-host networking: Swarm có thể tự động gán IP cho mỗi service khi thay đổi

  • Service discovery: Swarm có DNS server riêng. Do đó bạn có thể truy xuất thông qua DNS này

  • Load balancing: Swarm tích hợp cân bằng tải với thuật toán Round-robin

  • Secure by default: Các service giao tiếp với nhau thông qua giao thức bảo mật TLS

  • Rolling updates: Swarm giúp bạn update image của service một cách hoàn toàn tự động và bạn có thể rolling back bất cứ lúc nào.

1. Thiết lập các node

Trước tiên hiểu đơn giản node là các máy để chạy docker engine (có thể là server cloud hoặc virtual machine). Trong bài viết này mình sử dụng virtual machine cho dễ minh họa nhé Trong swarm chúng ta có thể chứa tối thiếu 1 node manager - 0 node worker và tối đa dựa vào cấu hình phần cứng mà thôi Ok. Chúng ta tạo các node bằng docker-machine. Mình sẽ tạo 1 manager node và 3 manager worker để chạy nginx nhé

$ docker-machine create manager
$ docker-machine create worker1
$ docker-machine create worker2
$ docker-machine create worker3

Kiểm tra lại

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
manager  -              virtualbox   Running   tcp://192.168.99.100:2376           v17.05.0-ce   
worker1   -              virtualbox   Running   tcp://192.168.99.101:2376           v17.05.0-ce   
worker2   -              virtualbox   Running   tcp://192.168.99.102:2376           v17.05.0-ce   
worker3   -              virtualbox   Running   tcp://192.168.99.103:2376           v17.05.0-ce   

Tất cả các node này đều chạy trên image boot2docker. Mà cái này lại build trên debian os. Do đó các bạn có thể chạy apt thoải mái             </div>
            
            <div class=

0