Kiểm soát cụm thiết bị Raspberry Pi Edge với MAAS và PoE - Spectro Cloud


Spectro cloud logo

Kiểm soát cụm thiết bị Raspberry Pi edge với MAAS và PoE

Orchestrating small boxes made easy

Bạn có thể tưởng tượng việc triển khai và điều phối một cụm máy chủ vật lý như thể đó là nhà cung cấp đám mây, ngay tại nhà hoặc văn phòng của bạn? Điều đó hoàn toàn có thể thực hiện, ngay cả khi các máy chủ đó chỉ là những chiếc Raspberry Pi cơ bản không được tích hợp quản lý từ xa như IPMI.

Điều này không chỉ thú vị cho homelab của bạn mà còn mang lại hiệu quả lớn trong triển khai edge doanh nghiệp, nơi các máy tính bảng nhỏ gọn như SBC đóng vai trò quan trọng trong ứng dụng biên.

Tại Spectro Cloud, chúng tôi có một cộng đồng homelab và mã nguồn mở sôi động, luôn tìm kiếm giải pháp hàng ngày. Chúng tôi đam mê thử nghiệm đặc biệt trong lĩnh vực điện toán edge.

Quản lý bare metal với Canonical MAAS

Để thực hiện điều này, chúng ta cần một phần mềm làm trung tâm điều khiển cho cụm máy chủ, nhận các yêu cầu tài nguyên và xác định phần cứng phù hợp. Canonical Metal as a Service (MAAS) là lựa chọn hoàn hảo.

MAAS hỗ trợ các công cụ quản lý máy chủ như IPMI, Redfish, OpenBMC, Proxmox, VMware, LXD và AMT, cho phép điều khiển nguồn, hệ điều hành, và cấu hình mạng từ xa.

Bạn có thể triển khai Ubuntu cho một máy chủ đơn hoặc cụm Kubernetes trên hàng trăm máy chủ Dell PowerEdge ở nhiều giá máy khác nhau. Và điều tuyệt vời nhất là MAAS miễn phí.

Điện năng mà không cần giao thức phức tạp

MAAS yêu cầu thiết bị phải hỗ trợ các giao thức quản lý từ xa cấp doanh nghiệp như IPMI để bật/tắt nguồn và khởi động lại máy qua PXE nhằm tải hệ điều hành.

Vậy nếu thiết bị không có bộ điều khiển quản lý bo mạch chủ (BMC), làm sao ta có thể bật tắt từ xa?

  • Không thể dựa vào công cụ sau khi OS đã được cài đặt.
  • Wake on LAN chỉ bật máy mà không thể khởi động lại hay tắt máy.
  • Có thể nhấn nút nguồn thủ công, nhưng không khả thi với hàng trăm thiết bị phân tán.

Giải pháp nằm ở Power over Ethernet (PoE). Nếu ta có thể điều khiển nguồn của từng cổng ethernet trên switch PoE từ xa, không chỉ bật/tắt mà còn giám sát trạng thái kết nối thiết bị.

Tuy nhiên MAAS không có trình điều khiển nguồn chuyên cho thiết bị PoE, vậy làm thế nào?

Giải pháp webhook

Webhooks là các hàm sự kiện nhẹ giúp giao tiếp qua HTTP. Bạn có thể gửi lệnh tới server qua URL để thực thi tác vụ và nhận phản hồi.

MAAS có một Webhook Power Driver cho phép gửi các lệnh bật, tắt hoặc kiểm tra trạng thái tới thiết bị không có BMC.

Chúng ta cần một server HTTP làm trung gian giữa MAAS và thiết bị điều khiển. May mắn thay, công cụ maaspower đã tồn tại, hỗ trợ nhiều loại thiết bị không thể trực tiếp điều khiển từ MAAS.

Maaspower có thể kết nối với thiết bị qua CLI, REST hoặc giao diện web, cho phép MAAS tự động điều khiển nguồn thiết bị nếu bạn có thể thao tác qua terminal.

Bạn có thể SSH đến switch PoE và chạy lệnh bật/tắt nguồn từng cổng nhưng nếu không tự động, sẽ trở lại phương thức thủ công. Tự động hóa kết nối này là mảnh ghép cuối cùng giúp bạn điều phối Raspberry Pi qua PoE từ MAAS.

Tác giả đã phát triển công cụ dòng lệnh minh họa cho switch PoE Dell 5524p, bạn có thể tải về tại đây.

Bắt đầu kết nối và khởi động

Giả sử bạn đã triển khai MAAS trên một host Ubuntu và đồng bộ Image Arm64 Ubuntu 22.04 dành cho Raspberry Pi. Tiếp theo, cài đặt maaspower theo hướng dẫn chính thức.

Cài đặt maaspower-dellctl và cấu hình giá trị poe.sh tương ứng với switch PoE Dell của bạn.

Thiết lập Raspberry Pi 4 để khởi động qua PoE bằng cách ghi Firmware UEFI Raspberry Pi 4 vào thẻ microSD, theo hướng dẫn trên GitHub.

Cập nhật URL firmware mới nhất phiên bản v1.37 trong script để tránh lỗi phân vùng microSD card. Thay đổi kích thước phân vùng trong script từ 2000000000 thành 20000000 hoặc nhỏ hơn để tránh lỗi “No space left on device”.

Gắn thẻ microSD vào Pi, kết nối bàn phím, màn hình và dây mạng tới switch PoE. Khi khởi động, nhấn Escape để vào BIOS UEFI cấu hình một lần:

  • Tắt giới hạn RAM 3GB trong Device Manager → Raspberry Pi Configuration → Advanced Configuration.
  • Thay đổi thứ tự khởi động để UEFI PXEv4 là ưu tiên đầu tiên trong Boot Maintenance Manager → Boot Options.

Pi của bạn bây giờ sẽ boot và liên lạc với MAAS để lấy file PXE, hiển thị dòng chữ “Booting under MAAS direction”. Bạn có thể theo dõi trạng thái trong giao diện MAAS.

Khi thiết bị xuất hiện như một Machine, đặt tên máy theo mẫu raspi + số cổng (ví dụ raspi1), và chuyển Power Type sang Webhook.

Cấu hình các URI webhook cho bật/tắt/kiểm tra nguồn:

Lưu cấu hình và bạn có thể kiểm tra trạng thái nguồn cho máy này. Sau đó tiến hành commission và phân bổ máy vào Resource Pool để sử dụng.

Comments