Blog

centos7+qemu-kvm+webvirtmgr搭建kvm管理平台(一)

     之前买了个7欧的vps,只有一个ip,想着弄个小鸡管理面板来开nat小鸡,因为之前用过Proxmox ve,所以首选方案是pve面板(参见《Proxmox ve创建虚拟机、设置NAT端口转发教程》:https://www.zmrbk.com/post-3245.html),但是这个面板在只有一个ip的情况下弄转发比较麻烦,虽然以前成功过,但这次按照教程来是活不成功,最后放弃了。后来又试了下esxi,这个操作起来不熟悉,折腾半天也没结果,后来在群友@Dane的推荐下试了kvm+webvirtmgr,并在其指导下避免走了很多坑,才有了这篇教程。

    本次测试基于centos x86_64,其实qemu-kvm是底层,webvirtmgr是控制面板,这两个可以互相分开的,只要建立一个管理通道连接就行了。首先说下kvm的安装,在母鸡上执行以下命令

1.安装kvm软件包、一些管理工具包,开启kvm服务,并且设置其开机自动启动

yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils novnc -y
systemctl start libvirtd
systemctl enable libvirtd  

2.准备 ISO 和 img 目录(后面会说到用处)

mkdir -p /home/kvm/img
mkdir -p /home/kvm/iso
cd /home/kvm/iso
wget http://mirrors.ircam.fr/pub/CentOS/7.3.1611/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso

3.kvm 服务器(客服端)配置与 webvirtmgr 服务器(服务端)连接

curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh

4.TCP 连接配置(https://github.com/retspen/webvirtmgr/wiki/Setup-TCP-Authorization)

sudo saslpasswd2 -a libvirt zmrbk.com                  // 添加用户和设置密码。
sudo sasldblistusers2 -f /etc/libvirt/passwd.db   // 查看用户
virsh -c qemu+tcp://127.0.0.1/system nodeinfo     // 验证设置

以上在母鸡上就把kvm设置好了,以下是安装webvirtmgr,可以和母鸡装在一起,也可以装在另外的vps上。

前提说明:webvirtmgr要依靠nginx来反代他的服务,群友dane是基于oneinstack来搭建nginx环境的,我是基于宝塔面板搭建的,代码会有少许差异,想少走弯路的可以按照教程环境来,以下是在装好oneinstack后的脚本设置。

安装 WebVirtMgr


# 安装 python 设置 Django 环境

sudo yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor
sudo yum -y install gcc python-devel
sudo pip install numpy
cd /data/wwwroot/
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
sudo pip install -r requirements.txt
./manage.py syncdb
./manage.py collectstatic

# 设置 Nginx

vim /usr/local/nginx/conf/nginx.conf

在server 段后追加

  server {
    listen 80; //80端口也可以改为其他端口,加强控制面板安全性
    server_name $hostname;

    location /static/ {
        root /data/wwwroot/webvirtmgr/webvirtmgr;
        expires max;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        client_max_body_size 1024M;
    }
  }
chown -R www.www /data/wwwroot/webvirtmgr
nginx -t
sudo service nginx restart

# 设置 Supervisor

vim /etc/supervisord.d/webvirtmgr.ini     //这句命令只适用于centos7.x,centos6.x的完全不一样,之前自己安装过程中遇到的坑之一
[program:webvirtmgr]
command=/usr/bin/python /data/wwwroot/webvirtmgr/manage.py run_gunicorn -c /data/wwwroot/webvirtmgr/conf/gunicorn.conf.py
directory=/data/wwwroot/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=www

[program:webvirtmgr-console]
command=/usr/bin/python /data/wwwroot/webvirtmgr/console/webvirtmgr-console
directory=/data/wwwroot/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=www
systemctl restart supervisord
systemctl enable supervisord

1 comment

  1. zhujiwiki

    这个实用

    沙发