OpenStack không khó như bạn tưởng
Nếu bạn đã quen với KVM hay Proxmox, việc quản lý vài máy ảo (VM) chắc hẳn rất đơn giản. Tuy nhiên, khi hệ thống lên đến hàng chục VM kèm yêu cầu phức tạp về mạng (SDN) và lưu trữ, bạn sẽ cần một “quản gia” thực thụ. Đó chính là lúc OpenStack xuất hiện.
Nhiều người thường bỏ cuộc vì dàn dịch vụ đồ sộ như Nova, Keystone hay Neutron. Bản thân mình đang chạy Homelab với 12 VM trên Proxmox, nhưng vẫn dành một góc riêng cho OpenStack. Nó không chỉ là công cụ, nó là tư duy khác biệt về hạ tầng đám mây. Để bắt đầu mà không cần server khủng, DevStack là lựa chọn số một.
Nên chọn cách triển khai OpenStack nào?
Trước khi gõ lệnh, bạn cần chọn đúng con đường phù hợp với mục đích của mình:
- Kolla-Ansible: Đóng gói dịch vụ vào Docker. Cách này rất mạnh cho môi trường Production nhưng cực kỳ ngốn RAM và khó debug nếu bạn chưa rành Ansible.
- MicroStack (Snap): Cài nhanh chỉ với một câu lệnh. Tuy nhiên, nó giống như một “hộp đen”, bạn rất khó can thiệp sâu vào config để học hỏi.
- DevStack: Đây là bộ script chính chủ từ cộng đồng. Nó cài trực tiếp lên OS, giúp bạn soi từng file cấu hình và xem log real-time dễ dàng.
Tại sao DevStack tốt nhất để học?
Ưu điểm lớn nhất là tính minh bạch. Bạn muốn hiểu Keystone hoạt động ra sao? Chỉ cần vào /etc/keystone. Muốn thử sửa code Nova? Bạn sửa trực tiếp trong /opt/stack rồi restart service là xong. Điểm trừ duy nhất là nó không bền (ephemeral). Sau khi reboot, một số service có thể không tự chạy lại mượt mà như bản thương mại.
Chuẩn bị phần cứng: Đừng để máy “thở oxy”
OpenStack là một “con quái vật” ngốn tài nguyên. Đừng cố cài nó trên một con VPS 2GB RAM kẻo script sẽ crash liên tục.
- OS: Ubuntu 22.04 LTS (Bản ổn định nhất hiện tại).
- CPU: Tối thiểu 2 Core. Hãy bật Nested Virtualization nếu bạn cài DevStack trên một máy ảo khác.
- RAM: Tối thiểu 8GB. Nếu muốn chạy mượt và tạo được VM con bên trong, hãy ưu tiên 16GB RAM.
- Disk: SSD 40GB trở lên để tránh nghẽn I/O khi cài đặt.
Các bước triển khai OpenStack All-in-One
Bước 1: Thiết lập user ‘stack’
DevStack từ chối chạy dưới quyền root vì lý do bảo mật. Bạn cần tạo một user riêng với quyền sudo không mật khẩu.
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo chmod 755 /opt/stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo -u stack -i
Bước 2: Tải source code
Chúng ta sẽ dùng nhánh stable/2023.1 (Antelope). Đây là phiên bản có sự cân bằng tốt giữa tính năng và độ ổn định.
git clone https://opendev.org/openstack/devstack -b stable/2023.1
cd devstack
Bước 3: Cấu hình file local.conf
Đây là linh hồn của quá trình cài đặt. File local.conf định nghĩa các dịch vụ sẽ chạy. Đừng dùng cấu hình mặc định vì nó sẽ cài quá nhiều thứ gây nặng máy.
Tạo file mới:
nano local.conf
Dán nội dung tối giản sau vào (nhớ đổi IP và mật khẩu):
[[local|localrc]]
ADMIN_PASSWORD=PassCuaBan123
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
# IP của máy Ubuntu của bạn
HOST_IP=192.168.1.50
# Chỉ cài các dịch vụ cốt lõi
enable_service rabbit mysql key glance horizon
enable_service n-api n-cpu n-cond n-sch n-novnc n-cauth
enable_service neutron q-svc q-agt q-dhcp q-l3 q-meta
enable_service cinder c-api c-vol c-sch
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
Bước 4: Thực thi script
Bây giờ hãy chạy lệnh cài đặt. Quá trình này thường mất 20-30 phút tùy vào tốc độ SSD và đường truyền internet của bạn.
./stack.sh
Lưu ý: Hãy dùng screen hoặc tmux để tránh việc mất kết nối SSH giữa chừng làm hỏng toàn bộ quá trình.
Kiểm tra kết quả
Khi hoàn tất, terminal sẽ hiển thị URL truy cập Dashboard. Thường là http://<IP-cua-ban>/dashboard.
- Username: admin
- Password: Mật khẩu bạn đã đặt trong file config.
Hãy thử tạo một Flavor (cấu hình phần cứng) và launch một instance CirrOS. Cảm giác tự vận hành một cụm Cloud ngay tại nhà thực sự rất phấn khích.
Kinh nghiệm “xương máu” khi dùng DevStack
Sau nhiều lần làm sập lab, đây là những gì mình rút ra:
1. Snapshot là cứu cánh
Luôn chụp Snapshot máy ảo Ubuntu ngay trước khi chạy ./stack.sh. DevStack can thiệp rất sâu vào iptables và bridge mạng. Nếu cài lỗi, việc dọn dẹp bằng ./unstack.sh thường không sạch hoàn toàn.
2. Lỗi hụt RAM
Nếu thấy service n-cpu báo lỗi “failed”, hãy check ngay dung lượng RAM trống. OpenStack sẽ tự động dừng dịch vụ nếu RAM khả dụng xuống dưới mức 500MB để tránh treo máy.
3. Quản lý qua CLI
Để dùng lệnh openstack trên terminal, bạn phải nạp biến môi trường trước:
source openrc admin admin
openstack compute service list
Tạm kết
DevStack là bước đệm hoàn hảo để bạn làm chủ kiến trúc Cloud Computing. Đừng quá lo lắng nếu gặp lỗi, vì đó là cơ hội tốt nhất để bạn đọc log trong /opt/stack/logs và hiểu sâu hơn về hệ thống. Nếu bạn từng vọc virt-manager theo các bài trước của mình, OpenStack chính là level tiếp theo để nâng tầm kỹ năng hạ tầng.

