Published on

Ảo hóa máy chủ dùng công nghệ Hyper-V

Gần đây ban IT mới được để lại 1 con server đúng nghĩa Dell R620, tuy dòng này đã cũ dung về mặt cấu hình rõ ràng hơn hẳn con desktop đang dùng làm server.

Với thiết bị có được, làm sao để khai thác hiệu quả, tận dụng tối đa khả năng của thiết bị cũng là vấn đề đặt ra. Ý tưởng chung là phát triển dựa trên kình nghiệm hiện có từ máy chủ cũ (Xây dựng Kubernetes cluster On-premise):

  1. Host OS: Ubuntu Desktop
  2. Công nghệ ảo hóa: Virtualbox
  3. Xây dựng Kubernetes multiple node
  4. HAproxy làm reverse proxy

Tại sao dùng Hyper-V ?

Mình hoàn toàn có thể áp dụng công nghệ trên server cũ và triển khai trên R620 nhưng tuy nhiên khi kiểm tra thấy trên Supported Operating Systems​ không thấy có Ubuntu Server.

Để server hoạt động với hiệu suất cao nhất thì sự tương thích giữa Hardware và Software là rất cần thiết. Vì vậy mình quyết định lựa chọn OS nằm trong danh sách hỗ trợ cho máy R620.

Trong danh sách các OS thật sự mình đều chưa biết hoặc chưa có kinh nghiệm nên đành dựa vào tiêu chí $$, xem qua chỉ Microsoft Hyper-V là miễn phí, dẫu biết rằng:

Không có bữa trưa nào miễn phí - TANSTAAFL

Chấp nhận với nguy cơ trên, mình bắt đầu tìm hiểu và xây dựng dựng máy chủ sử dụng công nghệ ảo hóa Hyper-V

Cài đặt Hyper-V server

Sau khi đã thiết lập server: Raid, NICs network, … tiến hành download file iso Hyper-V Server 2019 và cài như cài Window thôi.

Công cụ quản lý Server

Đầu tiên là tìm cách quản lý server từ xa, thay vì cắm chuột, bàn phím, màn hình vào trực tiếp server, dưới đây là 2 công cụ hữu ích:

Window Admin Center

Công cụ hữu ích giúp quản lý Hyper-V server từ trình duyệt, ngoài ra còn hỗ trợ một số dịch vụ Azure. Công cụ này hoàn toàn miễn phí và download tại đây

Hyper-V Manager

Một công cụ khác giúp quản lý Hyper-V server từ máy trong mạng LAN. Tuy Window Admin Center đã bao gồm tính năng tượng tự của Hyper-V Manager tuy nhiên do đã quen thuộc nên mình sử dụng đồng thời cả 2 công cụ.

Để sử dụng công cụ này thì bạn phải sử dụng Window Pro / Enterprise, còn Window Home không có tính năng này. Để cài công cụ này:

  1. Mở Control Panel.
  2. Chọn Programs and Features.
  3. Click Turn Windows features on or off.
  4. Click vào Hyper-V section.
  5. Chọn vào Hyper-V Management ToolsHyper-V Platform để cài Hyper-V Manager.

Cấu hình quản lý server từ máy khác

Đầu tiên, yêu cầu server (Hyper-V) và máy client (Máy laptop của bạn chẳng hạn) phải cùng nằm trong 1 lớp mạng. Ví dụ IP local của server: 192.168.1.5 còn của laptop là 192.168.1.69 tức là chúng nằm trong cùng 1 lớp mạng.

Máy host (Hyper-V server)

  • Computer Name: hyper-v
  • Configure Remote Managent: Enabled
  • Remote Desktop: Enabled (more secure clients only)

Mở Powershell và chạy lệnh

Enable-PSRemoting
Enable-WSManCredSSP -Role server

Máy clients (Window 10)

Chuyển Network sang Private

Get-NetConnectionProfile

Nếu NetworkCategory đang ở Public thì bạn cần chuyển sang private bằng lệnh:

Set-NetConnectionProfile -InterfaceAlias Wi-Fi -NetworkCategory Private

Thêm Hyper-V server vào hosts

Sử dụng Powershell và thêm hyper-v với ip 192.168.1.5

Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "`n192.168.1.5`thyper-v"

Setup remote management

Set-WSManQuickConfig -SkipNetworkProfileCheck
Y

Enabling CredSSP

Chạy lệnh dưới đây trên Powershell, đừng quên sửa thành Users name của bạn trên window 10

Get-WSManCredSSP
Enable-WSManCredSSP -Role Client -DelegateComputer "hyper-v"

Kiểm tra xem đã tạo CredSSP thành công hay chưa:

Get-WSManCredSSP

Kết quả trả về nếu thành công:

The machine is configured to allow delegating fresh credentials to the following target(s): wsman/hyper-v

Thêm Hyper-V Host to Trusted Hosts

#Add value to Trusted Host
Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value "hyper-v"
#Validate the change
Get-Item -Path WSMan:\localhost\Client\TrustedHosts

Kết quả trả về:

Type            Name                           SourceOfValue   Value
----            ----                           -------------   -----
System.String   TrustedHosts                                   hyper-v

Thêm Hyper-V Connection Credentials vào Credential Manager

cmdkey /add:hyper-v /user:Administrator /pass:YourServerP@ssw0rd

Kết nối tới Hyper-V server

Hyper-V Manager

Từ máy của bạn mởi Hyper-V Manager và chọn Connect to Server…

Sau đó nhập tên hyper-v là tên server mà mình đã thiết lập ở trên rồi OK.

Sau khi hoàn thành bước này là đã có thể dung Hyper-V Manager tạo VM, virtual Switch, Setting con server từ xa rồi.

Window Admin Center

Gần đây Microsoft giới thiệu giải pháp Hybrid Cloud dựa trên nền tảng điện toán đám mây Azure của mình, đây là sự kết hợp giữa On-premise và Cloud server. Windown Admin Center là một công cụ hữu ích giúp quản lý server và kết nối với một số dịch vụ của Azure.

Để sử dụng công cụ này sau khi đã cài đặt:

Cửa sổ trình duyệt sẽ mở ra và chúng ta sẽ tiến hành thêm server để quản lý

Điền thông tin hyper-v sau đó ấn kết nối

Sau khi kết nối thành công, chúng ta bắt đầu khám phá các tính năng và quản lý server

Như vậy có thể nói bước migrate 1, 2 đã hoàn thành, tiếp theo 2 vấn đề mà mình thấy khó khăn nhất:

  • Xây dựng Kubernetes multiple node: Hyper-V server không hỗ trợ Vagrant cũng như Ansible. Việc khởi tạo master node, slave node chắc là phức tạp.
  • HAProxy không có phiên bản cho window, phương án thay thế là dùng NGINX là Reverse proxy, phiên bản nginx cho window cũng có nhiều giới hạn so với nginx trên Linux