kvm虛擬化管理平臺WebVirtMgr部署-完整記錄(1)

散盡浮華發表於2016-08-04

 

公司機房有一臺2U的伺服器(64G記憶體,32核),由於近期新增業務比較多,測試機也要新增,伺服器資源十分有限。所以打算在這臺2U伺服器上部署kvm虛擬化,虛出多臺VM出來,以應對新的測試需求。
當KVM宿主機越來越多,需要對宿主機的狀態進行調控,決定採用WebVirtMgr作為kvm虛擬化的web管理工具,圖形化的WEB,讓人能更方便的檢視kvm 宿主機的情況和操作
WebVirtMgr是近兩年來發展較快,比較活躍,非常清新的一個KVM管理平臺,提供對宿主機和虛機的統一管理,它有別於kvm自帶的圖形管理工具(virtual machine manager),讓kvm管理變得更為視覺化,對中小型kvm應用場景帶來了更多方便。
WebVirtMgr採用幾乎純Python開發,其前端是基於Python的Django,後端是基於Libvirt的Python介面,將日常kvm的管理操作變的更加的視覺化。

WebVirtMgr特點
操作簡單,易於使用
通過libvirt的API介面對kvm進行管理
提供對虛擬機器生命週期管理
WebVirtMgr 功能

宿主機管理支援以下功能
CPU利用率
記憶體利用率
網路資源池管理
儲存資源池管理
虛擬機器映象
虛擬機器克隆
快照管理
日誌管理
虛機遷移

虛擬機器管理支援以下功能
CPU利用率
記憶體利用率
光碟管理
關/開/暫停虛擬機器
安裝虛擬機器
VNC console連線
建立快照

下面對部署過程進行記錄,希望能幫助到有用到的朋友們。
這裡我將webvirtmgr伺服器和kvm伺服器放在同一臺機器上部署的,即單機部署
系統:Centos 6.8
記憶體:64G
CPU:32核
ip:192.168.1.17(內網),111.101.186.163(外網)

一、首先要安裝KVM虛擬化環境,參考下面的一篇部落格進行安裝:

kvm虛擬化管理平臺WebVirtMgr部署-虛擬化環境安裝-完整記錄(0)

二、Kvm的管理工具webvirtmgr安裝和使用

1)安裝支援的軟體源
[root@openstack ops]#yum -y install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

2)安裝相關軟體
---------------------------------------------------------------------------------------------------------------------
如果報錯說沒有下面安裝的某些軟體,則下載http://pan.baidu.com/s/1bX3vkE (密碼:6ucs)
將下載的yum.tar.gz解壓後的檔案替換到/etc/yum.repos.d目錄下,然後執行yum clean all && yum makecache
---------------------------------------------------------------------------------------------------------------------
[root@openstack ops]#yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx       (若是centos7系統,需要先執行"yum -y install epel-release")

3)從git-hub中下載相關的webvirtmgr程式碼
[root@openstack ops]# cd /usr/local/src/
[root@openstack src]# git clone git://github.com/retspen/webvirtmgr.git    (下載地址:https://pan.baidu.com/s/1pLS3kCj      獲取密碼:8efm

4)安裝webvirtmgr
[root@openstack src]# cd webvirtmgr/
[root@openstack webvirtmgr]# pip install -r requirements.txt

5)安裝資料庫
[root@openstack webvirtmgr]# yum install python-sqlite2          //預設情況下,centos系統一般會自帶sqlite軟體(執行sqlite3 命令,不報錯就說明已經安裝了)

6)對django進行環境配置
[root@openstack webvirtmgr]#pwd
/usr/local/src/webvirtmgr
[root@openstack webvirtmgr]#./manage.py syncdb           //預設是python執行,如下報錯,換用其他版本的python
-------------------------------------------------- ---------------------------- 
注意此處用預設的python執行上面命令,一般會報錯,如下:
ImportError: No module named django.core.management

這個一般是由於python版本引起的,因為系統自帶有好幾個版本的python
[root@openstack webvirtmgr]# python       //按Tab鍵自查詢
python python2.6
python2 python2.6-config python-config
[root@openstack webvirtmgr]# 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)
[root@openstack webvirtmgr]# /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: wangshibo@163.com
Password:*********
Password (again):*********
--------------------- --------------------- --------------------- --------------------- 
[root@openstack webvirtmgr]#/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
..........
..........

[root@openstack webvirtmgr]#/usr/bin/python2 manage.py createsuperuser  //新增管理員賬號(同樣使用python2版本執行,不要使用預設的python執行)
WARNING:root:No local_settings file found.
Username: ops                                                   //這個是管理員賬號,用上面的admin和這個管理員賬號都可以登陸webvirtmgr的web介面管理平臺
Email address: wangshibo@163.com
Password:
Password (again):
Superuser created successfully.

7)拷貝web到 相關目錄
[root@openstack ops]# mkdir -pv /var/www
[root@openstack ops]# cp -Rv /usr/local/src/webvirtmgr /var/www/webvirtmgr

8)設定ssh
[root@openstack ops]# ssh-keygen -t rsa             //產生公私鑰
[root@openstack ops]# ssh-copy-id 192.168.1.17        //由於這裡webvirtmgr和kvm服務部署在同一臺機器,所以這裡本地信任。如果kvm部署在其他機器,那麼這個是它的ip
[root@openstack ops]# ssh 192.168.1.17 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:60

9)編輯nginx配置檔案
提前確保/etc/nginx/nginx.conf檔案裡開啟了“include /etc/nginx/conf.d/*.conf;”

[root@openstack ops]#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 $remote_addr;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
client_max_body_size 1024M; # Set higher depending on your needs
}
}

[root@openstack ops]# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

10)啟動nginx
[root@openstack ops]#/ etc/init.d/nginx restart

11)修改防火牆規則
[root@ops ~]# vim /etc/sysconfig/selinux
......
SELINUX=disabled

[root@ops ~]# setenforce 0
setenforce: SELinux is disabled
[root@ops ~]# getenforce
Disabled

[root@openstack ops]#/usr/sbin/setsebool httpd_can_network_connect true

12)設定 supervisor (如果iptables防火牆開啟的話,就必須要開通80、8000、6080埠訪問)
[root@openstack ops]# chown -R nginx:nginx /var/www/webvirtmgr

[root@openstack ops]# vim /etc/supervisord.conf     //在檔案末尾新增,注意將預設的python改為python2,因為上面只有用這個版本執行才不報錯!
[program:webvirtmgr]
command=/usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py                     //啟動8000埠
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/python2 /var/www/webvirtmgr/console/webvirtmgr-console                               //啟動6080埠(這是控制檯vnc埠)
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx
[root@openstack ops]#vim /var/www/webvirtmgr/conf/gunicorn.conf.py    //確保下面bind繫結的是本機的8000埠,這個在nginx配置中定義了,被代理的埠
bind = '127.0.0.1:8000'
13)設定開機啟動
[root@openstack ops]#chkconfig supervisord on
[root@openstack ops]#vim /etc/rc.local
/usr/sbin/setsebool httpd_can_network_connect true

14)啟動程式
[root@openstack ops]#/etc/init.d/supervisord restart
15)檢視程式
[root@openstack ops]#netstat -lnpt    //即可以看到6080和8000已經啟動
[root@openstack ops]# lsof -i:6080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python2 53476 nginx 3u IPv4 364124 0t0 TCP *:6080 (LISTEN)
[root@openstack ops]#lsof -i:8000

------------------------------------------------------------------------------
一般來說,只要上面的supervisord服務啟動了,8000和6080埠就起來了。
因為在/etc/supervisord.conf檔案裡配置了這兩個埠的啟動設定

如果supervisord服務啟動了,8000和6080埠還是沒起來!
那麼就需要手動啟動/etc/supervisord.conf檔案裡配置的這兩個埠的啟動命令,即:
[root@openstack ops]# /usr/bin/python2 /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py       //這個命令會一直在操作
[root@openstack ops]# /usr/bin/python2 /var/www/webvirtmgr/console/webvirtmgr-console                        //這個命令會一直在操作
[root@openstack ops]# /etc/init.d/supervisord restart
[root@openstack ops]# lsof -i:8000
[root@openstack ops]# lsof -i:6080
------------------------------------------------------------------------------

16)web訪問
http://111.101.186.163/login/

這裡用超級管理員登陸,只有超級管理員登陸後才能看到“基礎構架”視窗

普通使用者登陸後,只能看到“WebVirtMgr”一個視窗

 

選擇“SSH連結“,設定Label,IP,使用者

注意:Label與IP要相同

開啟後,有報錯!看來在上面使用ssh連線的配置環節有誤所致!

解決措施:

1)在webvirtmgr伺服器(服務端)上(這裡kvm和WebVirtMgr部署在同一臺機器上)建立nginx使用者家目錄(預設nginx服務安裝時是沒有nginx家目錄的),生成nginx的公私鑰
[root@openstack ops]# cd /home/
[root@openstack home]# mkdir nginx
[root@openstack home]# chown nginx.nginx nginx/
[root@openstack home]# chmod 700 nginx/ -R
[root@openstack home]# su - nginx -s /bin/bash
-bash-4.1$ ssh-keygen                             #期間輸入yes後直接回車,回車
-bash-4.1$ touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config
-bash-4.1$ chmod 0600 ~/.ssh/config

2)在kvm(客服端)伺服器上(這裡kvm和WebVirtMgr部署在同一臺機器上)配置使用者,這裡預設採用root使用者
---------------------------------------------------------------------------------------------------------------------
如果採用其他使用者,比如webvirtmgr,操作如下:
[root@openstack ops]#useradd webvirtmgr
[root@openstack ops]#echo "123456" | passwd --stdin webvirtmgr
[root@openstack ops]#groupadd libvirt
[root@openstack ops]#usermod -G libvirt -a webvirtmgr
---------------------------------------------------------------------------------------------------------------------

3)在webvirtmgr伺服器(服務端)上(這裡kvm和WebVirtMgr部署在同一臺機器上),將nginx使用者的ssh-key上傳到kvm伺服器上(這裡kvm和WebVirtMgr部署在同一臺機器上)
[root@openstack ops]# su - nginx -s /bin/bash
-bash-4.1$ ssh-copy-id root@192.168.1.17
Warning: Permanently added '192.168.1.17' (RSA) to the list of known hosts.
root@192.168.1.17's password: #輸入192.168.1.17即本機的root賬號
Now try logging into the machine, with "ssh 'root@192.168.1.17'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
---------------------------------------------------------------------------------------------------------------------
這裡採用的是root使用者,如果採用其他使用者,比如上面假設的webvirtmgr使用者,操作如下:
[root@openstack ops]#su - nginx -s /bin/bash
-bash-4.1$ssh-copy-id webvirtmgr@192.168.0.23
---------------------------------------------------------------------------------------------------------------------

4)在kvm(客服端)伺服器上(這裡kvm和WebVirtMgr部署在同一臺機器上)配置 libvirt ssh授權
[root@openstack ops]# vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access]
Identity=unix-user:root #注意這裡採用的是root使用者
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

[root@openstack ops]# chown -R root.root /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
-------------------------------------------------------------------------------------------------------------------------------
這裡採用的是root使用者,如果採用其他使用者,比如上面假設的webvirtmgr使用者,操作如下:
[root@openstack ops]#vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access]
Identity=unix-user:webvirtmgr #這裡就設定webvirtmgr使用者
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

[root@openstack ops]#chown -R webvirtmgr.webvirtmgr /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
--------------------------------------------------------------------------------------------------------------------------------

5)重啟 libvirtd 服務
/etc/init.d/libvirtd restart

這樣上面報錯的問題就迎仍而解了!

然後重新ssh方式連線就ok了,就不會有上面那個報錯了~

但是,又出現了其他報錯(如下)!尼瑪~~  接續排查!

解決措施:

 在WebVirtMgr伺服器本地使用ssh方式連線,在終端命令列裡:

[root@openstack .ssh]# virsh -c qemu+ssh://103.10.86.17/system list
The authenticity of host '103.10.86.17 (103.10.86.17)' can't be established.
RSA key fingerprint is 3d:c1:2e:70:e9:e5:1d:84:40:a2:63:82:af:e5:cc:cd.
Are you sure you want to continue connecting (yes/no)? yes
error: End of file while reading data: Warning: Permanently added '103.10.86.17' (RSA) to the list of known hosts.: Input/output error
error: failed to connect to the hypervisor

看日誌 tail /var/log/secure | grep sshd 發現是我這裡主動發出斷開的.有可能檢測到libvirtd有些問題導致的。
當時使用virt-manage可以查詢到遠端的資訊.估計是sshd出現的問題把.

折騰一會,暫時沒找到解決方案

決定先選用通過tcp協議進行遷移的(但是這種方式沒有用ssh連線方式安全——)
等後面有時間了,再想辦法解決上面ssh方式連線的錯誤吧


使用tcp進行對遠端libvirtd進行連線訪問的配置如下:

1)修改檔案/etc/sysconfig/libvirtd,用來啟用tcp的埠
[root@openstack ops]# cat /etc/sysconfig/libvirtd
........
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

2)修改檔案/etc/libvirt/libvirtd.conf
[root@openstack ops]#vim /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"

3)執行 libvirtd
[root@openstack ops]#service libvirtd restart

如果沒起效果(我的就沒有生效,那麼使用命令列.如果生效了,執行下面命令就會報錯
[root@openstack ops]#libvirtd --daemon --listen --config /etc/libvirt/libvirtd.conf

4)檢視執行程式
[root@openstack ops]# ps aux | grep libvirtd
root 16563 1.5 0.1 925880 7056 ? Sl 16:01 0:28 libvirtd -d -l --config /etc/libvirt/libvirtd.conf

5)檢視埠
[root@openstack ops]# lsof -i:16509

6)在source host連線dest host遠端libvirtd檢視資訊(也可以用公網ip)
[root@openstack ops]# virsh -c qemu+tcp://192.168.1.17/system
Welcome to virsh, the virtualization interactive terminal.

Type: 'help' for help with commands
'quit' to quit

virsh #

成功使用tcp去訪問libvirtd。

注意:

在使用tcp方式連線後,會出現連線終端的情況!

[root@openstack .ssh]# virsh -c qemu+tcp://192.168.1.17/system
error: Cannot recv data: Connection reset by peer
error: failed to connect to the hypervisor

連線斷開,重新連線便可。

[root@openstack ops]# ps aux | grep libvirtd
root 59619 0.6 0.0 1008128 22048 ? Sl 19:17 0:06 libvirtd --daemon --config /etc/libvirt/libvirtd.conf --listen
root 61081 0.0 0.0 103316 1004 pts/2 S+ 19:33 0:00 grep --color libvirtd
[root@openstack ops]# kill -9 59619
[root@openstack ops]# ps aux | grep libvirtd
root 61083 0.0 0.0 103312 904 pts/2 S+ 19:33 0:00 grep --color libvirtd
[root@openstack ops]# libvirtd --daemon --listen --config /etc/libvirt/libvirtd.conf
[root@openstack ops]# ps aux | grep libvirtd
root 61086 13.5 0.0 418240 6576 ? Sl 19:33 0:00 libvirtd --daemon --listen --config /etc/libvirt/libvirtd.conf
root 61176 0.0 0.0 103312 908 pts/2 S+ 19:33 0:00 grep --color libvirtd
[root@openstack ops]# virsh -c qemu+tcp://192.168.1.17/system
Welcome to virsh, the virtualization interactive terminal.

Type: 'help' for help with commands
'quit' to quit

virsh #

後續發現,webvirtmgr連上後,過一會兒就會斷開!

針對這個情況,可以可以寫個定時指令碼,如下:

[root@openstack ops]# cat /usr/local/src/libvirtd.sh

#!/bin/bash
ps -ef | grep "libvirtd --daemon --listen"|grep -v grep|awk -F" " '{print $2}'|xargs kill -9
/usr/sbin/libvirtd --daemon --listen --config /etc/libvirt/libvirtd.conf

[root@openstack ops]# crontab -l
* * * * * /bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 10;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 20;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 30;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 40;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 50;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1

*********************************************************************************

一般如上配置後,webvirtmgr裡的控制檯是可以正常連線虛擬機器的。

但如果webvirtmgr裡通過控制檯頁面(vnc)連線虛擬機器失敗,可以按照下面的操作方法嘗試解決:

kvm原來的安裝方式是客戶端需要安裝vncviewer,才能看到安裝頁面,而webvirtmgr使用了novnc,頁面通過websocket進行通訊。

1)首先需要安裝novnc
[root@openstack ops]# yum install -y novnc

2)防火牆開啟vnc的6080埠
[root@openstack ops]# vim /etc/sysconfig/iptables
.......
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6080 -j ACCEPT
.......

[root@openstack ops]# /etc/init.d/iptables restart

3)由上面可知,webvirtmgr程式通過supervisor管理。這裡需要重啟supervisor程式
[root@openstack ops]# /etc/init.d/supervisord restart

這樣,再次開啟Webvirtmgr的控制檯,發現就能連上虛擬機器了!

******************
可以在webvirtmgr伺服器上通過命令列嘗試下連線:
[root@openstack ops]# novnc_server --help
Usage: novnc_server [--listen PORT] [--vnc VNC_HOST:PORT] [--cert CERT]

Starts the WebSockets proxy and a mini-webserver and
provides a cut-and-paste URL to go to.

--listen PORT Port for proxy/webserver to listen on
Default: 6080
--vnc VNC_HOST:PORT VNC server host:port proxy target
Default: localhost:5900
--cert CERT Path to combined cert/key file
Default: self.pem
--web WEB Path to web files (e.g. vnc.html)
Default: ./

[root@openstack ops]# novnc_server --listen 192.168.1.17:6086           #埠在6080後的都可以用
Warning: could not find self.pem
Starting webserver and WebSockets proxy on port 192.168.1.17:6086
WARNING: no 'numpy' module, HyBi protocol will be slower
WebSocket server settings:
- Listen on 192.168.1.17:6086
- Flash security policy server
- Web server. Web root: /usr/share/novnc
- No SSL/TLS support (no cert file)
- proxying from 192.168.1.17:6086 to localhost:5900


Navigate to this URL:

http://kvm-server:192.168.1.17:6086/vnc.html?host=kvm-server&port=192.168.1.17:6086

Press Ctrl-C to exit

===============================================
上面介紹的是WebVirtMgr和KVM部署在一臺機器上,下面再記錄下新增其他KVM宿主機(比如192.168.1.50)的方法

1)在192.168.1.50機器上配置虛擬化及網橋環境
參考:https://www.cnblogs.com/kevingrace/p/5737487.html
 
2)手動建立下面檔案並配置SSH連線(如果採用tcp方式連線,其實這一步就不用配置了)
[root@kvm02 ~]# vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access]
Identity=unix-user:root
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
[root@kvm02 ~]# chown -R root.root /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
 
3)在WebVirtMgr部署機(上面的192.168.1.17 )上執行:
[root@openstack ops]# ssh-copy-id 192.168.1.50
[root@openstack ops]# ssh 192.168.1.50 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:60
  
[root@openstack ops]# su - nginx -s /bin/bash
-bash-4.1$ ssh-copy-id root@192.168.1.50
  
驗證從WebVirtMgr部署機192.168.1.17無密碼登入到其他kvm宿主機(192.168.1.50)的信任關係
[root@openstack ops]# ssh -p22 root@192.168.1.50
Last login: Thu Jun  7 14:17:37 2018 from 192.168.10.10
[root@kvm02 ~]#
  
[root@openstack ops]# ssh 192.168.1.50 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:60
bind: Address already in use
bind: Address already in use
Last login: Thu Jun  7 14:49:44 2018 from 192.168.10.10
[root@kvm02 ~]#
  
[root@openstack ops]# su - nginx -s /bin/bash
-bash-4.1$ ssh root@192.168.1.50
Warning: Permanently added '192.168.1.50' (RSA) to the list of known hosts.
Last login: Thu Jun  7 14:49:17 2018 from 192.168.10.10
[root@kvm02 ~]#
  
4)在192.168.1.50機器上進行libvirtd的TCP連線配置
修改檔案/etc/sysconfig/libvirtd,用來啟用tcp的埠
[root@kvm02 ~]# cat /etc/sysconfig/libvirtd
........
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"
  
修改檔案/etc/libvirt/libvirtd.conf
[root@kvm02 ~]# vim /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"
  
執行 libvirtd
[root@kvm02 ~]# service libvirtd restart
  
建議使用下面方式執行libvirtd
[root@kvm02 ~]# service libvirtd stop
[root@kvm02 ~]# ps -ef|grep libvirtd|grep -v grep|awk '{print $2}'|xargs kill -9
[root@kvm02 ~]# libvirtd --daemon --listen --config /etc/libvirt/libvirtd.conf
  
檢視執行程式
[root@kvm02 ~]# ps aux | grep libvirtd
root 16563 1.5 0.1 925880 7056 ? Sl 16:01 0:28 libvirtd -d -l --config /etc/libvirt/libvirtd.conf
  
檢視埠
[root@kvm02 ~]# lsof -i:16509
  
關閉iptables防火牆,如果防火牆開啟了,則需要新增下面規則:
[root@kvm02 ~]# vim /etc/sysconfig/iptables
......
-A INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT
[root@kvm02 ~]# /etc/init.d/iptables restart
  
然後在WebVirtMgr部署機192.168.1.17上進行驗證tcp連線驗證
[root@openstack ops]# virsh -c qemu+tcp://192.168.1.50/system
Welcome to virsh, the virtualization interactive terminal.
  
Type:  'help' for help with commands
       'quit' to quit
  
virsh #
  
最後為了防止在使用tcp方式連線後出現"error: Cannot recv data: Connection reset by peer",即連上後一會兒就斷開了。
需要在kvm宿主機上新增下面指令碼
[root@kvm02 ~]# vim /usr/local/src/libvirtd.sh
#!/bin/bash
ps -ef | grep "libvirtd --daemon --listen"|grep -v grep|awk -F" " '{print $2}'|xargs kill -9
/usr/sbin/libvirtd --daemon --listen --config /etc/libvirt/libvirtd.conf
  
[root@kvm02 ~]# chmod 755  /usr/local/src/libvirtd.sh
[root@kvm02 ~]# sh /usr/local/src/libvirtd.sh
[root@kvm02 ~]# crontab -e
* * * * * /bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 10;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 20;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 30;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 40;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
* * * * * sleep 50;/bin/bash -x /usr/local/src/libvirtd.sh > /dev/null 2>&1
  
這樣,登入WebVirtMgr介面就可以成功新增上面的kvm宿主機(192.168.10.50)了。

========================================================
上面是在centos6下的操作記錄。下面簡單介紹下在centos7版本下的操作

1)yum源的配置及安裝所需軟體包
# yum -y install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.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    

2)下載webvirtmgr.git軟體
# cd /usr/local/src/
# git clone git://github.com/retspen/webvirtmgr.git  
# git clone https://github.com/retspen/webvirtmgr.git          

3)資料庫安裝
# cd /usr/local/src/
# wget http://www.sqlite.org/sqlite-3.5.6.tar.gz
# cd sqlite-3.5.6/
# ./configure --disable-tcl  
# # make
make install 

4)webvirtmgr安裝
# cd /usr/local/src/webvirtmgr
# pip install -r requirements.txt
............

後面跟在centos6版本系統下的安裝操作步驟一樣。

相關文章