Skip to main content

银河麒麟高级服务器版V10+KVM+Libvirt+WebVirtCloud+OpenStack部署

非常好的选择 👍
您要实现的目标是:
银河麒麟高级服务器版V10(Kylin V10) 上,构建一个完整的虚拟化管理平台,包含:

  • KVM:提供虚拟化能力(基于CPU硬件虚拟化)

  • Libvirt:提供虚拟机管理接口

  • WebVirtCloud:提供Web管理界面

  • OpenStack(可选):提供私有云级别的资源调度与自服务管理

下面给出一份 详细、可直接执行的部署文档(生产可用),默认系统为 Kylin V10 x86_64 / aarch64,已启用 yum 或 dnf 源。


🚀 一、环境准备

1. 检查CPU是否支持虚拟化

egrep -c '(vmx|svm)' /proc/cpuinfo

返回值 > 0 表示支持。

2. 确保内核模块支持KVM

lsmod | grep kvm

若未加载,则手动加载:

modprobe kvm
modprobe kvm_intel   # Intel
modprobe kvm_amd     # AMD

3. 启用桥接网络(推荐虚拟机可直接联网)

创建网桥配置文件 /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.3.15
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=202.96.209.5
ONBOOT=yes

修改物理网卡(如 ifcfg-eno2):

DEVICE=ens33
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0

实际如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=eno2
UUID=5d9b10e9-49eb-4742-875a-0a6cbc268e9b
DEVICE=eno2
ONBOOT=yes
BRIDGE=br0
#IPADDR=192.168.3.15
#PREFIX=24
#GATEWAY=192.168.3.1
#DNS1=202.96.209.5

然后执行:

systemctl restart network
实际该命令无效,reboot或其他方法

🧩 二、安装KVM + Libvirt + QEMU

yum install -y qemu-kvm qemu-img virt-manager libvirt python3-libvirt libvirt-client bridge-utils virt-install

启用服务:

systemctl enable libvirtd --now
systemctl status libvirtd

验证:

virsh list --all

应能返回空虚拟机列表。


🌐 三、安装WebVirtCloud(Web管理界面)

1. 安装依赖

yum install -y wget git
wget http://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
yum localinstall -y epel-release-latest-8.noarch.rpm --skip-broken
yum clean all
yum makecache

yum install -y git python3 python3-pip nginx supervisor
安装报错的话要用清华源安装
mkdir -p ~/.pip
cat > ~/.pip/pip.conf <<'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
timeout = 6000
EOF
pip3 install supervisor
pip3 install --upgrade pip

2. 克隆WebVirtCloud源码

cd /opt
git clone https://github.com/retspen/webvirtcloud.git
cd webvirtcloud

如果git失败可调高缓冲区再下载
git config --global http.postBuffer 524288000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
git config --global core.compression 0

3. 安装Python依赖

yum install libvirt-devel gcc python3-devel openldap-devel

pip3 install -r conf/requirements.txt

4. 初始化数据库和配置

cp webvirtcloud/settings.py.template webvirtcloud/settings.py

python3 -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
#生成一串字符 c*&2pu%e=m7&r*^r*zp3p*wr!(8w3a$-l^rq@*w5#7ekrwmtpd
vi webvirtcloud/settings.py
#找到或添加 SECRET_KEY 配置)
SECRET_KEY = 'c*&2pu%e=m7&r*^r*zp3p*wr!(8w3a$-l^rq@*w5#7ekrwmtpd'

python3 manage.py migrate
python3 manage.py createsuperuser   # 创建管理员账号
#web登录用的账号密码
#账号  shuncom  邮箱:8108@shuncom.com  密码:sh_clighting

5. 启动测试

python3 manage.py runserver 0.0.0.0:8000

#如果报错换以下方法
# 安装 gunicorn(你已经安装了)
pip3 install gunicorn

# 启动 WebVirtCloud
gunicorn --workers 3 --bind 0.0.0.0:8000 webvirtcloud.wsgi:application

firewall-cmd --add-port=8000/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

访问 http://服务器IP:8000,使用创建的管理员账号登录。


⚙️ 四、配置Nginx反向代理(生产环境)

编辑 /etc/nginx/conf.d/webvirtcloud.conf

如果没安装:yum install -y nginx

server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

重启服务:

systemctl enable nginx --now

🧰 五、配置Supervisor守护WebVirtCloud

如果系统没有 /etc/supervisord.conf,可以创建:


sudo vi /etc/supervisord.conf 

内容示例:

[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件

[supervisord]
logfile=/var/log/supervisord.log
pidfile=/tmp/supervisord.pid
childlogdir=/var/log

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock

[include]
files = /etc/supervisord.d/*.ini

mkdir -p /etc/supervisord.d

vi /etc/supervisord.d/webvirtcloud.ini

[program:webvirtcloud]
command=/usr/bin/python3 /opt/webvirtcloud/manage.py runserver 0.0.0.0:8000
directory=/opt/webvirtcloud
autostart=true
autorestart=true
stderr_logfile=/var/log/webvirtcloud.err.log
stdout_logfile=/var/log/webvirtcloud.out.log
user=root

启用并启动:

systemctl enable supervisord --now

supervisorctl restart webvirtcloud

验证:

supervisorctl status

🖥 六、配置WebVirtCloud连接KVM主机

  1. 登录WebVirtCloud后台(http://<服务器IP>

  2. “Compute > Add Connection”

  3. 填写:

    • Label: KVM-Host

    • Hostname/IP: 127.0.0.1

    • Connection type: SSH

    • Login user: root 或管理用户

  4. 确保 root 用户可以无密码SSH到本机:

    ssh-keygen -t rsa
    ssh-copy-id root@127.0.0.1
    
  5. 连接成功后,即可在Web界面创建和管理虚拟机。


☁️ 七、(可选)安装 OpenStack 实现云平台管理

如果您需要将虚拟化扩展为“云平台”,可以部署轻量级 OpenStack All-in-One。

1. 安装 DevStack(快速体验)

cd /opt
git clone https://opendev.org/openstack/devstack
cd devstack

创建配置文件 local.conf

[[local|localrc]]
ADMIN_PASSWORD=admin
DATABASE_PASSWORD=admin
RABBIT_PASSWORD=admin
SERVICE_PASSWORD=admin
HOST_IP=192.168.1.100

启动安装:

./stack.sh

安装完成后访问:

http://192.168.1.100/dashboard

默认用户:admin 密码:admin


🧾 八、验证与维护

验证虚拟化运行状态

virsh list

查看libvirt网络和存储池

virsh net-list
virsh pool-list

检查服务状态

systemctl status libvirtd
systemctl status nginx
systemctl status supervisord

✅ 部署总结

模块 功能 服务端口 管理方式
KVM 提供虚拟化能力 - 命令行/Libvirt
Libvirt 虚拟机管理接口 16509 virsh/virt-manager
WebVirtCloud Web虚拟机管理 80/8000 浏览器
OpenStack 云计算管理平台 80/5000/8774 等 Web仪表盘 Horizon

🧭 建议实践路线

目标 推荐方案
轻量虚拟化环境 KVM + Virt-Manager
Web管理多节点 WebVirtCloud
构建私有云平台 OpenStack on KVM
高级调度与计费 OpenStack + Ceph

是否希望我为您输出一份 可直接在Kylin V10执行的 Shell 自动化安装脚本(含Nginx+WebVirtCloud+Libvirt 一键部署)
那样您可以直接运行即可完成全部环境配置。

你现在在 WebVirtCloud 创建虚拟机实例时,提示:

You haven't defined any storage pools

这是因为 Libvirt 还没有配置任何存储池,WebVirtCloud 依赖存储池来存放虚拟机磁盘镜像。


1️⃣ 查看现有存储池

在服务器上执行:

sudo virsh pool-list --all

输出可能类似:

 Name                 State      Autostart
------------------------------------------------
 default              inactive   no

如果没有存储池或状态为 inactive,就需要创建或激活。


2️⃣ 激活默认存储池(如果存在)

sudo virsh pool-start default
sudo virsh pool-autostart default

3️⃣ 创建新的存储池(如果没有)

假设你希望在 /var/lib/libvirt/images 存储虚拟机磁盘:

sudo mkdir -p /var/lib/libvirt/images

sudo virsh pool-define-as default dir - - - - "/var/lib/libvirt/images"
sudo virsh pool-build default
sudo virsh pool-start default
sudo virsh pool-autostart default

解释:

  • pool-define-as default dir ... "/var/lib/libvirt/images":定义一个目录类型存储池

  • pool-build:准备池

  • pool-start:启动池

  • pool-autostart:开机自动启动


4️⃣ 在 WebVirtCloud 刷新

  1. 登录 WebVirtCloud

  2. 打开 Host → Storage Pools

  3. 应该能看到你刚创建或激活的存储池

  4. 现在就可以创建虚拟机实例了


💡 小提示:

  • 存储池必须 可写,并且 WebVirtCloud 运行用户有权限访问

  • 通常使用 root 或者 libvirt 用户运行 WebVirtCloud


我可以帮你写一条 完整命令,一步创建可用的存储池,并保证开机自启,这样 WebVirtCloud 直接可用。

你希望我写吗?