当前位置: 首页 > 工具软件 > WebVirtMgr > 使用案例 >

手动部署webvirtmgr

万坚壁
2023-12-01

 

博客已迁移,新博客地址:https://www.wxtechblog.com

 

一、测试环境配置说明

  • webvirtmgr所在主机安装centos 7.4(官方镜像安装桌面版)
  • 虚拟机所在主机安装centos 7.4(官方桌面版镜像以minimal方式安装)

二、搭建虚拟机的宿主机

(一)安装相关软件 

yum install -y qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils cyrus-sasl-md5

(二)配置libvirt(以qemu+tcp方式访问libvirt)

1、编辑文件/etc/sysconfig/libvirtd,修改相关项如下所示

LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

2、编辑文件/etc/libvirt/libvirtd.conf,修改相关项如下所示

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "sasl"

3、创建远程连接libvirtd的账户

注:USER是自定义的用户名

saslpasswd2 -a libvirt USER -f /etc/libvirt/passwd.db

4、查看用户是否创建成功

注:USER是自定义的用户名

sasldblistusers2 -f /etc/libvirt/passwd.db

5、编辑文件/etc/sasl2/libvirt.conf,将相关项修改为如下值

mech_list: digest-md5
sasldb_path: /etc/libvirt/passwd.db

6、重启libvirtd服务

service libvirtd restart

7、配置防火墙

(1)查看相关网卡所属区域

firewall-cmd --get-active-zones

(2)修改相关区域防火墙规则

  • 注:nic_zone表示网卡所属区域。依次打开的是libvirtd,vnc,novnc的端口
firewall-cmd --zone={nic_zone} --add-port 16509/tcp --permanent
firewall-cmd --zone={nic_zone} --add-port=5900-6000/tcp --permanent
firewall-cmd --zone={nic_zone} --add-port=6080/tcp --permanent

示例:

firewall-cmd --zone=public --add-port 16509/tcp --permanent
firewall-cmd --zone=public --add-port=5900-6000/tcp --permanent
firewall-cmd --zone=public --add-port=6080/tcp --permanent

(3)重新加载防火墙

firewall-cmd --reload

8、在另外一台机器上确认是否能访问libvirtd服务(需输入saslpasswd2创建的用户及密码)

virsh -c qemu+tcp://{libvirt_host_ip}/system nodeinfo

(三)物理主机上建立网桥 

1、关闭NetworkManager

service NetworkManager stop
systemctl disable NetworkManager

2、新建文件/etc/sysconfig/network-scripts/ifcfg-br,写入以下内容

注:根据环境配置ip等变量

DEVICE="br"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
ZONE=public
IPADDR=XXX.XXX.XXX.XXX
NETMASK=YYY.YYY.YYY.YYY
GATEWAY=ZZZ.ZZZ.ZZZ.ZZZ

示例:

DEVICE="br"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
ZONE=public
IPADDR=10.0.112.39
NETMASK=255.255.255.0
GATEWAY=10.0.112.1

3、修改物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,注释原内容,加入如下内容 

  • 注:请根据实际情况修改对应的网卡配置文件(有可能不是ifcfg_eth0),并将变量DEVICE和NAME修改为对应值
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE=Ethernet
BOOTPROTO=none
BRIDGE="br"
NAME="eth0"
ZONE=public

4、重启网络

service network restart

三、搭建webvirtmgr所在主机

(一)安装软件包 

yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
yum -y install gcc python-devel
pip install numpy

(二)下载webvirtmgr

下载地址:https://github.com/retspen/webvirtmgr/releases

使用的webvirtmgr版本号是v4.8.9

wget -c https://github.com/retspen/webvirtmgr/releases/download/v4.8.9/webvirtmgr.tar.gz

(三)安装webvirtmgr

mkdir -p /data/wwwroot/
tar zxvf webvirtmgr.tar.gz -C /data/wwwroot
cd /data/wwwroot/webvirtmgr/
pip install -r requirements.txt

(四)创建webvirtmgr登录用户名及密码

cd /data/wwwroot/webvirtmgr/
./manage.py syncdb

(五)配置Django运行环境 

cd /data/wwwroot/webvirtmgr/
./manage.py collectstatic

(六)配置Nginx

1、编辑文件/etc/nginx/nginx.conf

在server段后追加下述内容,将原server段内容注释掉

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

    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;
    }   
} 

2、启动nginx 

(1)测试nginx配置文件是否正确

nginx -t

(2)启动nginx

chown -R nginx:nginx /data/wwwroot/webvirtmgr/
systemctl enable nginx
service nginx restart

(七)配置Supervisor

1、创建文件/etc/supervisord.d/webvirtmgr.ini,写入以下内容

[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=nginx 
 
[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=nginx 

2、启动supervisord服务

systemctl enable supervisord
service supervisord restart

(八)打开防火墙

1、查看相关网卡所在区域 

firewall-cmd --get-active-zones

2、打开nginx端口

注:zone是网卡所在区域,80是nginx配置文件中的端口 

firewall-cmd --zone={zone} --add-port 80/tcp --permanent
firewall-cmd --reload

示例:

firewall-cmd --zone=public --add-port 80/tcp --permanent
firewall-cmd --reload

(九)关闭selinux

1、编辑文件/etc/selinux/config,将相关内容配置为如下

SELINUX=disabled

2、重启机器,重启后在浏览器中以下述地址访问即可

注:ip为webvirtmgr所在主机ip

{ip}:80

{ip}

四、webvirtmgr连接虚拟机的宿主机

 登录webvirtmgr后,点击右上角的“Add Connection”按钮,在弹出页面中选择“TCP 连接”,填写好相关信息后即可加入前面配置好的宿主机。

注1:“用户名”和“密码”是前面使用saslpasswd2创建的用户名和密码。

注2:在连接ceph存储时,由于centos7.4的libvirt版本不支持secret,需要修改webvirtmgr的源码。

 类似资料: