Tiếng Việt
LatestAI & data3D printing & CNCEmbedded & IoTSoftwareAbout VHITEK MakerContactComment policy

Project Homelab #01 — Planning & System Design

by Lê Minh Nhật|
Project Homelab #01 — Planning & System Design
1

Từ ý tưởng đến kiến trúc Homelab

Sau khi quyết định sẽ thực sự bắt đầu Project Homelab, câu hỏi đầu tiên của tôi không phải là “mua server nào?”, mà là:

Mình muốn hệ thống này cuối cùng sẽ trở thành cái gì?

Nếu chỉ cần một máy tính chạy 24/7 để host vài dịch vụ thì mọi chuyện khá đơn giản. Một mini PC, một ổ SSD, cài Linux và Docker là gần như đủ.

Nhưng mục tiêu của project này lớn hơn một máy server đơn lẻ. Tôi muốn xây dựng một hệ thống có thể tiếp tục mở rộng trong nhiều năm: có server riêng, storage riêng, firewall riêng, nhiều network segment, hệ thống monitoring và cuối cùng tất cả được gom vào một chiếc rack do chính mình thiết kế và lắp ráp.

Vì vậy, trước khi mua thêm thiết bị hay bắt đầu in rack, bước đầu tiên là lập kế hoạch cho toàn bộ hệ thống.


1. Không bắt đầu từ thiết bị, bắt đầu từ nhu cầu

Một trong những điều tôi muốn tránh là mua thiết bị chỉ vì thấy nó “hay”, sau đó mới tìm xem có thể dùng nó làm gì.

Tôi làm ngược lại.

Đầu tiên là xác định các nhóm chức năng mà Homelab cần có:

  • Routing, firewall, VPN và security.

  • Server để chạy các workload và dịch vụ.

  • Storage tập trung cho dữ liệu, backup và các nhu cầu trong tương lai.

  • Một network đủ nhanh để server và NAS không bị giới hạn bởi đường truyền 1GbE.

  • Một khu vực dành cho Raspberry Pi, IoT và rack management.

  • Khả năng bổ sung camera, monitoring và các hệ thống khác về sau.

Từ những yêu cầu đó, kiến trúc bắt đầu hình thành.

Điều quan trọng là không phải tất cả mọi thứ đều cần tốc độ giống nhau.

Server ↔ NAS có thể cần vài Gbps.

Camera thì không.

Raspberry Pi dùng cho monitoring cũng không.

Internet lại là một bài toán khác hoàn toàn.

Do đó thay vì cố làm toàn bộ hệ thống thành 10GbE, tôi quyết định chia network thành nhiều tầng tốc độ khác nhau.

Đây trở thành một trong những nguyên tắc thiết kế chính của project:

Dùng tốc độ cao ở nơi thật sự cần nó, thay vì biến 10GbE thành yêu cầu cho mọi thiết bị.


Một Homelab 10-inch là hướng mà hệ thống cuối cùng sẽ tiến tới

homelab1

Ảnh minh họa: các hệ thống mini Homelab rack 10-inch. Trong project thực tế, rack sẽ lớn hơn đáng kể và được tùy chỉnh theo thiết bị của tôi.


2. Chia hệ thống thành từng khối

Thay vì xem Homelab như một danh sách thiết bị, tôi chia nó thành các subsystem:

Internet → Router/Firewall → Core Network → Compute / Storage / Camera / Pi & Management

Cách chia này giúp một thay đổi ở một subsystem không bắt buộc tôi phải thiết kế lại toàn bộ hệ thống.

Ví dụ, nếu sau này tôi thay mini PC bằng server mạnh hơn, core network vẫn có thể giữ nguyên. Nếu số lượng camera tăng, tôi có thể mở rộng riêng camera branch. Nếu thêm server, chỉ cần tiếp tục sử dụng các port còn lại trên server switch.

Đó cũng là lý do tôi không muốn tất cả thiết bị nối trực tiếp vào một switch duy nhất.


3. Router và Firewall — N100 chạy OPNsense

Đầu tiên là gateway của toàn bộ Homelab.

Thay vì sử dụng router consumer thông thường làm thiết bị chính, thiết kế hiện tại sử dụng một mini PC Intel N100 chạy OPNsense.

N100 sẽ đảm nhiệm:

Internet Gateway → Firewall → DHCP → VPN → Inter-VLAN Routing → IDS/IPS

Trong topology hiện tại, N100 kết nối với core switch bằng một đường 2.5GbE VLAN trunk. Trước đây tôi từng cân nhắc sử dụng hai interface và LACP/LAGG, nhưng sau khi xem xét lại thì kiến trúc hiện tại quay về một đường 2.5GbE duy nhất để giữ thiết kế đơn giản hơn.

Điều này cũng tạo ra một đặc điểm quan trọng của network:

Traffic cùng VLAN không cần đi qua OPNsense.

Ví dụ:

Main PC → Server Switch → NAS

nếu nằm trong cùng segment phù hợp thì switch có thể xử lý trực tiếp.

Ngược lại, traffic giữa hai VLAN sẽ phải đi qua OPNsense để firewall có thể kiểm tra và áp dụng policy.

Nhờ vậy tôi vẫn có network segmentation và security mà không bắt tất cả traffic tốc độ cao phải chạy qua router.

Giao diện OPNsense

1
2

Ảnh minh họa: OPNsense Dashboard. Khi hệ thống hoàn thiện, router N100 sẽ là gateway và firewall trung tâm của Homelab.


4. Core Network — tại sao lại có hai CRS310?

Sau router là phần backbone của hệ thống.

Core switch được chọn là MikroTik CRS310-1G-5S-4S+IN, với các interface SFP và SFP+ phù hợp để đóng vai trò trung tâm kết nối giữa nhiều branch khác nhau.

Từ core, một kết nối 10GbE sẽ đi tới CRS310-8G+2S+IN, đóng vai trò server switch.

Đây là một lựa chọn khá quan trọng.

CRS310-8G+2S+IN cung cấp:

8 × 2.5GbE + 2 × 10GbE SFP+

Một SFP+ dùng làm uplink 10GbE về core.

SFP+ còn lại dành cho NAS.

Các cổng 2.5GbE được sử dụng cho Main PC và các mini server.

Như vậy topology của compute/storage trở thành:

Core —10G→ Server Switch —10G→ NAS

và:

Server Switch —2.5G→ từng Mini PC / Main PC

Điều này cho phép nhiều server cùng truy cập NAS mà không phải cùng chia sẻ một uplink 1GbE hoặc 2.5GbE duy nhất.


Những phần cứng chính bắt đầu xuất hiện trong bản thiết kế

1
2
3
4

Từ trái sang phải: CRS310-1G-5S-4S+IN, CRS310-8G+2S+IN, Lenovo ThinkCentre M720q và Raspberry Pi 5 — bốn nhóm thiết bị chính trong kiến trúc hiện tại.


5. Compute — ba node Proxmox thay vì một server lớn

Phần compute của Homelab hiện được lên kế hoạch với 3 × Lenovo ThinkCentre M720q, mỗi máy chiếm riêng 1U trong rack.

Thay vì sử dụng ba máy như các server hoàn toàn độc lập, cả ba M720q sẽ được cài Proxmox VE để tạo thành nền tảng virtualization cho Homelab.

Ý tưởng ở đây là tách phần cứng vật lý khỏi các dịch vụ thực tế. Một mini PC không nhất thiết chỉ phục vụ một ứng dụng duy nhất; bên trong Proxmox tôi có thể tạo nhiều VM hoặc container cho từng workload khác nhau.

Các workload dự kiến bao gồm:

  • GTNH / Minecraft server

  • Game hosting

  • Các dịch vụ backend

  • Docker workload

  • Các môi trường thử nghiệm

  • Những service khác phát sinh trong quá trình sử dụng Homelab

Việc sử dụng ba node cũng cho phép tôi phân bổ workload linh hoạt hơn và bổ sung tài nguyên từng bước thay vì phải đầu tư ngay một server lớn.

Ở giai đoạn đầu, mục tiêu chính chưa phải xây dựng một hệ thống enterprise HA hoàn chỉnh. Tôi muốn dùng Proxmox trước hết như một nền tảng để dễ dàng tạo, xóa, thử nghiệm và di chuyển các workload trong Homelab.


6. Storage — TrueNAS, 8 HDD và RAIDZ2

Compute và storage được tách thành hai subsystem riêng.

Ba node Proxmox chịu trách nhiệm chạy workload, trong khi dữ liệu tập trung sẽ được đặt trên một NAS riêng chạy TrueNAS.

Thiết kế hiện tại dành:

3U cho NAS PC

và

3U cho 8-HDD storage bay.

NAS kết nối trực tiếp tới server switch bằng 10GbE SFP+, trong khi từng M720q sử dụng kết nối 2.5GbE.

Điều này đặc biệt hữu ích khi nhiều VM hoặc nhiều server cùng truy cập storage: mỗi node riêng lẻ không cần 10GbE, nhưng NAS có thể phải phục vụ nhiều node cùng lúc.

Storage pool

Kế hoạch hiện tại là sử dụng:

8 × HDD → TrueNAS → RAIDZ2

RAIDZ2 cho phép pool tiếp tục hoạt động khi tối đa hai ổ trong cùng vdev bị lỗi, đổi lại một phần dung lượng sẽ được sử dụng cho parity.

Ở thời điểm hiện tại, cả 8 HDD đều được dành cho storage pool; không có một ổ thứ 8 riêng làm removable backup như kế hoạch trước đó.

Điều này cũng có nghĩa cần phân biệt rõ:

RAIDZ2 là redundancy, không phải backup.

Nếu dữ liệu quan trọng cần bảo vệ khỏi xóa nhầm, ransomware, lỗi filesystem hoặc sự cố toàn bộ NAS, project sau này vẫn sẽ cần một chiến lược backup độc lập.

Dung lượng và model HDD cụ thể sẽ được quyết định sau.

Phần này sẽ được trình bày chi tiết hơn trong bài riêng về NAS & Storage.


8. Không phải branch nào cũng cần 10GbE

Ngoài compute và storage, hệ thống còn các nhánh dành cho camera và Raspberry Pi / IoT.

Camera dự kiến sử dụng độ phân giải khoảng Full HD, do đó nhu cầu bandwidth của từng camera tương đối nhỏ so với server hoặc NAS.

Vì vậy camera branch hiện chỉ cần 1GbE uplink về core switch.

Ngay cả khi có nhiều camera hoạt động đồng thời, 1GbE vẫn để lại khoảng headroom khá lớn đối với một hệ thống camera Full HD quy mô gia đình.

Raspberry Pi branch cũng tương tự.

Nhờ đó, các port 10GbE trên core có thể được ưu tiên cho những nơi thực sự cần bandwidth cao hơn như server switch và storage.

Không phải cái gì làm được bằng 10GbE cũng cần phải chạy 10GbE.


Internet — WAN không quyết định tốc độ của toàn bộ Homelab

Một điểm dễ nhầm khi thiết kế Homelab là tốc độ Internet và tốc độ mạng nội bộ.

Đường WAN hiện tại của tôi là khoảng 100 Mbps, và kế hoạch trong tương lai là nâng lên khoảng 300 Mbps.

Nhưng điều đó không có nghĩa toàn bộ Homelab chỉ cần mạng 100 hoặc 300 Mbps.

Ví dụ:

PC → NAS

hoặc:

Proxmox node → NAS

là traffic nội bộ và không đi ra Internet.

Do đó chúng vẫn có thể sử dụng các kết nối 2.5GbE và 10GbE độc lập với tốc độ WAN.

Điều này tạo ra ba lớp bandwidth khá rõ trong thiết kế hiện tại:

WAN: 100 Mbps → dự kiến 300 Mbps

Server / Client: 2.5GbE

Backbone / NAS: 10GbE

Thay vì nâng toàn bộ network lên 10GbE, tôi ưu tiên bandwidth theo đúng nhu cầu của từng khu vực.


Kết thúc Phần 1

Nhìn lại, bước Planning & System Design có vẻ không tạo ra thứ gì hữu hình.

Chưa có rack.

Chưa có một đống server nhấp nháy LED.

Chưa có dây mạng được đi gọn gàng.

Nhưng chính bước này quyết định phần lớn những gì sẽ được làm ở các phần tiếp theo.

Từ một mong muốn khá đơn giản là:

“Tôi muốn có một server rack của riêng mình.”

nó đã bắt đầu trở thành một hệ thống với network architecture, compute, storage, management và kế hoạch mở rộng tương đối rõ ràng.

Ở Phần 2, tôi sẽ bắt đầu biến kiến trúc trên giấy thành thứ có thể cầm được:

Thiết kế Server Rack 10-inch 24U

Từ KWS Rack ban đầu, đến việc bố trí từng thiết bị, dựng assembly trong Fusion 360 và thiết kế những rack mount riêng cho các thiết bị vốn chưa bao giờ được sinh ra để nằm trong rack.

Và đây là lúc máy in bắt đầu phải làm việc.


Có 5 thông tin mình muốn bạn bổ sung trước khi mình làm bản publish cuối

Bản trên đã có thể dùng làm draft, nhưng trong Notion hiện chưa chốt rõ một số điểm. Bạn trả lời giúp mình:

  1. 3 chiếc M720q dự kiến chạy gì? Ví dụ GTNH/Minecraft, Factorio, Docker services, Home Assistant... và mỗi máy có nhiệm vụ riêng hay bạn chưa chốt?

  2. Proxmox: Notion hiện ghi rõ không dùng Proxmox, mỗi M720q standalone. Đây vẫn là quyết định hiện tại hay bạn muốn dùng Proxmox?

  3. NAS: hiện tại bạn vẫn định dùng TrueNAS + RAIDZ2 chứ? Với 8 bay thì kế hoạch mới nhất là 7 HDD RAIDZ2 + 1 removable backup, 8 HDD RAIDZ2, hay phương án khác?

  4. Camera: dự kiến cuối cùng là bao nhiêu camera và độ phân giải nào? Đây là phase đầu hay chỉ future expansion?

  5. WAN: Internet hiện tại và mục tiêu sau này là bao nhiêu — 300 Mbps, 1 Gbps hay mức khác?

Sau khi có 5 câu này, mình có thể làm lại bản Phần 1 hoàn chỉnh để đăng thẳng lên website, đồng thời vẽ cho bạn một network architecture diagram đẹp theo phong cách bài Maker thay vì dùng sơ đồ chữ như trên.