Tab Containers trong Portainer hiển thị danh sách các dịch vụ Docker đang hoạt động
Máy Tính

Thiết Lập Docker Swarm Cho Home Lab: Tối Ưu Hóa Quản Lý Container

Việc trang bị cho “home lab” của bạn các dịch vụ tự lưu trữ (self-hosted) hữu ích và độc đáo luôn là một niềm vui bất tận đối với những người sở hữu máy chủ. Tuy nhiên, 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ự lưu trữ, bạn có thể muốn thiết lập khả năng 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 – và dưới đây là cách bạn có thể thiết lập nó trên home lab của mình.

Tab Containers trong Portainer hiển thị danh sách các dịch vụ Docker đang hoạt độngTab Containers trong Portainer hiển thị danh sách các dịch vụ Docker đang hoạt động

Docker Swarm Là Gì Và Tại Sao Bạn Nên Dùng Nó?

Cũng 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 (PC), máy tính bo mạch đơn (SBC) hoặc thậm chí là máy ảo (virtual machines) cho các tác vụ container hóa của bạn. Nhờ có 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 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. Nó 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ị offline sang các hệ thống khác trong cụm.

Tuy nhiên, không giống như các cụm điển hình mà bạn tìm thấy trên Kubernetes hoặc 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 mặt với rắc rối khi học các lệnh terminal mới để quản lý kho 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 quản lý (manager) và một node worker, nhưng bạn sẽ không thể sử dụng cụm theo đúng tiềm năng của nó. Để 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 node quản lý (lý tưởng nhất là số lẻ) trong cụm. Mặc dù chúng tôi khuyến nghị sử dụng các hệ thống riêng biệt chạy Linux để giảm thiểu các vấn đề về điểm lỗi đơn (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 thực hiện theo các bước sau:

  1. Khởi động node chính của bạn và khởi chạy ứng dụng terminal.

  2. Chạy lệnh ip addr và ghi lại địa chỉ IPv4 của nó:

    ip addr

    Màn hình terminal hiển thị kết quả lệnh `ip addr` để xác định địa chỉ IP cho thiết lập Docker SwarmMàn hình terminal hiển thị kết quả lệnh `ip addr` để xác định địa chỉ IP cho thiết lập Docker Swarm

  3. 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 môi trường Docker Swarm trên node quản lý bằng lệnh `sudo docker swarm init --advertise-addr`Khởi tạo môi trường Docker Swarm trên node quản lý bằng lệnh `sudo docker swarm init –advertise-addr`

    Hãy nhớ thay thế chuỗi IP_addr_of_manager bằng địa chỉ IPv4 bạn đã lấy ở bước trước.

  4. 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 chuỗi token dùng để thêm các node worker vào cụm Docker Swarm hiện cóSao chép chuỗi token dùng để thêm các node worker vào cụm Docker Swarm hiện có

  5. Chạy lệnh docker swarm join theo sau là token bạn nhận được từ node quản lý để 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

    Tham gia cụm Docker Swarm với tư cách node worker bằng lệnh `sudo docker swarm join`Tham gia cụm Docker Swarm với tư cách node worker bằng lệnh `sudo 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 chạy được dịch vụ trên một máy cụ thể.

  6. (Tùy chọn) Nếu bạn muốn cấp quyền quản lý (manager privileges) cho các node worker, bạn có thể chuyển sang node quản lý chính và thă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 node quản lý (manager) trong Docker SwarmNâng cấp quyền của một node worker lên node quản lý (manager) trong Docker Swarm

(Tùy Chọn) Cài Đặt Portainer Để Quản Lý 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 dựa trên menu. Để cấu hình Portainer trên cụm Swarm của bạn:

  1. Chuyển sang node Manager và sử dụng lệnh curl để lấy file .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 `portainer-agent-stack.yml` cần thiết cho cài đặt PortainerSử dụng lệnh `curl` để tải file `portainer-agent-stack.yml` cần thiết cho cài đặt Portainer

  2. 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 trên môi trường Docker Swarm bằng lệnh `sudo docker stack deploy`Triển khai Portainer trên môi trường Docker Swarm bằng lệnh `sudo docker stack deploy`

  3. 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 quản lý.

    Giao diện đăng nhập Portainer truy cập qua trình duyệt web với địa chỉ IP của node quản lýGiao diện đăng nhập Portainer truy cập qua trình duyệt web với địa chỉ IP của node quản lý

  4. 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 cho người dùng admin trên giao diện Portainer lần đầu tiênThiết lập mật khẩu cho người dùng admin trên giao diện Portainer lần đầu tiên

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 (dashboard) của 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 menu của nó.

Màn hình tab Stacks trong Portainer, hiển thị các ứng dụng đã triển khai trên cụm Docker SwarmMàn hình tab Stacks trong Portainer, hiển thị các ứng dụng đã triển khai trên cụm Docker Swarm

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 đã hoàn toàn tự do để thử nghiệm với cụm Swarm của mình. Đối với những người đã có kinh nghiệm sâu rộng trong thử nghiệm và các chuyên gia sysadmin/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, 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 (scaling) và tự động phục hồi (auto-healing) 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ự lưu trữ 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 đề điều phối container của bạn.

Related posts

Chạy Windows 11 Trên Raspberry Pi 5 Bằng Container: Hiệu Năng Thực Tế Có Bất Ngờ?

Administrator

Copilot trong Excel: Nâng Tầm Phân Tích Dữ Liệu Với Khả Năng Nhập Liệu Từ Mọi Nguồn

Administrator

Top Card Đồ Họa NVIDIA GeForce RTX 5070 Tốt Nhất Cho Game Thủ Việt

Administrator