Thông tin chung
Software Defined Networking (SDN) với Windows Server 2016 và System Center Virtual Machine Manager 2016 (SCVMM 2016). Ở bài đăng trên wiki này là phần đầu tiên trong tổng số năm phần sẽ được xuất bản trong những tuần tiếp theo. Các bài viết dựa trên một bản tóm tắt (Whitepaper), mà tôi đã viết sau bài phát biểu của mình tại hội nghị CDC 2023 lúc thuyết trình cùng với Petra Lipp. Whitepaper này chỉ dành riêng cho các độc giả đã đăng ký nhận bản tin. Bạn có thể nhận được toàn bộ Whitepaper dưới dạng PDF nếu đăng ký nhận bản tin của chúng tôi.
Triển khai SDN
Trong bài viết trước (Phần 1), chúng ta đã tìm hiểu kiến trúc và sơ đồ hoạt động của một môi trường SDN với Windows Server 2016. Trong bài viết này, chúng ta sẽ bắt đầu xây dựng và triển khai một môi trường lab SDN.
Microsoft cung cấp cho SDN-Deployment các phương pháp khác nhau:
- Cài đặt thủ công với PowerShell Phương pháp này rất mất công, nhưng có thể hữu ích nếu bạn chỉ muốn sử dụng các công nghệ SDN riêng lẻ. Chi tiết xem tại Deploy Software Defined Network Technologies using Windows PowerShell trên Technet Library.
- Cài đặt với sự trợ giúp của các script PowerShell có sẵn. Phương pháp này được đề xuất nếu bạn muốn xây dựng và vận hành một môi trường SDN mà không cần System Center Virtual Machine Manager (SCVMM) hoặc vì bạn muốn sử dụng các công cụ quản lý khác. Chi tiết xem tại Deploy a Software Defined Network infrastructure using scripts trên Technet Library.
- Cài đặt thông qua System Center Virtual Machine Manager 2016 (SCVMM 2016), theo ý kiến của tôi thì đây hiện là phương pháp dễ dàng và trực quan nhất để cài đặt một môi trường SDN, đặc biệt là khi SCVMM 2016 đã được sử dụng làm công cụ quản lý cho ảo hoá. Trong đó, chúng ta có cả cơ hội cài đặt thủ công thông qua giao diện VMM (Chi tiết xem tại Setup a Software Defined Network (SDN) infrastructure in the VMM fabric trên Technet Library) và cài đặt tự động bằng các script PowerShell được Microsoft cung cấp trên Github.
Trong phần tiếp theo, tôi sẽ giải thích cách cài đặt SCVMM tự động bằng các script PowerShell và xây dựng môi trường Lab.
Để bắt đầu xây dựng môi trường SDN Lab, trước tiên chúng ta cần thỏa mãn các yêu cầu cơ bản.
Phần cứng
Trong phần lab của tôi, tôi không có đủ số lượng hệ thống phần cứng để triển khai một môi trường SDN đầy đủ. Do đó, tôi sẽ xây dựng toàn bộ trên một Hyper-V Host đơn lẻ và sử dụng Nested Virtualization.
Hyper-V cần có ít nhất 128 GB RAM, phù hợp với hoặc được chứng nhận cho Windows Server 2016 Datacenter và tất nhiên hỗ trợ Hyper-V. Nếu không có hệ thống vật lý như vậy, bạn có thể triển khai toàn bộ trên một virtualization mà bạn có thể thuê từ Microsoft Azure hoặc nhà cung cấp dịch vụ khác.
Phần mềm
Bạn cần các thành phần phần mềm sau để cài đặt:
Windows Server 2016 Data Center System Center Virtual Machine Manager (SCVMM) 2016 bao gồm SQL Server 2014 và Windows Assessment and Deployment Kit SCVMMService Templates và Powershell Skripte cho SDN Deployment.
Tôi sẽ nói kỹ hơn về việc tải xuống và sử dụng các SCVMM Service Templates và PowerShell Skripte sau.
Cơ sở hạ tầng Lab.
Đối với môi trường SDN, chúng ta cần một số máy ảo và các thông số của các mạng SDN logic.
Máy ảo
Trong hạ tầng của môi trường SDN, tôi giới hạn việc triển khai trên các máy ảo sau:
Domain Controller SDN-DC01
Hệ thống này hoạt động như một Active Directory Controller với DNS tích hợp. Ngoài ra, nó cũng cung cấp Storage cho Hyper-V Failover Cluster của chúng ta thông qua các File Share.
BGP-Router SDN-BGP01
Hệ thống này đại diện cho BGP-Router cho môi trường Lab của chúng ta. Nó sử dụng vai trò Windows Server Remote Access.
SDN-VMM01
Hệ thống này có cài đặt System Center Virtual Machine Manager 2016 bao gồm các thành phần cơ bản như SQL Server và Windows Assessment and Deployment Kit cần thiết. Chúng ta sẽ điều khiển triển khai môi trường SDN từ hệ thống này.
Cụ thể, các máy chủ ảo sau được sử dụng để triển khai môi trường SDN:
- SDN-HV01, SDN-HV02, SDN-HV03 và SDN-HV04: Đây là 4 máy chủ ảo được sử dụng để tạo thành một Hyper-V Failover Cluster. Trong đó, Hyper-V là một hypervisor cho phép chạy nhiều hệ điều hành (OS) khác nhau trên một máy chủ vật lý duy nhất. Failover Cluster là một cụm máy chủ (cluster) gồm nhiều máy chủ làm việc cùng nhau nhằm đảm bảo sự liên tục hoạt động của dịch vụ. Trong trường hợp một máy chủ gặp sự cố, các tài nguyên sẽ được chuyển sang một máy chủ khác trong cụm.
- Network Controller (SDN-NC): Đây là máy chủ ảo chạy dịch vụ Network Controller của SDN. Dịch vụ này quản lý và cấu hình mạng trong môi trường SDN.
- Software Load Balancer Multiplexer (SLB-MUX) và Gateway (SDN-GW01, SDN-GW02): Đây là các máy chủ ảo cài đặt dịch vụ Load Balancer và Gateway. Load Balancer đảm bảo phân phối tải trọng đến các máy chủ ảo khác trong môi trường, trong khi Gateway được sử dụng để kết nối mạng nội bộ (private network) với mạng bên ngoài (public network).
- Tenant VMs: Đây là các máy chủ ảo chứa các ứng dụng hoặc dịch vụ cần được triển khai trong môi trường SDN.
Trước khi triển khai SDN-Umgebung chúng ta cần phải cấu hình các thông số mạng SDN (Software Defined Network). Đây là các thông số mạng ảo trong một mạng SDN, được cấu hình trong VMM (System Center Virtual Machine Manager) để quản lý và triển khai các ứng dụng và máy ảo trên các máy chủ SDN. Các thông số này được liệt kê trong các bảng dưới đây, và chúng ta sẽ sử dụng chúng trong VMM để triển khai SDN-Umgebung.
NC_Management
subnet: 192.168.80.0
netmask: 255.255.255.0
VLAN (optional): 0
Gateway: 192.168.80.1
DNS: 192.168.80.10
IP range used: 192.168.80.230 - 192.168.80.254
reserved for other purposes: 192.168.80.230 (IP address for REST API)
HNVPA
subnet: 10.10.10.0
netmask: 255.255.255.0
VLAN (optional): 0
Gateway: 10.10.10.1
DNS: 192.168.80.10
IP range used: 10/10/10/100 - 10/10/10/199
Transit
subnet: 10.10.20.0
netmask: 255.255.255.0
VLAN (optional): 0
Gateway: 10.10.20.1
DNS: 192.168.80.10
IP range used: 10/10/20100 - 10/10/20199
PrivateVIP
subnet: 210.10.30.0
netmask: 255.255.255.0
VLAN (optional): 0
Gateway: 10.10.30.1
DNS: 192.168.80.10
IP range used: 10.10.30.100 - 10.10.30.199
reserved for other purposes: 10.10.30.100 - 10.10.30.199 (for load balancer VIPs)
GREVIP
subnet: 10.10.40.0
netmask: 255.255.255.0
VLAN (optional): 0
Gateway: 10.10.40.1
DNS: 192.168.80.10
IP range used: 10.10.40.100 - 10.10.40.199
reserved for other purposes: 10.10.40.100 - 10.10.40.199 (for load balancer VIPs)
PublicVIP
subnet: 10.10.50.0
netmask: 255.255.255.0
VLAN (optional): 0
Gateway: 10.10.50.1
DNS: 192.168.80.10
IP range used: 10.10.50.100 - 10.10.50.199
reserved for other purposes: 10.10.50.100 - 10.10.50.199 (for tenant VIPs))
Như vậy hạ tầng của môi trường lab trông như thế này:
Chuẩn bị
Trước khi bắt đầu, bạn cần phải cài đặt Windows Server 2016 Data Center trên máy chủ Hyper-V vật lý và cài đặt role Hyper-V. Nếu bạn sử dụng Windows 10 Pro thay vì Windows Server 2016 Data Center, thì bạn không cần phải kích hoạt Windows.
Sau đó, bạn cần tạo ba switch ảo (virtual switch) trên máy chủ Hyper-V. Ba virtual switch này được sử dụng để thiết lập kết nối mạng giữa các máy chủ ảo trong môi trường SDN. Bạn có thể tạo ba virtual switch này bằng cách sử dụng giao diện đồ họa (GUI) trong Hyper-V Manager hoặc sử dụng PowerShell.
New-VMSwitch -Name "SDN" -SwitchType Internal
New-VMSwitch -Name "Public" -SwitchType Internal
New-VMSwitch -Name "Private" -SwitchType Internal
Cách tạo ra các file VHDX cho các máy ảo Windows Server 2016 sẽ được tạo ra trong môi trường SDN Lab. Một file VHDX là một định dạng file ảo hóa của ổ đĩa cứng, nó được sử dụng để lưu trữ các hệ điều hành và ứng dụng trong một môi trường ảo hóa.
Để tạo ra các file máy ảo VHDX, tôi đề xuất sử dụng PowerShell Skript Convert-WindowsImage.ps1 được tìm thấy trong thư mục <ISO>/NanoServer/NanoServerImageGenerator của ISO của Windows Server 2016. Skript này cho phép tạo ra một file VHDX với các thành phần đã chọn sẵn, bao gồm hệ điều hành Windows Server 2016 và các driver, phần mềm và các tùy chọn cấu hình khác được cài đặt.
Việc tạo ra các file VHDX này là quan trọng để triển khai các máy ảo trong môi trường SDN Lab.
cd '<ISO>:\nanoserver\NanoServerImageGenerator'
.\Convert-WindowsImage.ps1
# Erzeuge dyn. VHDX für Gen2 Hyper-V VM
# mit Windows Server 2016 Datacenter (= Edition4)
Convert-WindowsImage `
-SourcePath '<ISO>:\sources\install.wim' `
-Edition 4 `
-VHDPath 'E:\Hyper-V\WS2016.vhdx' `
-SizeBytes 80GB `
-VHDFormat VHDX `
-DiskLayout UEFI
Trong đoạn code trên hướng dẫn tạo các máy ảo (VM) trên Hyper-V host bằng cách sử dụng tập tin VHDX được tạo ra trong bước trước. Các máy ảo này sẽ được tạo dưới dạng Gen 2 (thế hệ thứ hai), được cấu hình với các card mạng và ổ đĩa nhất định và được kết nối với các switch mạng tương ứng.