Phòng lab: Khám phá kiến trúc
Khám phá thực hành các topology triển khai VergeOS bằng Terraform playground. Theo dõi các mẫu hạ tầng dưới dạng mã, so sánh các kịch bản và thiết kế topology cho một trường hợp sử dụng của khách hàng.
Tổng quan bài thực hành
Trong bài thực hành này, bạn sẽ khám phá VergeOS Terraform Playground — một dự án mã nguồn mở triển khai các hệ thống VergeOS ảo bằng Terraform. Bằng cách đọc mã nguồn và tài liệu, bạn sẽ củng cố các khái niệm kiến trúc được đề cập trong mô-đun này: mạng core fabric, các tầng lưu trữ vSAN, tổ chức cụm, và các kiến trúc HCI so với UCI.
Bạn sẽ thực hiện gì
Phần 1 — Đọc tài liệu kiến trúc của playground và mã Terraform để xác định cách các khái niệm VergeOS được ánh xạ sang hạ tầng dưới dạng mã
Phần 2 — Dựa trên một kịch bản khách hàng, hãy đề xuất và vẽ sơ đồ một kiến trúc triển khai
Phần 3 — So sánh bốn cấu hình triển khai ví dụ và phân tích sự khác nhau của chúng
Yêu cầu tiên quyết
Một tài khoản GitHub (để clone kho lưu trữ)
Git đã được cài đặt trên máy trạm của bạn
Một trình soạn thảo văn bản hoặc IDE (khuyến nghị VS Code)
Không cần quyền truy cập hệ thống VergeOS — bài thực hành này là một bài tập đọc hiểu và thiết kế
Thời gian ước tính
30 phút
Phần 1: Khám phá kiến trúc
Trong phần này, bạn sẽ clone kho lưu trữ playground Terraform và lần theo cách các khái niệm kiến trúc VergeOS được thể hiện trong hạ tầng dưới dạng mã.
Clone kho lưu trữ
Đọc tài liệu kiến trúc
Mở
docs/architecture.mdvà đọc toàn bộ tài liệu. Khi đọc, hãy xác định câu trả lời cho các câu hỏi sau:Các bốn kịch bản triển khai được playground hỗ trợ?
Một tệp seed cài đặt và nó cho phép cài đặt tự động không giám sát như thế nào?
Cái triển khai tối thiểu kích thước?
Gợi ý: Bốn kịch bản được liệt kê trong
docs/deployment-scenarios.mdkèm sơ đồ kiến trúc. Triển khai tối thiểu là hai node bộ điều khiển tạo thành một cụm HCI duy nhất.Xem các sơ đồ kịch bản triển khai
Mở
docs/deployment-scenarios.mdvà nghiên cứu các sơ đồ kiến trúc Mermaid cho từng kịch bản. Với mỗi kịch bản, hãy ghi lại:Có bao nhiêu node tham gia
Có bao nhiêu cụm được tạo
Những loại node xuất hiện (controller, scale-out, storage, compute)
Cách tất cả các node kết nối với core fabric và mạng ngoài
Lần theo core fabric trong Terraform
Mở
main.tf(module gốc) và tìm hai tài nguyên mạng core fabric. Trả lời các câu hỏi sau:Các tài nguyên được đặt tên là gì? (
core_fabric_1vàcore_fabric_2)Cái gì MTU được cấu hình? (9142 — khung jumbo cho sao chép vSAN)
DHCP có được bật trên các mạng này không? (Không —
dhcp_enabled = false)Cái gì
loại địa chỉ IPđược đặt? (không có— đây là các đường truyền Layer 2)
Xem Node 1 khác Node 2 như thế nào
Mở
modules/controllers/main.tfvà so sánhverge_node_1vàverge_node_2. Các khác biệt chính cần xác định:Mẫu Cloud-init — Node 1 sử dụng
user-data-node1.yaml(tạo một hệ thống mới vớiYC_VSAN_NEW=1). Node 2 sử dụnguser-data-node2.yaml(tham gia vào hệ thống hiện có vớiYC_VSAN_NEW=0).Thiết lập API sau cài đặt — cloud-init của Node 1 bao gồm một script cấu hình nguồn cập nhật, bật SSH, và tùy chọn tạo các cụm lưu trữ/tính toán qua API VergeOS. Node 2 không có script sau cài đặt.
Chuỗi phụ thuộc — Node 2 có một
depends_ontham chiếu tới Node 1, đảm bảo hệ thống được khởi tạo đầy đủ trước khi bộ điều khiển thứ hai cố gắng tham gia.
Cả hai node dùng chung cùng một cấu trúc VM: họ Linux OS, bật ảo hóa lồng nhau, ba NIC virtio (external, core fabric 1, core fabric 2), CD-ROM chứa ISO VergeOS, và một datasource cloud-init nocloud.
Trả lời các câu hỏi hiểu bài
Hãy viết câu trả lời cho các câu sau (hoặc thảo luận với bạn học của bạn):
#Câu hỏiCâu trả lời mong đợi1
Tại sao core fabric sử dụng hai switch riêng biệt?
Dự phòng — nếu một switch hoặc một đường truyền bị lỗi, đường còn lại vẫn duy trì kết nối giữa các node
2
Tại sao DHCP bị tắt trên các mạng core fabric?
Core fabric sử dụng địa chỉ IP tĩnh; trình cài đặt VergeOS cấu hình địa chỉ thông qua install seed
3
Tại sao Node 2 phải đợi Node 1 hoàn tất trước khi bắt đầu?
Node 1 tạo ra hệ thống VergeOS; Node 2 cần một hệ thống hiện có để tham gia
4
Những loại lưu lượng nào đi qua core fabric?
sao chép vSAN, điều phối cụm, di chuyển nóng VM, giao tiếp control plane
5
Tại sao
quantity_tier_1_disksđược đặt thành 0 cho các controller khi các node lưu trữ được bật?Ở chế độ UCI, các node lưu trữ chuyên dụng cung cấp toàn bộ dung lượng tầng 1; các controller chỉ cần tầng 0 cho metadata
Phần 2: Bài tập thiết kế
Bây giờ hãy áp dụng những gì bạn đã học. Dựa trên một kịch bản khách hàng, hãy đề xuất một kiến trúc triển khai và biện minh cho quyết định của bạn.
Kịch bản khách hàng
Midwest Manufacturing Co. đang chuyển đổi từ môi trường VMware vSphere với 3 host ESXi. Hiện họ chạy 50 VM (kết hợp Windows và Linux), có khoảng 10 TB dung lượng lưu trữ khả dụng, và dự kiến tăng trưởng ở mức vừa phải trong 2 năm tới. Họ có một đội IT nhỏ (2 người) và muốn giảm thiểu độ phức tạp vận hành. Ngân sách bị hạn chế.
Chọn HCI hoặc UCI
Dựa trên hồ sơ khách hàng, bạn khuyến nghị mô hình triển khai nào? Hãy cân nhắc:
Quy mô đội ngũ — Một đội IT 2 người ưu tiên sự đơn giản
Mẫu tăng trưởng — "Tăng trưởng vừa phải" gợi ý khả năng mở rộng cân bằng giữa compute/lưu trữ
Ngân sách — HCI cần ít node tổng cộng hơn UCI cho cùng dung lượng
Môi trường hiện tại — 3 host ESXi phù hợp với một cụm HCI nhỏ
Câu trả lời đề xuất: HCI là lựa chọn phù hợp hơn. Đội ngũ nhỏ được hưởng lợi từ kiến trúc đơn giản hơn (một loại cụm duy nhất), khả năng mở rộng cân bằng phù hợp với tăng trưởng vừa phải của họ, ít node hơn giúp giảm chi phí, và HCI gần giống với mô hình cụm VMware hiện có của họ.
Xác định số lượng node và bố cục
Phác thảo hoặc mô tả kiến trúc đề xuất của bạn:
Có bao nhiêu nút điều khiển? (Tối thiểu 2 cho HA)
Bạn có cần các nút mở rộng ngang? (Xem xét: 50 VM trên 2 node có thể khá chật; 2 node scale-out sẽ tạo thêm dư địa)
Có bao nhiêu cụm? (1 cho HCI)
Còn về dung lượng lưu trữ? (10 TB khả dụng nghĩa là khoảng 20 TB thô với sao chép giữa các node)
Một thiết kế hợp lý:
Ánh xạ sang một ví dụ của playground
Tệp ví dụ nào của playground Terraform khớp nhất với thiết kế của bạn?
Trả lời:
examples/4-node-hci.tfvars— 2 bộ điều khiển + 2 node scale-out trong một cụm HCI duy nhất. Điều này khớp với thiết kế HCI 4 node được khuyến nghị cho việc mở rộng compute và lưu trữ cân bằng.
Phần 3: So sánh kiến trúc
So sánh cả bốn .tfvars tệp từ examples/ thư mục. Điền vào bảng so sánh bên dưới.
Hướng dẫn
Mở từng tệp và xác định các giá trị cấu hình. Dùng bảng để ghi lại kết quả.
Tệp: examples/2-node-hci.tfvars
Tình huống: HCI 2 node (Một cụm)
Tổng số node: 2
Cụm: 1
Loại node: 2 bộ điều khiển (lưu trữ + tính toán)
Biến bật/tắt: Không có (tất cả mặc định)
Đĩa tầng 1 trên controller: Có (mỗi cái 2 × 1000 GB)
Phù hợp nhất cho: Kiểm thử cơ bản, đánh giá, triển khai nhỏ nhất có thể
Tệp: examples/4-node-hci.tfvars
Tình huống: HCI + Scale-Out (Một cụm)
Tổng số node: 4
Cụm: 1
Loại node: 2 bộ điều khiển + 2 scale-out
Biến bật/tắt:
create_scale_out_nodes = trueĐĩa tầng 1 trên controller: Có (mỗi cái 2 × 1000 GB)
Phù hợp nhất cho: Các cụm HCI lớn hơn, thử nghiệm hành vi scale-out, tăng trưởng cân bằng
Tệp: examples/4-node-hybrid-hci-2-cluster.tfvars
Tình huống: HCI lai (2 cụm)
Tổng số node: 4
Cụm: 2
Loại node: 2 bộ điều khiển (lưu trữ + tính toán) + 2 chỉ tính toán
Biến bật/tắt:
create_compute_nodes = trueĐĩa tầng 1 trên controller: Có (controller cung cấp toàn bộ lưu trữ)
Phù hợp nhất cho: Tách mở rộng compute khỏi lưu trữ, bổ sung năng lực tăng đột biến cho compute
Tệp: examples/6-node-uci-3-cluster.tfvars
Tình huống: UCI (3 cụm)
Tổng số node: 6
Cụm: 3
Loại node: 2 bộ điều khiển + 2 chỉ lưu trữ + 2 chỉ tính toán
Biến bật/tắt:
create_storage_nodes = true,create_compute_nodes = trueĐĩa tầng 1 trên controller: Không (các node lưu trữ cung cấp toàn bộ dung lượng tầng 1)
Phù hợp nhất cho: UCI giống môi trường sản xuất, mở rộng độc lập storage và compute, môi trường lớn hơn
Bảng tóm tắt so sánh
Hoàn thành bảng này khi bạn xem từng tệp:
Tổng số node
2
4
4
6
Cụm
1
1
2
3
Các nút điều khiển
2
2
2
2
Node scale-out
0
2
0
0
Node chỉ lưu trữ
0
0
0
2
Node chỉ tính toán
0
0
2
2
Controller có đĩa tầng 1 không?
Có
Có
Có
Không
Mở rộng lưu trữ
Thêm node HCI
Thêm node HCI
Thêm bộ điều khiển
Thêm node lưu trữ
Mở rộng compute
Thêm node HCI
Thêm node HCI
Thêm node compute
Thêm node compute
Độ phức tạp
Thấp
Thấp
Trung bình
Cao
Trường hợp sử dụng lý tưởng
Nhỏ / đánh giá
Cỡ trung, cân bằng
Bùng nổ compute
Lớn / mở rộng độc lập
Câu hỏi phân tích
Sau khi hoàn thành bảng, hãy xem xét các câu hỏi sau:
Tại sao các controller trong kịch bản UCI lại có 0 đĩa tầng 1?
Trong UCI, các node lưu trữ chuyên dụng cung cấp toàn bộ lưu trữ cho khối lượng công việc. Các controller chỉ cần đĩa tầng 0 cho metadata vSAN. Điều này thể hiện trong
main.tfnơiquantity_tier_1_disksđược đặt có điều kiện thành 0 khicreate_storage_nodes = true.Chuỗi phụ thuộc là gì khi cả node lưu trữ và node compute đều được bật?
Controller → Node lưu trữ → Node compute. Mô-đun compute có một
depends_ontham chiếu rõ ràng tới mô-đun lưu trữ, đảm bảo cụm lưu trữ tồn tại trước khi các node compute cố gắng tham gia. Điều này phản ánh cách VergeOS tạo cụm hoạt động: phải có lưu trữ sẵn trước khi khối lượng công việc compute có thể chạy.Bạn sẽ sửa ví dụ HCI 4 node như thế nào để hỗ trợ 6 node HCI?
Đổi
quantity_scale_out_nodestừ2thành4. Mô-đun Terraform tạo thêm các node scale-out tuần tự, mỗi node tham gia cùng một cụm HCI. Không cần thêm biến bật/tắt nào khác.
Điểm chính
Sau khi hoàn thành bài thực hành này, bạn sẽ có thể:
✅ Điều hướng playground Terraform VergeOS và hiểu cấu trúc của nó
✅ Xác định cách các mạng core fabric, các tầng lưu trữ vSAN và các loại node được biểu diễn trong Terraform
✅ Giải thích sự khác nhau giữa bốn kịch bản triển khai (HCI 2 node, HCI 4 node, lai 2 cụm, UCI 3 cụm)
✅ Đề xuất một kiến trúc VergeOS phù hợp cho một kịch bản khách hàng cụ thể
✅ Lần theo chuỗi phụ thuộc từ controllers qua các loại node tùy chọn
Các bước tiếp theo
Chuyển đến Mô-đun 2: Định cỡ & Thiết kế để học cách chuyển đổi yêu cầu khách hàng thành các cấu hình phần cứng và kế hoạch triển khai cụ thể.
Cập nhật lần cuối
Nội dung này có hữu ích không?