zoukankan      html  css  js  c++  java
  • KVM Web管理平台 WebVirtMgr

    WebVirtMgr介绍

      WebVirtMgr是一个KVM管理平台,让kvm管理变得更为可视化,对中小型kvm应用场景带来了更多方便。WebVirtMgr采用几乎纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常kvm的管理操作变的更加的可视化。
    WebVirtMgr 特点
    操作简单,易于使用 、通过libvirt的API接口对kvm进行管理、提供对虚拟机生命周期管理
    WebVirtMgr 功能
    宿主机管理支持以下功能、CPU利用率、内存利用率、网络资源池管理、存储资源池管理、虚拟机镜像、虚拟机克隆、快照管理、日志管理、虚机迁移、虚拟机管理支持以下功能、CPU利用率、内存利用率、光盘管理、关/开/暂停虚拟机、安装虚拟机、VNC console连接、创建快照
     
    ##尽量参考官方文档##
     
    官方文档
     

    WebVirtMgr 管理工具安装

    本次安装是以centos7.4 为例
     

    一、安装前的部署

    安装一些依赖包
    yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx gcc python-devel wget vim net-tools lrzsz 
    1 安装pip
    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    pip -V  #查看pip版本
     
     
    pip install numpy
     
    2.安装python的需要包和配置Django环境
    git clone git://github.com/retspen/webvirtmgr.git
     
    3.安装nginx
    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    yum install nginx -y
     
     
    4.安装supervisor
     
    安装参考
    开机自启参考
     
    cat  /etc/supervisord.conf
    如果没有这个文件按照一下步骤安装
    有的话忽略此步骤
    pip install supervisor
    mkdir /etc/supervisord.d/
    echo_supervisord_conf > /etc/supervisord.conf
    sudo su - root -c "echo_supervisord_conf > /etc/supervisord.conf"
    新建文件夹
    vi /etc/supervisord.d/app.conf
    配置文件 app.conf
    内容为
    [program:appname]
    command=/root/soft/push.api
    directory=/root/soft/push.api
    autostart=true
    autorestart=true
    user=root
    stdout_logfile = /var/log/supervisor/pushapi.log
    stderr_logfile = /var/log/supervisor/pushapi-error.log
     
    修改 在配置文件最下方修改为
     vi  /etc/supervisord.conf
    [include]
    files = /etc/supervisord.d/*.ini
     
     
    supervisord -c /etc/supervisord.conf
    /usr/bin/supervisorctl start all
    /usr/bin/supervisorctl stop all
     

    二、安装环境

    cd webvirtmgr
    pip install -r requirements.txt 
    # or python-pip (RedHat, Fedora, CentOS, OpenSuse)
     
    ./manage.py syncdb
     
    1.创建用户
    输入以下用户信息
    You just installed Django's auth system, which means you don't have any superusers defined.
    Would you like to create one now? (yes/no): yes
    Username (leave blank to use 'root'): admin
    Email address: 275301281@qq.com
    Password: admin
    Password (again):admin 
    Superuser created successfully.
    Installing custom SQL ...
    Installing indexes ...
    Installed 6 object(s) from 1 fixture(s)
    ./manage.py collectstatic
    2.配置一个超级用户
    ./manage.py createsuperuser
     
    WARNING:root:No local_settings file found.
    Username (leave blank to use 'root'): yes
    Email address: 275301281@qq.com
    Password: Lenovo@123
    Password (again): Lenovo@123
    Superuser created successfully.
     
    3.设置nginx
    a、使用:8000端口
    (1)移动这个webvirtmgr目录到/var/www下
    cd  ..
    mv webvirtmgr /var/www/
    webvirtmgr 目录下还有一个名称为webvirtmgr 的文件夹
    不要单独移动 webvirtmgr/webvirtmgr 文件
    (2)编辑配置文件
    vi /etc/nginx/conf.d/webvirtmgr.conf
     
    server {
        listen 80 default_server;
     
        server_name $hostname;
        #access_log /var/log/nginx/webvirtmgr_access_log;
     
        location /static/ {
            root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var
            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; # Set higher depending on your needs 
        }
    }
     
     
    (3)启动nginx并设置开机自启动(如果不设置开机自启动,重启服务器supervisor无法管理Django进程),并开机自启动supervisord
    /etc/init.d/nginx start
    或者
    systemctl restart   nginx
    systemctl enable supervisord 
     
    分配权限
    chown nginx.nginx /var/www/webvirtmgr
     
     
    4.设置supervisor
     
    在/etc/supervisord.conf末尾加入下面的配置:
    vi /etc/supervisord.conf
     
     
    [program:webvirtmgr]
    command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
    directory=/var/www/webvirtmgr
    autostart=true
    autorestart=true
    logfile=/var/log/supervisor/webvirtmgr.log
    log_stderr=true
    user=nginx
     
    [program:webvirtmgr-console]
    command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
    directory=/var/www/webvirtmgr
    autostart=true
    autorestart=true
    #stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
    redirect_stderr=true
    user=nginx	
     
    进程无法启动或者报错 可以选择吧 log 注释取消
     
    5、重启supervisord
    开机自启参考
    设置完之后重启即可
    systemctl restart  supervisord.service
    systemctl enable  supervisord.service
    systemctl status   supervisord.service 
     
    6.更新
    cd /var/www/webvirtmgr
    git pull
     
     
    ./manage.py collectstatic
     
     
    systemctl  restart supervisord
     
    创建用户
     
    python -V
    Python 2.6.6
    由此可看出,系统默认的Python版本是2.6.6
    说明上面命令默认是python2.6执行的
    既然使用python2.6执行上面的命令报错,那就换用其他版本python2执行(如果当前是python3.3.0,那么就将下面的/usr/bin/python2换成/usr/bin/python2.6)
    /usr/bin/python2 manage.py syncdb //最终发现使用python2执行这个命令就不报错了
     
    ###########################################################################
    You just installed Django's auth system, which means you don't have any superusers defined.
    Would you like to create one now? (yes/no): yes
    Username (leave blank to use 'root'): admin
    Email address:
    Password:
    Password (again):
    ###########################################################################
    /usr/bin/python2 manage.py collectstatic //生成配置文件(同样使用python2版本执行,不要使用默认的python执行)
    ###########################################################################
    WARNING:root:No local_settings file found.
    You have requested to collect static files at the destination
    location as specified in your settings.
    This will overwrite existing files!
    Are you sure you want to do this?
    Type 'yes' to continue, or 'no' to cancel: yes
    ..........
    ###########################################################################
    /usr/bin/python2 manage.py createsuperuser //添加管理员账号(同样使用python2版本执行,不要使用默认的python执行)
    WARNING:root:No local_settings file found.
    Username: ops //这个是管理员账号,用上面的admin和这个管理员账号都可以登陆webvirtmgr的web界面管理平台
    Email address:
    Password:
    Password (again):
    Superuser created successfully.
     
    7、如果有错误或不运行
    (仅用于调试面板或显影)
     ./manage.py runserver 0:8000
    #或者后台运行脚本
    nohup python  /var/www/webvirtmgr/manage.py runserver 0:8000  >/dev/null &
    nohup python  /var/www/console/webvirtmgr-console   >/dev/null &
     
     
    访问:http://x.x.x.x:8000(x.x.x.x - your server IP address ),输入创建的用户和密码,如果没有创建,请用python manager.py createsuperuser,命令创建。登录后如下图所示
     
     
     
     
    8、配置虚拟机所在宿主机
    webvirtmgr客户端就这样搭建完了,接下来需要配置虚拟机所在宿主机的,参考git地址.
     
    配置宿主机
    配置宿主机环境:
    system: centos 7.4
     
    1.下载并执行脚本
    libvirt-bootstrap.sh
    如果虚拟机比较多,该脚本执行时间会比较长,因为会执行service libvirt-guests restart,会将所有运行的虚拟机挂起然后再恢复,感觉这一步不是必须的,因为我有一台只设置ssh认证,也可以正常连接。
     
    curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh
     
    或者用wget
    wget -O - http://retspen.github.io/libvirt-bootstrap.sh | sudo sh
     
    9、.配置防火墙
    iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT
     
    设置TCP授权
    webvirtmgr新建服务器连接时需要此账号
     
    (1)用saslpasswd2命令给libvirt的用户lenovo设置密码
    saslpasswd2 -a libvirt lenovo
    Password: xuewenlong
    Again (for verification): xuewenlong
    (2)生成一个密码库
    sasldblistusers2 -f /etc/libvirt/passwd.db
    lenovo@webvirtmgr.net: userPassword
     
    设置ssh授权
    ssh-keygen -t rsa             //产生公私钥
    直接回车,回车,回车
    ssh-copy-id 192.168.1.120
    /由于这里webvirtmgr和kvm服务部署在同一台机器,所以这里本地信任。如果kvm部署在其他机器,那么这个是其他它的ip 同时也要设置ssh key密钥
    提示输入密码的时候直接输入之前1.120的密码
    ssh 192.168.1.120 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080
     
    /*--原配置内容--------------/
    ssh-copy-id 1.1.1.1 ssh 1.1.1.1 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080
    /*--原配置内容--------------/
     
     
    其他kvm 主机加入已经部署的kvm web 操作
    之前的web管理
    在部署web管理的主机上执行命令
    ssh-keygen -t rsa
    然后在执行
    ssh-copy-id 192.168.1.165
     
    添加新的kvm宿主机
     
    查看新加的kvm宿主机状态 看有无报错
     
     
    删除新加的账号:
    sudo saslpasswd2 -a libvirt -d lenovo
     
    10.确认验证新加的账号配置
    virsh -c qemu+tcp://IP_address/system nodeinfo
    (virsh -c qemu+tcp://192.168.1.50/system nodeinfo)
    Please enter your authentication name: lenovo
    Please enter your password: xxxxxx
    CPU model:           x86_64
    CPU(s):              2
    CPU frequency:       2611 MHz
    CPU socket(s):       1
    Core(s) per socket:  2
    Thread(s) per core:  1
    NUMA cell(s):        1
    Memory size:         2019260 kB
    注意:账号全名带hostname,如lenovo@webvirtmgr.NET
    测试的时候这一步测试没有成功 但是可以链接
     
    11.设置ssh认证
    ssh和tcp设置一种即可,其实就是设置无密码登录,要注意的是从webvirtmgr的什么用户到宿主机的什么用户的无密码登录,比如我用root跑的django webvirtmgr,而宿主机也是root跑的virsh,所以需要设置root到root的无密码登录。而git官网推荐的是用nginx用户跑django webvirtmgr,webvirtmgr用户跑的virsh,所以设置的是nginx用户到宿主机webvirtmgr用户的无密码登录。
     
     
     
    12.使用tcp认证连接服务器
    访问:http://192.168.1.120:8000,xxxx是webvirtmgr的ip地址,点击new connection
     
    13.填写kvm宿主机的一些信息
    基础架构可以看到一些vm虚拟机
     
     
     
    网页控制台 远程链接报错1006
    安装vnc即可
    yum install -y novnc
    网页控制台 远程链接报错505
    切换到
    运行
    cd /var/www/console/
    ./webvirtmgr-console  &
     
    后台运行脚本
    nohup python  /var/www/webvirtmgr/manage.py runserver 0:8000  >/dev/null &
    nohup python  /var/www/console/webvirtmgr-console   >/dev/null &
     
  • 相关阅读:
    nohub
    swoole聊天室
    swoole httpserver学习
    swore tcp服务学习
    ps查看命令
    nginx和php-fpm调用方式
    Unix/Linux环境C编程入门教程(1) Solaris 11 64bit环境搭建
    Unix/Linux环境C编程入门教程(1) Solaris 11 64bit环境搭建
    C语言入门(4)——常量、变量与赋值
    C语言入门(3)——对Hello World程序的解释
  • 原文地址:https://www.cnblogs.com/xuewenlong/p/12881921.html
Copyright © 2011-2022 走看看