Apache CloudStack: ‘Cứu cánh’ xây dựng Private Cloud khi OpenStack quá nặng nề

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Khi hạ tầng ảo hóa bắt đầu ‘phình to’ ngoài tầm kiểm soát

Nếu bạn đang vận hành một homelab với khoảng 10-15 VM trên Proxmox, mọi thứ chắc chắn vẫn rất màu hồng. Nhưng hãy tưởng tượng khi con số đó tăng lên 200 VM, phục vụ cho 5-7 team dev khác nhau với nhu cầu cô lập tài nguyên hoàn toàn. Lúc này, việc click chuột thủ công để tạo từng máy ảo hay cấu hình VLAN cho từng team sẽ trở thành cơn ác mộng vận hành.

Vấn đề lớn nhất là tính năng Multi-tenancy (đa người dùng). Bạn cần một cơ chế để mỗi team tự quản lý quota, tự tạo máy ảo và cấu hình network trong phân vùng của họ. Nếu cứ bám trụ với cách quản lý máy ảo đơn lẻ, bạn sẽ sớm đuối sức vì lượng ticket yêu cầu hỗ trợ hạ tầng đổ về mỗi ngày.

OpenStack có thực sự là ‘chân ái’?

Cái tên đầu tiên mọi người nghĩ đến khi làm IaaS (Infrastructure as a Service) thường là OpenStack. Mình cũng từng thử dựng một ‘AWS nội bộ’ bằng công cụ này và nhận ra một sự thật: OpenStack cực kỳ ‘khó nuốt’. Nó là tập hợp của hàng chục project như Nova, Neutron, Cinder… giao tiếp qua một mạng lưới Message Queue cực kỳ phức tạp.

Để vận hành OpenStack ổn định, bạn cần ít nhất 3 kỹ sư chuyên trách chỉ để ‘trực chiến’. Với các team IT vừa và nhỏ, việc nuôi một bộ máy quản lý hạ tầng cồng kềnh như vậy thường lợi bất cập hại. OpenStack rất mạnh, nhưng cái giá phải trả về nhân lực và tài nguyên phần cứng (thường yêu cầu RAM tối thiểu 64-128GB chỉ để chạy các service nền) là quá lớn.

So sánh các hướng đi Private Cloud hiện nay

Để giải quyết bài toán tự động hóa hạ tầng, chúng ta thường có 3 lựa chọn phổ biến:

  • Proxmox VE / ESXi: Tuyệt vời cho ảo hóa truyền thống. Tuy nhiên, khả năng tự phục vụ (Self-service) cho người dùng cuối còn hạn chế. Việc phân quyền chi tiết và quản lý SDN ở quy mô lớn khá rời rạc.
  • OpenStack: Đầy đủ mọi tính năng nhưng cấu hình siêu khó. Nó đòi hỏi kỹ năng quản trị cực sâu và phần cứng cực mạnh để duy trì sự ổn định.
  • Apache CloudStack: Đây là ‘điểm rơi’ trung gian hoàn hảo. Nó cung cấp giao diện Web trực quan và quản lý tập trung toàn bộ Compute, Storage, Network. Quan trọng nhất, kiến trúc của nó tinh gọn hơn OpenStack rất nhiều.

Triển khai CloudStack: Thực dụng và bền bỉ

CloudStack là lựa chọn thay thế OpenStack tốt nhất nếu bạn ưu tiên sự ổn định. Bạn có thể quản lý đồng thời nhiều Hypervisor như KVM, VMware hay XenServer chỉ từ một dashboard duy nhất. Dưới đây là cách mình dựng một cụm CloudStack cơ bản với KVM trên Ubuntu 22.04.

1. Chuẩn bị tài nguyên

Bạn nên chuẩn bị ít nhất 2 node vật lý (hoặc VM để lab):

  • Management Server: Chạy dashboard điều khiển và database (Cấu hình đề nghị: 4 vCPU, 8GB RAM).
  • KVM Host: Nơi trực tiếp chạy máy ảo của người dùng (Càng nhiều RAM và CPU càng tốt).

Hãy chắc chắn các máy đã thông mạng và được gán IP tĩnh để tránh rắc rối về sau.

2. Cài đặt Management Server

Trước hết, chúng ta cần cài MySQL để lưu trữ toàn bộ cấu hình hệ thống.

# Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y

# Cài đặt MySQL Server
sudo apt install mysql-server -y

# Cho phép CloudStack truy cập database từ xa
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# Sửa bind-address thành 0.0.0.0

sudo systemctl restart mysql

Sau đó, thêm repository chính thức của CloudStack và tiến hành cài đặt:

# Thêm repo CloudStack 4.18
wget -O - http://download.cloudstack.org/release.asc | sudo apt-key add -
sudo add-apt-repository "deb http://download.cloudstack.org/ubuntu jammy 4.18"

# Cài đặt server
sudo apt update
sudo apt install cloudstack-management -y

# Khởi tạo database
sudo cloudstack-setup-databases cloud:password@localhost --deploy-as=root:root_password

3. Cấu hình KVM Host (Agent)

Tại node chạy máy ảo, bạn cần cài cloudstack-agent. Đây là thành phần cầu nối giúp Management Server ra lệnh cho KVM.

sudo apt update
sudo apt install cloudstack-agent -y

# Cấu hình Libvirt để mở cổng điều khiển
sudo nano /etc/libvirt/libvirtd.conf
# Đảm bảo các thông số sau chính xác:
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0

Đừng quên thêm cờ -l vào biến libvirtd_opts trong file /etc/default/libvirtd để kích hoạt chế độ lắng nghe mạng.

4. Cấu hình qua giao diện Web

Truy cập http://<IP-Management>:8080/client với user admin và mật khẩu password. CloudStack sẽ hiển thị một Wizard hướng dẫn tạo Zone.

Cấu trúc phân cấp của CloudStack rất logic: Zone (Data Center) > Pod (Dãy rack) > Cluster (Nhóm server chung storage) > Host (Máy vật lý). Nếu muốn hệ thống linh hoạt như AWS, bạn nên chọn mô hình Advanced Networking để tận dụng VLAN và Security Groups.

Vài lưu ý ‘xương máu’ khi vận hành

Sau một thời gian ‘vọc’ CloudStack, mình rút ra 3 kinh nghiệm quan trọng:

  1. Ưu tiên Shared Storage: Hãy dùng NFS hoặc Ceph cho Primary Storage. Khi một Host gặp sự cố phần cứng, CloudStack sẽ tự động di chuyển và bật lại VM trên Host khác trong chưa đầy 30 giây.
  2. Để mắt tới System VM: Mọi template và console đều chạy qua 2 máy ảo hệ thống (SSVM và CPVM). Nếu không thấy màn hình console, hãy kiểm tra ngay trạng thái mạng của 2 con VM này.
  3. Cấu hình MTU: Nếu dùng VXLAN, hãy hạ MTU của VM xuống 1450. Việc này giúp tránh lỗi mất gói tin (packet loss) do phần header của gói tin đóng gói chiếm thêm dung lượng.

CloudStack thực sự giúp mình giải phóng sức lao động. Thay vì gõ lệnh virsh mệt mỏi, giờ đây mọi việc từ cấp phát IP đến giới hạn băng thông đều xong xuôi sau vài cú click. Nếu bạn thấy Proxmox chưa đủ ‘đô’ mà OpenStack lại quá nặng, hãy thử CloudStack. Nó thực sự là một giải pháp IaaS thực dụng.

Share: