kvm-web管理工具webvirtmgr

前言:

  使用開源的虛擬化技術,對公司自有的少數服務器進行虛擬化,在知足業務需求的同時,並未增長投入,同時也避免了使用雲主機的不便,技術層面,kvm是開源的虛擬化產品,虛擬化性能出衆,更重要的是免費!!!WebVirtMgr做爲kvm虛擬化的web管理工具,圖形化的WEB,讓人能更方便的查看kvm 宿主機的狀況和操做,使用kvm+webvirtmgr即可知足當前場景的業務需求,虛擬化的同時,也可以進行便捷的管理。採用純Python開發,其前端是基於Python的Django,後端是基於Libvirt的Python接口,將平常kvm的管理操做變的更加的可視化。

WebVirtMgr 介紹

    WebVirtMgr採用幾乎純Python開發,其前端是基於Python的Django,後端是基於Libvirt的Python接口,將平常kvm的管理操做變的更加的可視化。

WebVirtMgr 特色

  • 操做簡單,易於使用
  • 經過libvirt的API接口對kvm進行管理
  • 提供對虛擬機生命週期管理

WebVirtMgr 功能

宿主機管理支持如下功能

  • CPU利用率
  • 內存利用率
  • 網絡資源池管理
  • 存儲資源池管理
  • 虛擬機鏡像
  • 虛擬機克隆
  • 快照管理
  • 日誌管理
  • 虛機遷移

虛擬機管理支持如下功能

  • CPU利用率
  • 內存利用率
  • 光盤管理
  • 關/開/暫停虛擬機
  • 安裝虛擬機
  • VNC console鏈接
  • 建立快照
 

WebVirtMgr 管理工具安裝

一 webvirtmgr管理服務器配置

1 install  epel 源,git,gcc等軟件
sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
sudo yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
 
2 Install python requirements and setup Django environment
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
sudo pip install -r requirements.txt
./manage.py syncdb
./manage.py collectstatic    ---配置數據庫的帳號
 
建立一個超級用戶:
./manage.py createsuperuser   --配置webvirtmgr 登陸帳號
 
3 配置nginx
cd ..
sudo mv webvirtmgr /var/www/
 
在 /etc/nginx/conf.d/下 建立webvirtmgr.conf 文件:
 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 
    }
}
 
在nginx主配置文件中的http域內添加下面的配置
sudo vim /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
 
將default.conf重命名
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
 
重啓nginx:
sudo service nginx restart   或者    /etc/init.d/nginx restart
 
selinux 設置:
將selinux 關閉
setenforce 0
vim /etc/selinux/config 
SELINUX=disabled
 
或不關閉selinux但需添加下面的策略
/usr/sbin/setsebool httpd_can_network_connect true
4 配置 Supervisor 
sudo  chkconfig supervisord on
 
在/etc/supervisord.conf末尾加入下面的配置:
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
 
重啓supervisord
sudo service supervisord restart
 
--------到這裏webvirtmgr配置完成-----
 

二 webvirtmgr服務器(服務端)與kvm服務器(客服端)鏈接配置

1)webvirtmgr與kvm之間使用ssh方式鏈接管理
 
1 在webvirtmgr服務器(服務端)上:
 cd /home/
 mkdir nginx
 chown nginx.nginx nginx/
 chmod 700 nginx/ -R
 su - nginx -s /bin/bash
ssh-keygen   ---期間輸入yes後直接回車,回車
 touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config
 chmod 0600 ~/.ssh/config
 
2 在kvm(客服端)服務器上配置webvirt用戶
 useradd webvirtmgr
 echo "123456" | passwd --stdin webvirtmgr
groupadd libvirt
 usermod -G libvirt -a webvirtmgr
3 在webvirtmgr服務器(服務端)上,將ssh-key上傳到kvm服務器上
su - nginx -s /bin/bash
ssh-copy-id   webvirtmgr@192.168.0.23
 
4 在kvm(客服端)服務器上配置 libvirt ssh受權
 
vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access]
Identity=unix-user:webvirtmgr
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
 
chown -R webvirtmgr.webvirtmgr /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
 
重啓 libvirtd 服務
/etc/init.d/libvirtd restart
 
2)webvirtmgr與kvm之間使用tcp方式鏈接管理
1)Libvirtd服務監聽配置
修改/etc/sysconfig/libvirtd文件,去掉下面一行的註釋,使Libvirt服務處於監聽狀態:
vim /etc/sysconfig/libvirtd
LIBVIRTD_ARGS="--listen"
2)配置Libvirt服務
配置Libvirt服務,容許經過tcp方式通信,修改/etc/libvirt/libvirtd.conf:
#容許tcp監聽
listen_tcp = 1
#開放tcp端口
tcp_port = "16509"
#監聽地址修改成0.0.0.0
listen_addr = "0.0.0.0"
#配置tcp經過sasl認證
auth_tcp = sasl
#取消CA認證功能
listen_tls = 0
啓動服務:
service libvirtd start
3)建立libvirt管理用戶
saslpasswd2 -a libvirt admin

KVM WEB管理工具——WebVirtMgr(二)平常配置

  • 配置宿主機

 

一、登陸WebVirtMgr管理平臺,訪問地址http://webvirtmgrIP/loginhtml

 

f951a9b4069b480db4ea6388e7959ed22b1012f1

二、添加宿主機前端

選擇首頁的WebVirtMgr -->Addd Connectionpython

5918c21392de0e60c342af46071fa8550ef7ce95

選擇「SSH連接「,設置Label,IP,用戶linux

d0844822565fdb57dbc81077bf2ef6e57f741f10

注意:Label與IP要相同nginx

 

  • 虛機部署

一、建立存儲池git

點擊前面建立的宿主機,進入虛擬機部署界面github

62134d7afaba83aed84afd46218d5b7ddaf526c2

點擊「存儲池」按鈕,建立存儲池(即建立磁盤鏡像存放的位置)web

ad98027d11b779d503f77e06c977d888255ec32c

注意:docker

建立存儲池時,首先要在宿主機上建立一個目錄,而後在」路徑「設置欄中添加該目錄數據庫

例:mkdir /home/kvm/teststorage -p

3b57f2daa335645edc9d7b147d03101e08242ee7

二、添加磁盤鏡像

08d3266e22f904c2f2b0e6db5218c1c2b4581f5c

6132d3de58dbc877ce893ecfffbbe3346ad4aa42

建立完成後以下:

64eefbb05544cafd56f92aa56662d770f0a95ed5

三、宿主機網卡的橋接模式設置

b22734201cf02ae5f90c50be8b19e1233d6573bf

7880375ac42c5430291376dc997a0efa4158b3c8

 

四、建立網絡池

 

 

cb3f18e51edff607366029e04ab7074db00bd851

629afcb4a30a0c0add947750e1be493c78160cac

五、建立虛機

36fe0fdd12fd561b6a60b0db789102413953362b

選擇「custom install」用戶自定義建立虛機

2c755624ad15ebf8afb908ad0b9094ece6ad0a37

8fbdfe55c2c3730c9b24210d925ad567c78a0768

六、虛機掛載ISO鏡像

f8bbe303edca60b49c54138d5db70f029fba3939

七、啓動虛機

點擊「啓動」按鈕後,打開虛機電源。

bab24ea23c4c4f6cdb7d6e67ed56e2baa130a900

點擊控制檯按鈕,進入操做系統安裝界面

aa9fe4a62c2613c8a82484b2a241c03675a06205

eac0e68c0f46e99db38df4602c396fe72b8e84fe

八、虛機IP地址設置

當虛機安裝完成後,給虛機設置靜態IP地址

例:[root@vmtest01~]# vim  /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=static

IPADDR=172.16.1.199

NETMASK=255.255.255.0

GATEWAY=172.16.1.1

DNS1=172.16.1.1

 

 

 

  • webvirtmgr克隆虛機操做

 

一、關閉正在運行的虛機

d1e17f810a3daa6300f313234d2a354fbde90a42

 

 

二、進入虛機配置界面,在克隆配置項,爲新的虛機的「名字」,「MAC地址」,「磁盤鏡像」進行設置

2b0b765dfd5385c7d63a60d1907d282fb23ef4dd

 

 

三、啓動虛機,進入系統,對/etc/udev/rules.d/70-persistent-net.rules 文件作以下修改

c42608a1b32cbc16605da8c1a20b1e422401c8f5

修改後

dddb0a9518d68f30ab941bfd4eb7a36b6c7f7d34

 

四、編輯/etc/sysconfig/network-scripts/ifcfg-eth0 修改虛機的網卡配置,爲虛機分配新的IP地址

 

47098626f7218a8a6893e2da037d967a9ba8fa3e

 

五、重啓系統 使網卡從新註冊,讓配置生效

   reboot 

 

  • webvirtmgr虛機磁盤擴容(新增磁盤)

1 關閉虛機

2 對虛機的xml文件的disk域添加以下代碼

場景一:新增一塊磁盤

 <disk type='file' device='disk'>

      <driver name='qemu' type='qcow2' cache='none'/> ---添加改行代碼找到新增磁盤格式

      <source file='/home/kvm/teststorage/entd01.img'/>  --指定新增磁盤路徑

      <target dev='vda' bus='virtio'/>  --指定磁盤設備名稱,和傳輸總線類型

    </disk>

 

場景二:新增多塊磁盤

已新增兩塊盤爲例:

 <disk type='file' device='disk'>

      <driver name='qemu' type='qcow2' cache='none'/>

      <source file='/home/kvm/teststorage/entd01.img'/>

      <target dev='vda' bus='virtio'/>

    </disk>

    <disk type='file' device='disk'>

      <driver name='qemu' type='qcow2' cache='none'/>

      <source file='/home/kvm/vm/waq02-clone.qcow2'/>

      <target dev='vdb' bus='virtio'/>

    </disk>

3 啓動虛機,而後在虛機系統內部對磁盤進行格式化,分區等操做。

總結:

 

  • 建立虛擬機後,默認的主機名、IP地址還得在虛機控制檯設置,太麻煩,下一步嘗試使用gusetfs的命令行工具,編寫一個腳本對虛擬機的鏡像文件進行預處理以解決這個問題。
  • KVM集羣中虛擬機要作到實時遷移,必須配合集中存儲,並且須要在每一個物理機上將其配置爲存儲池。目前我所瞭解的廉價、可擴展性好的集中存儲方案有Ceph與Glusterfs,下一步須要對比這兩種方案,以找出最合適的方案
  • KVM集羣中的虛擬機若是所有采用靜態設置IP地址,管理查看虛機的IP地址將很麻煩;若是所有采用動態獲取IP地址,則須要在網絡內部安裝dhcp服務器,而後可在dhcp服務器上管理查看虛機的IP地址。很顯而後一種方案更合理一點,但這個還須要驗證
  • webvirtmgr並非像openstack同樣的虛擬化一站式解決方案,它的工做原理其中就是經過一個web頁面,將多臺物理機接入進來,而後經過libvirt分別管理每一個物理機上的計算資源。要建立虛擬機時,纔是管理員自行找到一個合適的物理,而後在上面建立虛擬機。那麼在KVM集羣環境,存儲已經經過Ceph或Glusterfs方案解決了,當要建立某個配置的虛擬機時,最好能有一個調度器,依據CPU、內存的需求,幫助管理員從衆多物理機中選取一個合適的物理機。簡單處理,也許能夠寫一個腳本,根據CPU、內存的需求自動得出一個物理機選取推薦列表,以供管理員參考
  • webvirtmgr所部署的主機需考慮高可用方案。簡單處理能夠將其作成docker鏡像,一旦發現該服務故障了,能夠快速地在其它地方啓動起來

 

 

 

信息參考:

http://www.javashuo.com/article/p-qkrcdhba-bc.html

https://blog.51cto.com/niubdada/1981760?tdsourcetag=s_pcqq_aiomsg

原文出處:https://www.cnblogs.com/xiaoyuxixi/p/11599301.html

相關文章
相關標籤/搜索