webvirtmgr搭建及詳解


#虛擬機版本

vmware workstation 15.5.0 pro   (也就是linux版)

注:宿機需提前裝好vnc

 

cat /etc/redhat-release

  CentOS Linux release 7.4.1708 (Core)

uname -r

  3.10.0-693.el7.x86_64

 

            該文章講解的是kvm和virtmgr在不同的服務器上部署,而非2個服務在同一台服務器上

 

 

 

IP

網關

網絡

主機名

CPU

內存

硬盤

服務

鏡像位置

Node

192.168.1.133/24

192.168.1.1/24

橋接

node

4核

6G

100G

kvm

 

Master

192.168.1.128/24

master

2核

4G

100G

webvirtmgr

/opop/CentOS-7-x86_64-DVD-1708.iso

#檢查是否支持虛擬機(node端執行)

egrep '(vmx|svm)' --color=always /proc/cpuinfo

lsmod |grep kvm

如無開啟cpu支持vmx或svm,實體機需在bios中開啟,虛擬機開啟方法見下圖:

 

                   右下角打上對號后開機即可

 

#關閉防火牆和SELinux(兩端執行)

iptables -F && iptables-save

systemctl stop firewalld && systemctl disable firewalld

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

systemctl disable NetworkManager

 

#安裝kvm(node端執行)

yum -y install wget

mv /etc/yum.repos.d/CentOS-Base.repo{,.backup}

wget -O /CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

cd /etc/yum.repos.d/; for i in `ls`;do mv $i{,.bak};done

mv /CentOS-Base.repo /etc/yum.repos.d/

yum -y install epel-release && yum clean all && yum makecache  

 

yum -y install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer

systemctl start libvirtd && systemctl enable libvirtd

# 查看libvitd服務的狀態開機啟動

systemctl status libvirtd && systemctl is-enabled libvirtd

 

#配置橋接網絡br0(node端執行)

vim /etc/sysconfig/network-scripts/ifcfg-br0          #新建該文件

DEVICE=br0

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.1.133   

GATEWAY=192.168.1.1

NETMASK=255.255.255.0

DNS1=192.168.1.1

NBOOT="yes"

TYPE="Bridge"

 

vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"

NAME="ens33"

DEVICE="ens33"

ONBOOT="yes"

BRIDGE=br0

ZONE=public

 

#開啟轉發功能並修改ulimit參數(Node端執行)

echo 1 > /proc/sys/net/ipv4/ip_forward

echo -e "*\tsoft\tnproc\t65500" >>/etc/security/limits.conf

echo -e "*\thard\tnproc\t65500" >>/etc/security/limits.conf

echo -e "*\tsoft\tnofile\t65500" >>/etc/security/limits.conf

echo -e "*\thard\tnofile\t65500" >>/etc/security/limits.conf

 

#重啟服務器使網卡配置生效(重啟網卡有時候不管用)

reboot

注:這里有一個誤區,如果單獨只是重啟網卡的話ssh會斷開且會有其他問題,所以這里我reboot一下

 

#重啟libvirt(node端執行)

systemctl restart libvirtd && systemctl status libvirtd

#測試

virsh -c qemu:///system list

#查看virsh版本

virsh --version

#做個軟連接

ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

lsmod |grep kvm

#查看網橋

brctl show

#設置權限
sed -i "s/#spice_listen/spice_listen/" /etc/libvirt/qemu.conf

sed -i "s/#spice_tls = 1/spice_tls = 1/" /etc/libvirt/qemu.conf
sed -i "s/#vnc_listen/vnc_listen/" /etc/libvirt/qemu.conf

sed -i "s/#user = \"root\"/user = \"root\"/" /etc/libvirt/qemu.conf

sed -i "s/#group = \"root\"/group = \"root\"/" /etc/libvirt/qemu.conf

sed -i "s/#dynamic_ownership = 1/dynamic_ownership = 1/" /etc/libvirt/qemu.conf

 

systemctl restart libvirtd

 

注:如需單獨安裝kvm虛擬機,請看我另一篇文章

 

 

 

 

部署webvirtmgrmaster端執行)

這里使用腳本安裝前期少量的部分

#!/usr/bin/env bash

. /etc/init.d/functions

yum -y install wget

wget -O /CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

cd /etc/yum.repos.d/; for i in `ls`;do mv $i{,.bak};done

mv /CentOS-Base.repo /etc/yum.repos.d/

yum -y install epel-release && yum clean all && yum makecache

yum -y install https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm

yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx gcc gcc-c++ python-devel

git clone --depth=1 git@github.com:retspen/webvirtmgr.git

if [ $? -ne 0 ];then

    action "git clone" /bin/false

fi

cd webvirtmgr && pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt

                      #腳本完

===============================================================================================

[root@master webvirtmgr]# python

>>> import sqlite3

>>> exit()

 

#初始化賬號

./manage.py syncdb 

yes-->回車-->輸入自己的郵箱-->輸入自定義密碼-->確認自定義密碼

./manage.py collectstatic   #配置數據庫的賬號

輸入yes

 

創建一個超級用戶配置webvirtmgr 登錄賬號

./manage.py createsuperuser

自定義用戶名(這里我用的admin)-->自己的郵箱-->密碼-->密碼確認

 

拷貝web到 相關目錄

cd .. && mkdir -p /var/www

cp -R webvirtmgr /var/www/webvirtmgr

 

配置nginxmaster端執行)

sed -i "s/    access_log/#    access_log/" /etc/nginx/nginx.conf

sed -i "s/80 default_server;/80; #default_server;/" /etc/nginx/nginx.conf

sed -i "s/        server_name  _;/        server_name localhost;/" /etc/nginx/nginx.conf

sed -i '/location \/ {/a\            root   html;' /etc/nginx/nginx.conf

sed -i '/            root   html;/a\            index  index.html index.htm;' /etc/nginx/nginx.conf

 

#添加 /etc/nginx/conf.d/webvirtmgr.conf  配置文件

vim /etc/nginx/conf.d/webvirtmgr.conf           #新建該文件

server {

    listen 80 default_server;

    server_name $hostname;

    location /static/ {

      root /var/www/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; # Set higher depending on your needs 

     }

}

 

#檢查nginx配置文件是否正常且重啟nginx

nginx -t

systemctl restart nginx

 

#配置 Supervisor 

#注:該部分會有坑,就是因為字符編碼問題,如你在復制時有異常需自行排錯,排錯命令見下面附命令

echo '

[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'>>/etc/supervisord.conf

 

#檢查

vim /var/www/webvirtmgr/conf/gunicorn.conf.py   

#確保下面bind綁定的是本機的8000端口,這個在nginx配置中定義了,被代理的端口

bind = '127.0.0.1:8000'

 

#重啟supervisord(下圖屬正常,如不是顯示的下圖則需排錯)

systemctl restart supervisord && systemctl enable supervisord && systemctl status supervisord

 

ps -ef|grep super

#確保8000和6080端口已經啟動

netstat -anpt|grep -E '(:8000|:6080)'

 

                            --------到這里webvirtmgr配置完成-----

附:

program的名字是:webvirtmgrwebvirtmgr-console

查看單個program的錯誤信息:supervisorctl tail <program_name> stderr

重新啟動配置中的所有程序:supervisorctl reload

更新新的配置到supervisord:supervisorctl update

啟動某個進程(program_name=你配置中寫的程序名稱): supervisorctl start <program_name>

停止全部進程: supervisorctl stop all

supervisorctl -c /etc/supervisord.conf      #查看進程中的任務

 

 

webvirtmgr服務器(master端)與kvm服務器(node端)連接配置

(webvirtmgr與kvm之間使用ssh方式連接管理)

1在kvm(node端)服務器上配置webvirt用戶

useradd webvirtmgr && echo "123456" | passwd --stdin webvirtmgr

usermod -G libvirt -a webvirtmgr

 

2、webvirtmgr服務器上執行:(該目錄為所有鏡像存放的地方,生產中請按需取名

mkdir /opop && chown nginx.nginx /opop && chmod 700 -R /opop

su - nginx -s /bin/bash

ssh-keygen

touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config

chmod 0600 ~/.ssh/config

#ssh-key上傳到kvm服務器上

ssh-copy-id   webvirtmgr@192.168.1.133

 

3、kvm(node端)服務器上配置 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

service libvirtd restart   或者   systemctl restart libvirtd

 

 

webvirtmgr與kvm之間使用tcp方式連接管理Node端執行)

1)Libvirtd服務監聽配置

修改/etc/sysconfig/libvirtd文件,去掉下面一行的注釋,使Libvirt服務處於監聽狀態

sed -i "s/^#LIBVIRTD_ARGS/LIBVIRTD_ARGS/" /etc/sysconfig/libvirtd

2)配置Libvirt服務

sed -i "s/^#listen_tls/listen_tls/" /etc/libvirt/libvirtd.conf

sed -i "s/^#listen_tcp/listen_tcp/" /etc/libvirt/libvirtd.conf       #允許tcp監聽

sed -i "s/^#tcp_port/tcp_port/" /etc/libvirt/libvirtd.conf        #開放tcp端口

sed -i "s/#listen_addr = \"192.168.0.1\"/listen_addr = \"0.0.0.0\"/" /etc/libvirt/libvirtd.conf       #監聽地址修改為0.0.0.0

sed -i "s/^#auth_tcp/auth_tcp/" /etc/libvirt/libvirtd.conf          #配置tcp通過sasl認證

3)創建libvirt管理用戶

saslpasswd2 -a libvirt admin

#這里輸入自定義密碼

 

 

#使用瀏覽器登錄

#登錄賬號和密碼為系統的登錄賬密

 

 

 

點擊Add Connection

 

 

 

    注:Label要和IP相同,用戶不是root

 

點擊下圖中鉛筆前面的133地址進入配置:

 

 

 

點擊 "存儲池" ---New Storage(即創建磁盤鏡像存放的位置)

 

 

 在下圖選擇 "路徑" 選項時需提前在Node節點上創建好該目錄,opop的目錄即所有的鏡像都應該放到該目錄中,必須!!!

 

 

 

 

 

 點擊添加鏡像

 

 

 

 鏡像名稱、容量可自定義,鏡像格式選擇qcow2,Metadata后面的勾默認是打着的,要去掉

刪除存儲池:

查看所有存儲池:virsh pool-list --all

取消存儲池的激活: virsh pool-destroy <存儲池名稱>

然后在webvirtmgr界面在“存儲池”里找到要刪除的存儲池先停止,再刪除

 

 

 

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

選擇“Interfaces”---New Interface

 

 

 

注:注意下面的“設備”一項要填寫橋接的物理網卡(即br0對應的那個網卡

名稱可自定義,start mode是開機自啟動,類型選橋接,STP類似思科的生成樹協議

IPV4寫br0的IP地址和網關

 

 

 

 

 

創建網絡池

選擇“網絡池”---New Network

 

 

 再點擊左邊的  "網絡池"----點擊br0,再進行下一步的操作

 

 點擊下圖中New  Instance

點擊Custom Instance進行配置虛擬機

 

 

名稱自定義,磁盤鏡像選擇上面創建的centos7.4.1708.img,網絡池選擇剛部署的br0,內存按需,其他不變,如下圖

 

點擊 設置---Media 選擇要使用的鏡像---點擊連接

注:所有鏡像都必須放到/opop/目錄下(上面已定義好了),如果下載了各種鏡像版本放到里面,那么就可以在這里選擇你想安裝的版本!

 

 

點擊Power---啟動

 

 啟動后的畫面,如下圖

 

 點擊Access----控制台---控制台,進行連接到虛擬機中

 

 往下的安裝和正常的一樣,此處略過去部分安裝過程..........

安裝完畢並成功登錄進來

 

 

 

注:這里因為我是在虛擬機中做到,網絡方面層次會有點多,按以上教程做出來后會連接不到互聯網,待我這邊有了真機后再做相對應的教程

參考信息1

參考信息2

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM