快速搭建 kvm web 管理工具 WebVirtMgr


作者:SRE運維博客

博客地址: https://www.cnsre.cn/

文章地址:https://www.cnsre.cn/posts/211117937177/

相關話題:https://www.cnsre.cn/tags/kvm/


WebVirtMgr是近兩年來發(fā)展較快,比較活躍终娃,非常清新的一個KVM管理平臺俺驶,提供對宿主機和虛機的統(tǒng)一管理,它有別于kvm自帶的圖形管理工具(virtual machine manager)却嗡,讓kvm管理變得更為可視化,對中小型kvm應用場景帶來了更多方便嘹承。

WebVirtMgr介紹

WebVirtMgr采用幾乎純Python開發(fā)窗价,其前端是基于Python的Django,后端是基于Libvirt的Python接口叹卷,將日常kvm的管理操作變的更加的可視化撼港。

  • WebVirtMgr 特點

操作簡單,易于使用 骤竹、通過libvirt的API接口對kvm進行管理帝牡、提供對虛擬機生命周期管理

  • WebVirtMgr 功能

宿主機管理支持以下功能、CPU利用率蒙揣、內(nèi)存利用率靶溜、網(wǎng)絡資源池管理、存儲資源池管理懒震、虛擬機鏡像罩息、虛擬機克隆、快照管理个扰、日志管理瓷炮、虛機遷移、虛擬機管理支持以下功能递宅、CPU利用率娘香、內(nèi)存利用率冬筒、光盤管理、關/開/暫停虛擬機茅主、安裝虛擬機舞痰、VNC console連接、創(chuàng)建快照

官方文檔

https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr

安裝前的部署

安裝一些依賴包

yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx gcc python-devel wget vim net-tools lrzsz 

安裝pip

wget https://bootstrap.pypa.io/get-pip.py 
python get-pip.py 
pip -V 
sre運維|Linux運維|自動化運維|關鍵詞
pip install numpy
sre運維|Linux運維|自動化運維|關鍵詞

安裝python的需要包和配置Django環(huán)境

git clone git://github.com/retspen/webvirtmgr.git
sre運維|Linux運維|自動化運維|關鍵詞

安裝nginx

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 
yum install nginx -y

安裝supervisor

安裝參考

https://www.2cto.com/kf/201712/702837.html

開機自啟參考

https://blog.csdn.net/binggoogle/article/details/53203991

cat  /etc/supervisord.conf

{{< alert theme="warning" dir="ltr" >}}
?? 注意

如果沒有這個文件按照一下步驟安裝

有的話忽略此步驟
{{< /alert >}}

pip install supervisor
mkdir /etc/supervisord.d/
echo_supervisord_conf > /etc/supervisord.conf

新建文件夾

vim /etc/supervisord.d/app.conf

配置文件 app.conf

內(nèi)容為

[program:appname]
command=/root/soft/push.api
directory=/root/soft/push.api
autostart=true
autorestart=true
user=root
stdout_logfile = /var/log/supervisor/pushapi.log
stderr_logfile = /var/log/supervisor/pushapi-error.log

修改 在配置文件最下方修改為

vim  /etc/supervisord.conf
[include]
files = /etc/supervisord.d/*.ini
sre運維|Linux運維|自動化運維|關鍵詞
supervisord -c /etc/supervisord.conf
/usr/bin/supervisorctl start all
/usr/bin/supervisorctl stop all

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4855142804875926"
crossorigin="anonymous"></script>
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-4855142804875926"
data-ad-slot="5670838583"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

安裝環(huán)境

cd webvirtmgr 
pip install -r requirements.txt 
sre運維|Linux運維|自動化運維|關鍵詞
./manage.py syncdb
sre運維|Linux運維|自動化運維|關鍵詞

創(chuàng)建用戶

輸入以下用戶信息

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: 275301281@qq.com
Password: admin
Password (again):admin 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 6 object(s) from 1 fixture(s)
./manage.py collectstatic

配置一個超級用戶

./manage.py createsuperuser
sre運維|Linux運維|自動化運維|關鍵詞
WARNING:root:No local_settings file found.
Username (leave blank to use 'root'): yes
Email address: 275301281@qq.com
Password: Lenovo@123
Password (again): Lenovo@123
Superuser created successfully.

設置nginx

a诀姚、使用:8000端口

移動這個 webvirtmgr 目錄到 /var/www

cd  ..
mv webvirtmgr /var/www/

{{< alert theme="warning" dir="ltr" >}}
?? 注意:
webvirtmgr 目錄下還有一個名稱為webvirtmgr 的文件夾
不要單獨移動 webvirtmgr/webvirtmgr 文件
{{< /alert >}}

sre運維|Linux運維|自動化運維|關鍵詞

編輯配置文件

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并設置開機自啟動

(如果不設置開機自啟動响牛,重啟服務器supervisor無法管理Django進程),并開機自啟動supervisord

/etc/init.d/nginx start

或者

systemctl restart   nginx 
systemctl enable supervisord 

分配權(quán)限

chown nginx.nginx /var/www/webvirtmgr

設置supervisor

/etc/supervisord.conf末尾加入下面的配置:

vi /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  

{{< alert theme="warning" dir="ltr" >}}
?? 注意

進程無法啟動或者報錯 可以選擇吧 log 注釋取消
{{< /alert >}}

重啟supervisord

開機自啟參考

https://blog.csdn.net/binggoogle/article/details/53203991

設置完之后重啟即可

systemctl restart  supervisord.service
systemctl enable  supervisord.service
systemctl status   supervisord.service 
sre運維|Linux運維|自動化運維|關鍵詞

更新

cd /var/www/webvirtmgr git pull
sre運維|Linux運維|自動化運維|關鍵詞
./manage.py collectstatic
sre運維|Linux運維|自動化運維|關鍵詞
systemctl  restart supervisord

如果有錯誤或不運行

 ./manage.py runserver 0:8000
#或者后臺運行腳本
nohup python  /var/www/webvirtmgr/manage.py runserver 0:8000  >/dev/null &
nohup python  /var/www/console/webvirtmgr-console   >/dev/null &

訪問:http://x.x.x.x:8000(x.x.x.x - your server IP address )赫段,輸入創(chuàng)建的用戶和密碼呀打,如果沒有創(chuàng)建,請用python manager.py createsuperuser,命令創(chuàng)建糯笙。登錄后如下圖所示

sre運維|Linux運維|自動化運維|關鍵詞

配置虛擬機所在宿主機

webvirtmgr客戶端就這樣搭建完了贬丛,接下來需要配置虛擬機所在宿主機的,參考git地址.

配置宿主機

下載并執(zhí)行腳本

如果虛擬機比較多给涕,該腳本執(zhí)行時間會比較長豺憔,因為會執(zhí)行 service libvirt-guests restart,會將所有運行的虛擬機掛起然后再恢復够庙,感覺這一步不是必須的恭应,因為我有一臺只設置ssh認證,也可以正常連接耘眨。

curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh

如果沒有curl就用wget

wget -O - http://retspen.github.io/libvirt-bootstrap.sh | sudo sh

配置防火墻

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT

設置TCP授權(quán)

參考:https://github.com/retspen/webvirtmgr/wiki/Setup-TCP-authorization

webvirtmgr新建服務器連接時需要此賬號

用saslpasswd2命令給libvirt的用戶cnsre設置密碼

saslpasswd2 -a libvirt cnsre
Password: cnsre
Again (for verification): cnsre

生成一個密碼庫

sasldblistusers2 -f /etc/libvirt/passwd.db 

cnsre@webvirtmgr.cn: userPassword

設置ssh授權(quán)

ssh-keygen -t rsa       # 產(chǎn)生公私鑰

直接回車昼榛,回車,回車

sre運維|Linux運維|自動化運維|關鍵詞
ssh-copy-id 192.168.1.120  

{{< alert theme="warning" dir="ltr" >}}
?? 注意

由于這里webvirtmgr和kvm服務部署在同一臺機器剔难,所以這里本地信任胆屿。

如果kvm部署在其他機器,那么這個是其他它的ip 同時也要設置ssh key密鑰
{{< /alert >}}

提示輸入密碼的時候直接輸入之前1.120的密碼

sre運維|Linux運維|自動化運維|關鍵詞
ssh 192.168.1.120 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080

web 平臺加入其他kvm宿主機

sre運維|Linux運維|自動化運維|關鍵詞

在部署web管理的主機上執(zhí)行命令

ssh-keygen -t rsa

然后在執(zhí)行

ssh-copy-id 192.168.1.165
sre運維|Linux運維|自動化運維|關鍵詞

添加新的kvm宿主機

sre運維|Linux運維|自動化運維|關鍵詞

查看新加的kvm宿主機狀態(tài) 看有無報錯

sre運維|Linux運維|自動化運維|關鍵詞

刪除新加的賬號

sudo saslpasswd2 -a libvirt -d cnsre

確認驗證新加的賬號配置

virsh -c qemu+tcp://IP_address/system nodeinfo
(virsh -c qemu+tcp://192.168.1.50/system nodeinfo)
Please enter your authentication name: cnsre
Please enter your password: xxxxxx
CPU model:           x86_64
CPU(s):              2
CPU frequency:       2611 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  1
NUMA cell(s):        1
Memory size:         2019260 kB

{{< alert theme="warning" dir="ltr" >}}
?? 注意

賬號全名帶hostname偶宫,如 cnsre@webvirtmgr.cn

測試的時候這一步測試沒有成功 但是可以鏈接
{{< /alert >}}

設置ssh認證

{{< notice warning "注意" >}}
ssh和tcp設置一種即可非迹,其實就是設置無密碼登錄,要注意的是從webvirtmgr的什么用戶到宿主機的什么用戶的無密碼登錄读宙,比如我用root跑的django webvirtmgr彻秆,而宿主機也是root跑的virsh楔绞,所以需要設置root到root的無密碼登錄结闸。而git官網(wǎng)推薦的是用nginx用戶跑django webvirtmgr,webvirtmgr用戶跑的virsh酒朵,所以設置的是nginx用戶到宿主機webvirtmgr用戶的無密碼登錄桦锄。
{{< /notice >}}

參考:https://github.com/retspen/webvirtmgr/wiki/Setup-SSH-Authorizatio

使用tcp認證連接服務器

訪問:http://192.168.1.120:8000,xxxx是webvirtmgr的ip地址蔫耽,點擊new connection

填寫kvm宿主機的一些信息

sre運維|Linux運維|自動化運維|關鍵詞

基礎架構(gòu)可以看到一些vm虛擬機

sre運維|Linux運維|自動化運維|關鍵詞

KVM WEB管理常見報錯

網(wǎng)頁控制臺 遠程鏈接報錯1006

安裝vnc即可

yum install -y novnc

網(wǎng)頁控制臺 遠程鏈接報錯505

cd /var/www/console/
./webvirtmgr-console  &

后臺運行腳本

nohup python  /var/www/webvirtmgr/manage.py runserver 0:8000  >/dev/null & 
nohup python  /var/www/console/webvirtmgr-console   >/dev/null &

作者:SRE運維博客

博客地址: https://www.cnsre.cn/

文章地址:https://www.cnsre.cn/posts/211117937177/

相關話題:https://www.cnsre.cn/tags/kvm/


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末结耀,一起剝皮案震驚了整個濱河市留夜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌图甜,老刑警劉巖碍粥,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異黑毅,居然都是意外死亡嚼摩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門矿瘦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枕面,“玉大人,你說我怎么就攤上這事缚去〕泵兀” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵易结,是天一觀的道長枕荞。 經(jīng)常有香客問我,道長搞动,這世上最難降的妖魔是什么买猖? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮滋尉,結(jié)果婚禮上玉控,老公的妹妹穿的比我還像新娘。我一直安慰自己狮惜,他們只是感情好高诺,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碾篡,像睡著了一般虱而。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上开泽,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天牡拇,我揣著相機與錄音,去河邊找鬼穆律。 笑死惠呼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的峦耘。 我是一名探鬼主播剔蹋,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辅髓!你這毒婦竟也來了泣崩?” 一聲冷哼從身側(cè)響起少梁,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矫付,沒想到半個月后凯沪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡买优,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年著洼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片而叼。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡身笤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出葵陵,到底是詐尸還是另有隱情液荸,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布脱篙,位于F島的核電站娇钱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏绊困。R本人自食惡果不足惜文搂,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秤朗。 院中可真熱鬧煤蹭,春花似錦、人聲如沸取视。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽作谭。三九已至稽物,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間折欠,已是汗流浹背贝或。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锐秦,地道東北人咪奖。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像农猬,于是被迫代替她去往敵國和親赡艰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容