Việc nâng cấp “home lab” (phòng thí nghiệm tại gia) của bạn với các dịch vụ tự lưu trữ (self-hosted services) hữu ích luôn là một trải nghiệm thú vị, dù bạn đã sở hữu máy chủ bao nhiêu năm đi nữa. Tuy nhiên, một khi bạn chuyển đổi từ các ứng dụng đầy quảng cáo, dựa trên đăng ký và thu thập dữ liệu sang một bộ dịch vụ tự host, bạn có thể muốn thiết lập cơ chế cân bằng tải (load-balancing) và tự động tăng giảm quy mô (auto-scaling) cho bộ công cụ được lưu trữ cục bộ của mình. Nếu bạn chủ yếu là người dùng Docker, tiện ích Docker Swarm cung cấp một phương tiện đơn giản để giúp bạn quản lý các tác vụ được đóng gói trong container. Dưới đây là cách bạn có thể thiết lập Docker Swarm trong home lab của mình, biến nó thành một trung tâm quản lý container mạnh mẽ và đáng tin cậy.
Docker Swarm là gì?
Giống như Kubernetes, Docker Swarm là một công cụ điều phối container (container orchestration) được thiết kế để giúp bạn thiết lập các cụm máy tính cá nhân (PCs), máy tính bo mạch đơn (SBCs), hoặc thậm chí là máy ảo (virtual machines) cho các tác vụ đóng gói container của bạn. Nhờ có Swarm, bạn có thể xây dựng một cụm máy chủ Docker đáng tin cậy 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 cũng giúp home lab của bạn có khả năng chịu lỗi tốt hơn, vì Docker Swarm có thể chuyển các tác vụ của một node bị lỗi sang các hệ thống khác trong cụm.
Vì sao nên dùng Docker Swarm?
Không giống như các cụm máy chủ điển hình mà bạn sẽ tìm thấy trên Kubernetes hay thậm chí các nền tảng ảo hóa như Proxmox, Docker Swarm dễ tiếp cận hơn rất nhiều đối với người mới bắt đầu và người dùng home lab. Sự đơn giản này giúp giảm thiểu đáng kể đường cong học tập, cho phép bạn nhanh chóng triển khai và quản lý các ứng dụng container hóa mà không cần phải đối mặt với sự phức tạp của Kubernetes. Docker Swarm cũng tương thích với giao diện người dùng web (web UI) của Portainer, nhờ đó bạn không cần phải bận tâm với việc học các lệnh terminal mới để quản lý kho container của mình. Điều này đặc biệt hữu ích cho những ai muốn có một giải pháp quản lý trực quan và dễ sử dụng.
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 manager và một node worker, nhưng bạn sẽ không thể sử dụng toàn bộ tiềm năng của cụm. Để có một thiết lập Docker Swarm có tính sẵn sàng cao (high-availability), bạn sẽ cần ba hoặc nhiều hơn các node manager (lý tưởng là số lẻ) trong cụm. Mặc dù chúng tôi khuyên bạn nên sử dụng các máy Linux riêng biệt để giảm thiểu các vấn đề với một đ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:
-
Khởi động node chính của bạn và mở ứng dụng terminal.
-
Chạy lệnh
ip addr
và ghi lại địa chỉ IPv4 của nó:ip addr
Màn hình hiển thị lệnh ip addr để lấy địa chỉ IP của node Docker Swarm
-
Thực thi 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
Khởi tạo Docker Swarm manager với lệnh docker swarm init
Hãy nhớ thay thế chuỗi IP_addr_of_manager bằng địa chỉ IPv4 mà bạn đã lấy ở bước trước.
-
Sao chép token 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.
Sao chép token để các node worker tham gia cụm Docker Swarm
-
Chạy lệnh
docker swarm join
theo sau là token bạn đã nhận được từ node manager để thêm các hệ thống khác làm node worker.sudo docker swarm join --token token_string IP_addr_of_manager:2377
Node worker tham gia Docker Swarm bằng lệnh docker swarm join
Đảm bảo mỗi node có một tên riêng biệt, nếu không, bạn có thể gặp phải các vấn đề khi Docker không thể chạy dịch vụ trên một máy cụ thể.
-
(Tùy chọn) Nếu bạn muốn cấp quyền manager cho các node worker, bạn có thể chuyển sang node manager chính và thăng cấp chúng bằng lệnh này:
sudo docker node promote name_of_worker_node
Thăng cấp node worker thành node quản lý trong Docker Swarm
(Tùy chọn) Thiết lập Portainer cho 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ụ mạnh mẽ 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 thực hiện các bước sau:
-
Chuyển sang node manager và sử dụng lệnh
curl
để tải file .yml cho Portainer.curl -L https://downloads.portainer.io/ce-lts/portainer-agent-stack.yml -o portainer-agent-stack.yml
Tải file cấu hình Portainer bằng lệnh curl trên node Docker Swarm manager
-
Sử dụng lệnh
docker stack deploy
để khởi chạy phiên bản Portainer:sudo docker stack deploy -c portainer-agent-stack.yml portainer
Triển khai Portainer lên cụm Docker Swarm bằng docker stack deploy
-
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.Truy cập giao diện web Portainer sau khi cài đặt trên Docker Swarm
-
Chọn một Mật khẩu cho người dùng admin và nhấn Create User.
Thiết lập mật khẩu người dùng quản trị Portainer cho Docker Swarm
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 vấn đề khi điều hướng các menu của nó. Nếu bạn gặp khó khăn với Portainer, bạn có thể tham khảo thêm các hướng dẫn chi tiết về nền tảng quản lý container này để làm quen.
Xây dựng cụm tự host mạnh mẽ với Docker Swarm
Tab Stacks trong giao diện Portainer quản lý các dịch vụ Docker Swarm
Với những bước trên, bạn có thể thoải mái thử nghiệm với cụm Swarm của mình. Đối với các chuyên gia thử nghiệm và những người học về quản trị hệ thống/DevOps, việc mở rộng sang 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, K8s tương thích với Podman và nhiều 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. 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 rắc rối trong việc điều phối container của bạn. Hãy bắt đầu xây dựng cụm Docker Swarm của riêng bạn ngay hôm nay để tận hưởng sự tiện lợi và mạnh mẽ mà nó mang lại cho home lab của bạn!