文章版权归本人所有,未经同意,请勿转载!
-
测试环境配置说明
-
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)
-
编辑文件/etc/sysconfig/libvirtd,修改相关项如下所示
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen" -
编辑文件/etc/libvirt/libvirtd.conf,修改相关项如下所示
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "sasl" -
创建远程连接libvirtd的账户
注:USER是自定义的用户名
saslpasswd2 -a libvirt USER -f /etc/libvirt/passwd.db
-
查看用户是否创建成功
注:USER是自定义的用户名
sasldblistusers2 -f /etc/libvirt/passwd.db
-
编辑文件/etc/sasl2/libvirt.conf,将相关项修改为如下值
mech_list: digest-md5
sasldb_path: /etc/libvirt/passwd.db -
重启libvirtd服务
service libvirtd restart
-
配置防火墙
-
查看相关网卡所属区域
firewall-cmd --get-active-zones
-
修改相关区域防火墙规则
注: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 -
重新加载防火墙
firewall-cmd --reload
-
-
在另外一台机器上确认是否能访问libvirtd服务(需输入saslpasswd2创建的用户及密码)
virsh -c qemu+tcp://{libvirt_host_ip}/system nodeinfo
-
-
物理主机上建立网桥
-
关闭NetworkManager
service NetworkManager stop
systemctl disable NetworkManager -
新建文件/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 -
修改物理网卡配置文件/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 -
重启网络
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.9wget -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
-
编辑文件/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;
}
} -
启动nginx
-
测试nginx配置文件是否正确
nginx -t
-
启动nginx
chown -R nginx:nginx /data/wwwroot/webvirtmgr/
systemctl enable nginx
service nginx restart
-
-
-
配置Supervisor
-
创建文件/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 -
启动supervisord服务
systemctl enable supervisord
service supervisord restart
-
-
打开防火墙
-
查看相关网卡所在区域
firewall-cmd --get-active-zones
-
打开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
-
编辑文件/etc/selinux/config,将相关内容配置为如下
SELINUX=disabled
-
重启机器,重启后在浏览器中以下述地址访问即可
注:ip为webvirtmgr所在主机ip
{ip}:80
或:
{ip}
-
-
-
webvirtmgr连接虚拟机的宿主机
登录webvirtmgr后,点击右上角的“Add Connection”按钮,在弹出页面中选择“TCP 连接”,填写好相关信息后即可加入前面配置好的宿主机。
注1:“用户名”和“密码”是前面使用saslpasswd2创建的用户名和密码。
注2:在连接ceph存储时,由于centos7.4的libvirt版本不支持secret,需要修改webvirtmgr的源码。