Việc trang bị cho “home lab” của bạn những dịch vụ tự host (self-hosted services) hữu ích và độc đáo luôn là một niềm đam mê bất tận, bất kể bạn đã sở hữu máy chủ bao nhiêu năm. Nhưng khi bạn chuyển đổi từ các ứng dụng đầy quảng cáo, dựa trên đăng ký, 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ác quy định về cân bằng tải (load-balancing) và tự động mở rộng (auto-scaling) cho bộ công cụ 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ụ container hóa của mình – và đây là cách bạn có thể thiết lập nó trên home lab của mình.
Giao diện tab Containers của Portainer hiển thị các container đang chạy
Docker Swarm là gì và tại sao bạn nên sử dụng nó?
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 (clusters) gồm PC, SBC (Single Board Computer) hoặc thậm chí là máy ảo (virtual machines) cho các tác vụ container hóa của mình. 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 phân bổ (hoặc loại bỏ) các node bổ sung một cách linh hoạt để đá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 (fault-tolerant) cao hơn, vì Docker Swarm có thể chuyển các tác vụ của một node ngoại tuyến sang các hệ thống khác trong cụm.
Tuy nhiên, không giống như các cụm bạn thường 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 nhiều đối với người mới bắt đầu và người dùng home lab. Nó cũng tương thích với giao diện người dùng web (web UI) của Portainer, vì vậy bạn không phải đối phó với rắc rối của việc học các lệnh terminal mới để quản lý kho vũ khí container của mình.
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 cụm này hết tiềm năng của nó. Để có một thiết lập Docker Swarm có tính khả dụng cao (high-availability), bạn sẽ cần ba hoặc nhiều 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 thiết bị chạ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 (single point of failure), 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
Thực hiện lệnh ip addr trong terminal để lấy địa chỉ IP của node Docker Swarm manager
-
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
Khởi tạo Docker Swarm trên node manager bằng 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 có thể 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
Thêm node worker vào cụm Docker Swarm bằng lệnh docker swarm join với token được cung cấp
Đả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 đặc quyền manager cho các node worker, bạn có thể chuyển sang node manager chính và nâng cấp chúng bằng lệnh này:
sudo docker node promote name_of_worker_node
Nâng cấp quyền của một node worker lên manager trong cụm Docker Swarm
(Tùy chọn) Cấu hình 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ụ vững chắc cho những người thích sự đơn giản của giao diện người dùng web (web UI) 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:
-
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 tệp cấu hình Portainer Agent stack .yml
-
Sử dụng lệnh
docker stack deploy
để khởi chạy Portainer:sudo docker stack deploy -c portainer-agent-stack.yml portainer
Triển khai Portainer instance trên cụm Docker Swarm bằng tệp cấu hình vừa tải
-
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 UI qua trình duyệt sau khi triển khai
-
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 tài khoản người dùng admin đầu tiên trên Portainer
Giả sử 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 menu của nó.
Xây dựng cụm tự host mạnh mẽ với Docker Swarm
Tab Stacks trong Portainer hiển thị danh sách các ứng dụng đã triển khai trên cụm Docker Swarm
Với những bước trên, bạn đã hoàn toàn tự do khám phá và tùy chỉnh cụm Docker Swarm của mình. Đối với những người có kinh nghiệm thử nghiệm chuyên sâu và những ai đang học về quản trị hệ thống (sysadmin) hoặc DevOps, việc tìm hiểu thêm về Kubernetes cũng 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à 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 (auto-healing) tốt hơn đối thủ dựa trên Docker của nó. Nhưng nếu bạn là người mới trong 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 các vấn đề điều phối container của bạn.
Hình ảnh nhiều container đang hoạt động được quản lý bởi Portainer trong môi trường Docker Swarm
Hãy bắt đầu xây dựng home lab của bạn ngay hôm nay! Bạn có kinh nghiệm hay thắc mắc gì về Docker Swarm không? Hãy chia sẻ ý kiến của bạn trong phần bình luận bên dưới hoặc khám phá thêm các bài viết hướng dẫn công nghệ hấp dẫn khác tại dancongnghe.net!