Trong kỷ nguyên công nghệ số, việc tự xây dựng và quản lý các dịch vụ tại gia (home lab) đã trở thành một sở thích phổ biến của nhiều người yêu công nghệ. Từ việc lưu trữ đám mây riêng tư đến chạy các ứng dụng đa phương tiện, các dịch vụ tự host mang lại sự linh hoạt và kiểm soát cao hơn so với các giải pháp thương mại phụ thuộc vào đăng ký và thu thập dữ liệu. Tuy nhiên, khi số lượng ứng dụng container hóa ngày càng tăng, nhu cầu về một công cụ quản lý hiệu quả, có khả năng cân bằng tải và tự động mở rộng trở nên thiết yếu.
Đó là lúc Docker Swarm phát huy vai trò của mình. Đối với những người dùng Docker, tiện ích Docker Swarm cung cấp một phương pháp đơn giản để quản lý khối lượng công việc container hóa của bạn. Bài viết này sẽ hướng dẫn bạn cách thiết lập Docker Swarm trong home lab, giúp bạn nâng tầm khả năng quản lý các dịch vụ công nghệ tại gia một cách chuyên nghiệp.
Docker Swarm Là Gì Và Tại Sao Bạn Nên Sử Dụng?
Định nghĩa và vai trò của Docker Swarm
Giống như Kubernetes, Docker Swarm là một công cụ điều phối container (container orchestration tool) được thiết kế để giúp bạn thiết lập các cụm máy tính, máy tính bo mạch đơn (SBCs) hoặc thậm chí là máy ảo (VMs) cho các tác vụ container hóa. Nhờ Swarm, bạn có thể xây dựng một cụm đáng tin cậy gồm các máy chủ Docker có khả năng tự động cấp phát hoặc loại bỏ các node bổ sung để đáp ứng nhu cầu tài nguyên của các container. Điều này không chỉ tối ưu hóa việc sử dụng tài nguyên mà còn làm cho home lab của bạn có khả năng chịu lỗi cao hơn. Docker Swarm có thể tự động chuyển giao khối lượng công việc của một node ngoại tuyến sang các hệ thống khác trong cụm, đảm bảo dịch vụ luôn sẵn sàng.
Ưu điểm của Docker Swarm so với các giải pháp khác
Mặc dù Kubernetes nổi tiếng với khả năng mạnh mẽ, các cụm mà bạn thường thấy trên Kubernetes hoặc thậm chí các nền tảng ảo hóa như Proxmox có thể khá phức tạp đối với người mới bắt đầu. Ngược lại, Docker Swarm lại dễ tiếp cận hơn rất nhiều cho người dùng home lab và những ai mới làm quen với công nghệ điều phối container.
Docker Swarm được tích hợp sẵn trong Docker Engine, giúp việc thiết lập trở nên thuận tiện. Hơn nữa, nó tương thích tốt với giao diện web Portainer, cho phép bạn quản lý kho vũ khí container của mình mà không cần phải học thêm quá nhiều lệnh terminal mới. Sự đơn giản này giúp người dùng dễ dàng bắt đầu mà vẫn tận hưởng các lợi ích của một hệ thống quản lý container phân tán.
Giao diện tab Containers bên trong Portainer hiển thị danh sách các container
Hướng Dẫn Thiết Lập Các Node Docker Swarm
Về mặt kỹ thuật, bạn có thể có một môi trường Docker Swarm hoạt động chỉ với một node quản lý (manager) và một node worker. Tuy nhiên, để tận dụng tối đa tiềm năng của cụm và đảm bảo tính sẵn sàng cao (High-Availability), bạn nên có ba hoặc nhiều hơn các node quản lý trong cụm (lý tưởng là số lẻ). Mặc dù khuyến nghị sử dụng các máy tính Linux riêng biệt để giảm thiểu vấn đề điểm lỗi duy nhất, bạn cũng có thể sử dụng máy ảo để cấu hình cụm Docker của mình. Giả sử bạn đã cài đặt Docker Engine trên mỗi node, hãy làm theo các bước sau:
Chuẩn bị trước khi thiết lập
Đảm bảo tất cả các máy tính (PC, SBC hoặc máy ảo) mà bạn định dùng làm node đều đã được cài đặt Docker Engine. Các máy này cũng nên có kết nối mạng ổn định với nhau.
Các bước thiết lập node quản lý (Manager Node)
- Khởi động node chính (node bạn muốn làm manager) và mở ứng dụng terminal của nó.
- Chạy lệnh
ip addr
và ghi lại địa chỉ IPv4 của node này. Đây sẽ là địa chỉ mà các node khác sẽ dùng để kết nối.ip addr
Hiển thị địa chỉ IPv4 trên terminal sau khi chạy lệnh ip addr
- Thực hiện lệnh này để cấu hình node làm trung tâm của thiết lập Docker Swarm:
sudo docker swarm init --advertise-addr IP_addr_of_manager
Lệnh khởi tạo Docker Swarm với địa chỉ IP của node quản lý
- Sao chép mã token được hiển thị trong terminal trước khi chuyển sang các hệ thống khác mà bạn muốn thêm vào cụm.
Token được hiển thị để tham gia vào cụm Docker Swarm
Thêm các node worker vào cụm Swarm
- Trên các hệ thống khác (mà bạn muốn làm node worker), chạy lệnh
docker swarm join
theo sau là mã token bạn đã nhận được từ node quản lý để thêm chúng làm node worker.sudo docker swarm join --token token_string IP_addr_of_manager:2377
Lệnh tham gia cụm Docker Swarm với token và địa chỉ IP của node quản lý
(Tùy chọn) Nâng cấp quyền node worker lên manager
Nếu bạn muốn cấp quyền quản lý cho các node worker, bạn có thể chuyển sang node quản lý chính và nâng cấp chúng bằng lệnh này:
sudo docker node promote name_of_worker_node
Lệnh nâng cấp quyền của một node worker lên manager trong Docker Swarm
(Tùy chọn) Thiết Lập Portainer Để Quản Lý Cụm Docker Swarm
Mặc dù bạn có thể sử dụng các lệnh terminal để quản lý môi trường Swarm của mình, Portainer là một công cụ tuyệt vời dành cho những người thích sự đơn giản của giao diện người dùng web dựa trên menu. Để cấu hình Portainer trên cụm Swarm của bạn, hãy làm theo các bước sau:
Các bước cài đặt Portainer trên node quản lý
- Chuyển sang node Manager và sử dụng lệnh
curl
để tải tệp.yml
cho Portainer.curl -L https://downloads.portainer.io/ce-lts/portainer-agent-stack.yml -o portainer-agent-stack.yml
Sử dụng lệnh curl để tải file cấu hình Portainer Agent Stack YML
- Sử dụng lệnh
docker stack deploy
để khởi chạy Portainer instance:sudo docker stack deploy -c portainer-agent-stack.yml portainer
Triển khai một instance Portainer trên thiết lập Docker Swarm
Truy cập và cấu hình Portainer
- Bạn có thể truy cập giao diện người dùng Portainer bằng cách nhập
https://IP_addr_of_manager:9443
vào trình duyệt web của bất kỳ hệ thống nào được kết nối với cùng mạng với node manager.
Giao diện Portainer đang được truy cập thông qua trình duyệt web
- Chọn một Mật khẩu cho người dùng admin và nhấn Create User.
Màn hình tạo người dùng quản trị trong Portainer
Nếu bạn đã thực hiện tất cả các bước một cách chính xác, bảng điều khiển Portainer sẽ xuất hiện và cụm Swarm sẽ có thể truy cập được từ tab Home. Portainer có giao diện người dùng thân thiện với người mới bắt đầu, vì vậy bạn sẽ không gặp quá nhiều khó khăn khi điều hướng các menu của nó.
Giao diện tab Stacks trong Portainer hiển thị các dịch vụ đang chạy
Giao diện Portainer hiển thị nhiều container đang chạy, minh họa việc quản lý container
Xây Dựng Cụm Self-Hosting Mạnh Mẽ Với Docker Swarm
Với các bước trên, bạn đã sẵn sàng để thử nghiệm và khai thác cụm Docker Swarm trong home lab của mình. Docker Swarm cung cấp một giải pháp hiệu quả để quản lý các dịch vụ container hóa, đảm bảo tính ổn định, khả năng cân bằng tải và chịu lỗi cho các ứng dụng của bạn.
Đối với những người đam mê thử nghiệm và học viên sysadmin/DevOps, việc tìm hiểu thêm về Kubernetes cũng có thể là một ý tưởng hay. Mặc dù phức tạp hơn đáng kể so với Docker Swarm, Kubernetes tương thích với Podman và một loạt các công cụ chuyên nghiệp khác. Chưa kể, nó có khả năng mở rộng và tự phục hồi tốt hơn so với đối thủ dựa trên Docker của nó.
Tuy nhiên, nếu bạn là người mới làm quen với hệ sinh thái home lab hoặc chỉ muốn tự host một vài dịch vụ, một môi trường Docker Swarm là giải pháp hoàn hảo cho những vấn đề liên quan đến điều phối container của bạn. Hãy bắt đầu xây dựng cụm của riêng bạn và trải nghiệm những lợi ích mà Docker Swarm mang lại!
Bạn đã thử thiết lập Docker Swarm trong home lab của mình chưa? Hãy chia sẻ kinh nghiệm hoặc bất kỳ câu hỏi nào của bạn trong phần bình luận bên dưới!