Webvirtmgr簡介
一個Web圖形化管理並創建KVM虛擬機管理軟件,通過這個軟件可以更改的給用戶一個創建並管理虛擬機的頁面,比virt-manager友好許多,並可以通過Web頁面管理
實驗環境
主機名 | IP | 角色 |
---|---|---|
Webmgr | 192.168.1.14 | Webvirtmgr |
KVM | 192.168.1.15 | KVM虛擬化服務 |
Webmgr主機要安裝依賴包,必須聯網,並添加一塊30G磁盤,如何聯網我這裏就不說了。。。
KVM主機開啓虛擬化,內存給大一些
關閉所有主機selinux,並關閉防火牆 !!不然後面會有問題
如果你的虛擬機重啓了,需要重新執行一遍下面命令,不然會出問題
[root@webmgr ~]# systemctl stop firewalld
[root@webmgr ~]# setenforce 0
[root@kvm ~]# systemctl stop firewalld
[root@kvm ~]# setenforce 0
一.安裝並部署Webvirtmgr
下面所有操作,都在Webmgr主機執行
一定要連上網虛擬機
1)安裝依賴
不用刪掉原來的yum,光盤沒有就去網上找了
[root@webmgr ~]# mount /dev/cdrom /mnt/
[root@webmgr ~]# cd /root/
[root@webmgr ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@webmgr ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@webmgr ~]# yum install gcc python-devel openssl-devel -y
[root@webmgr ~]# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
#配一下pip的源,這個文件原來沒有
[root@webmgr ~]# mkdir ~/.pip/
[root@webmgr ~]# vim ~/.pip/pip.conf
[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
#手動安裝一下 numpy ,因爲centos7的python爲2.7版的,不是最新
[root@webmgr ~]# wget https://pypi.tuna.tsinghua.edu.cn/packages/c4/33/8ec8dcdb4ede5d453047bbdbd01916dbaccdb63e98bba60989718f5f0876/numpy-1.16.2-cp27-cp27mu-manylinux1_x86_64.whl#sha256=fb3c83554f39f48f3fa3123b9c24aecf681b1c289f9334f8215c1d3c8e2f6e5b
[root@webmgr ~]# pip install numpy-1.16.2-cp27-cp27mu-manylinux1_x86_64.whl
#導入模塊
[root@webmgr ~]# python
Python 2.7.5 (default, Aug 7 2019, 00:51:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> exit()
下面這個下的時候,可能會卡住,如果卡了,用我提供的百度雲,上傳到此目錄
鏈接:https://pan.baidu.com/s/1Qy149h_eMqIP_dQr_JMBjQ
提取碼:nln1
[root@webmgr ~]# git clone git://github.com/retspen/webvirtmgr.git
注意看下面圖片,輸出黃色字體不是報錯不影響
[root@webmgr ~]# cd webvirtmgr/
[root@webmgr webvirtmgr]# pip install -r requirements.txt
2)賬戶配置
登陸Webbvirtmgr用戶
這個是普通的用戶
[root@webmgr webvirtmgr]# ./manage.py syncdb
創建管理員用戶
也是登陸Webvirtmgr,權限更高
[root@webmgr webvirtmgr]# ./manage.py createsuperuser
方法和創建普通用戶一樣
3)nginx和supervisor
通過Web方式肯定需要網站服務
[root@webmgr webvirtmgr]# cd /root/
[root@webmgr ~]# mkdir /var/www
[root@webmgr ~]# cp -r webvirtmgr/ /var/www/
[root@webmgr ~]# chown -R nginx:nginx /var/www/
[root@webmgr ~]# cd /etc/nginx/
[root@webmgr nginx]# vim nginx.conf
把server 段整個都註釋掉,在前面加上#號即可,注意 { 也加上 如下
新寫一個配置文件,這個配置文件會被引用
[root@webmgr nginx]# vim /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
}
}
[root@webmgr nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@webmgr nginx]# nginx
supervisor
Supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓。
可以這麼理解,這個Webvirtmgr需要通過這個服務啓動
[root@webmgr ~]# vim /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
[root@webmgr ~]# systemctl start supervisord
[root@webmgr ~]# systemctl status supervisord
8000是Webvirtmgr網頁端口就是nginx映射的端口,6080端口是它的console控制檯端口,操控KVM主機用這個端口
[root@webmgr ~]# netstat -anpt | grep 8000
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 42587/python
[root@webmgr ~]# netstat -anpt | grep 6080
tcp 0 0 0.0.0.0:6080 0.0.0.0:* LISTEN 42586/python
http://192.168.1.14/login/
用那個上面創建的admin用戶,登陸就可以,和管理員用戶權限一樣
一開始是沒有連接的,我們一會去建立連接
4)NFS
一會可以把磁盤文件,通過nfs放到Webmgr主機上存儲(當然其它專門做存儲的主機也可以),在這個主機上做nfs存儲,一會KVM去掛載這個目錄
[root@webmgr ~]# mkfs.xfs /dev/sdb
[root@webmgr ~]# vim /etc/fstab
#添加一行
/dev/sdb /disk xfs defaults 0 0
[root@webmgr ~]# mount -a
[root@webmgr ~]# yum -y install nfs-utils
[root@webmgr ~]# vim /etc/exports
/disk *(rw,sync,no_root_squash)
[root@webmgr ~]# systemctl start rpcbind
[root@webmgr ~]# systemctl start nfs
#去kvm主機,看一下可以查看到嗎
[root@kvm ~]# mount /dev/cdrom /mnt/
[root@kvm ~]# yum -y install nfs-utils
[root@kvm ~]# showmount -e 192.168.1.14
Export list for 192.168.1.14:
/disk *
5)配置和KVM主機免密登陸
因爲Webvirtmgr通過nginx運行也就是運行用戶是nginx,就是說通過nginx用戶發送操作指令,所以需要nginx和KVM服務主機實現免密登陸
[root@webmgr ~]# su - nginx -s /bin/bash
-bash-4.2$ ssh-keygen -t rsa -P ''
#回車即可
-bash-4.2$ ssh-copy-id root@192.168.1.15
#輸入1.15主機的root密碼
-bash-4.2$ exit
二.配置KVM節點
以下操作都是是在KVM主機1.15上做的
1)KVM環境和網橋
[root@kvm ~]# mount /dev/cdrom /mnt/
[root@kvm ~]# yum -y install libvirt qemu-kvm virt-viewer -y
#做一下軟連接,不然後面虛擬機可能創建失敗
[root@kvm ~]# ln -s /usr/libexec/qemu-kvm /usr/local/bin/
#網絡配置
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=16dbf5aa-1642-4741-a8f6-7a59118ec4f1
DEVICE=ens33
#IPADDR=192.168.1.15
#PREFIX=24
ONBOOT=yes
BRIDGE="br0"
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=none
IPADDR=192.168.1.15
NETMASK=255.255.255.0
[root@kvm ~]# systemctl restart network
[root@kvm ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c296b329d no ens33
[root@kvm ~]# systemctl start libvirtd
2)存放鏡像的目錄並上傳鏡像
複製時間長,請等待,有了屏幕輸出纔可以
[root@kvm ~]# mkdir /iso
[root@kvm ~]# dd if=/dev/sr0 of=/iso/centos7.iso
記錄了8730624+0 的讀入
記錄了8730624+0 的寫出
4470079488字節(4.5 GB)已複製,297.252 秒,15.0 MB/秒
#創建掛載點存放磁盤文件,一會通過Webvirtmgr會自動掛載NFS
[root@kvm ~]# mkdir /kvmdisk
三.Webvirtmgr創建虛擬機
回到剛剛Webvirtmgr,或者重新登陸http://192.168.1.14/logs/
1)和KVM主機建立連接
2)創建網絡池
就是創建出來的虛擬機的網卡
先選擇最下面的網絡類型爲BRIDGE
,就會變成我下面界面,然後設置項
3)創建存儲池
創建兩個,一個是存放鏡像的,這個目錄需要提前存在,我們已經創建了
第二個是存放磁盤文件,通過nfs,會自動掛載到KVM主機
此時到KVM服務主機上,nfs已經自動掛載
[root@kvm iso]# df -hT | grep kvmdisk
192.168.1.14:/disk nfs4 30G 36M 30G 1% /kvmdisk
虛擬機磁盤文件創建
然後再次點擊添加就可以選擇格式了,我們不進行創建選擇關閉,如下
3)創建虛擬機
有的時候點擊虛擬機實例會報錯,直接最點擊右上角的這個按鈕也可以創建
把鏡像加上,纔可以
開機並查看
打開控制檯查看情況
安裝即可
這裏不存在virt-manager默認鍵盤不可以用的問題,可以說是非常強大了這個管理工具
然後安裝的時候會這樣,這個是磁盤檢查,但是因爲虛擬環境中磁盤環境有些問題,這個很好解決
只要跳過這個磁盤檢查就可以了
再打開控制檯,到這一步checking的時候在它報錯之前趕快直接按鍵盤左上角的esc
跳過磁盤檢查即可
正常安裝即可如下