I. Tính năng của Docker Swarm
Quản lý Cluster được tích hợp với Docker Engine: Sử dụng Docker CLI để tạo ra swarm để triển khai các dịch vụ. Không cần thiết phải có thêm các phần mềm khác để tạo và quản lý swarm
Triển khai phân tán: Thay vì xử lý các khác biệt giữa vai trò của các node trong thời gian triển khai, Docker Engine sẽ xử lý bất kỳ tác vụ nào đang chạy. Ta có thể triển khai cả hai loại node là manager và workers sử dụng Docker Engine. Điều này có nghĩa ta có thể tạo ra một Docker Swarm hoàn chỉnh chỉ từ một image duy nhất.
Scaling: Đối với mỗi dịch vụ triển khai trong Docker Swarm, bạn có thể khai báo số lượng task muốn chạy. Khi bạn mở rộng quy mô hay ngược lại, Docker Swarm sẽ tự động điều chỉnh bằng cách thêm hoặc xóa task để duy trì trạng thái mong muốn - tình trạng hệ thống ta cần đạt được. Đảm bảo tính ổn định: Docker Swarm sẽ liên tục giám sát trạng thái của cluster và giải quyết bất kỳ sự thay đổi nào giữa trạng thái thực tế và trạng thái mong muốn dựa trên các quyết định của bạn. Ví dụ: Ta thiết lập một dịch vụ với 5 bản sao containers và worker node có lưu trữ 2 bản sao containers. Manager node sẽ tự động tạo ra 2 bản sao containers khác nếu như 2 bản sao containers trong worker node bị lỗi, ... Manager Node sẽ luôn luôn đảm bảo các bản sao containers mới cho worker đang chạy hoặc được cung cấp. Multi-host networking: Có thể khai báo overlay network cho các dịch vụ trong Swarm. Docker Swarm sẽ tự động quản lý và gán địa chỉ IP cho mỗi container trên overlay network khi nó khởi tạo hoặc update ứng dụng. Service discovery: Swarm manager node sẽ chỉ định mỗi dịch vụ trong Docker Swarm ứng với một tên DNS duy nhất và cân bằng tải các containers đang chạy. Ta có thể thực hiện truy vấn tất các containers đang chạy trong Swarm thông qua một DNS Server được nhúng vào Swarm. Cân bằng tải: Bạn có thể expose ports cho các dịch vụ tới một load balancer bên ngoài. Trong Swarm, cho phép bạn chỉ định làm thế nào để phân phối services giữa các node. - Swarm manager sử dụng network ingress load balancing để đưa các service ra bên ngoài swarm. Swarm manager có thể tự động đưa các service lên các Port chưa được sử dụng trong khoảng 30000-32767. Hoặc người dùng cũng có thể tự động xác định port mà service sẽ được gán vào. - Các ứng dụng bên ngoài có thể truy cập vào service thông qua các Published Port ở bất kỳ node nào trong cluster kể cả node đó có service này hay không. Tất cả các node trong Swarm đều sẽ kết nối đến router ingress để kết nối đến các task đang hoạt động. - Bên trong Swarm mode, mỗi một service đều sẽ được gán cho một DNS nội bộ để truy cập. Swarm manager sẽ sử dụng khả năng load balancing nội bộ để gửi các yêu cầu đến các service trong cluster dựa theo DNS của service đó.
Rolling Update: Tại một thời điểm, ta có thể áp dụng việc cập nhật ứng dụng (chủ yếu là phiên bản images). Nếu có lỗi phát sinh xảy ra, ta có thể quay lại phiên bản trước của services. Tính khả dụng cao, cho phép sao chép trạng thái: Docker Swarm cho phép nhân bản trạng thái của Docker node trong Swarm. Hãy theo dõi thứ tự các hình ảnh sau để hiểu rõ hơn về tính năng này của Docker.
Với Docker Swarm, thay vì có một manager và manager node có thể bị lỗi khiến Swarm không được cung cấp thì ta có thể triển khai nhiều manager node cùng một lúc.
Khi một manager node đang hoạt động bị crash
Manager node sẽ được tự động chuyển chức năng quản lý sang một node khác (node backup):
II. So sánh Docker Swarm vs Kubernestes, Apache Mesos
1. Docker Swarm
2. Kubernestes
3. Apache Mesos
Tài liệu tham khảo
[1]. How node works
[2]. Docker docs
[3]. Docker là gì?