虛擬機遷移

虛擬機遷移

遷移的緣由(前提:共享存儲)

  • 儘量停機時間短(安全等級 三個9)
  • 資源不均等

環境準備

報錯前端

緣由:沒有虛擬環境node

冷遷移

1.準備環境(環境一致)橋接網絡
    
    #下載軟件及啓動
    [root@kvm02 ~]# yum  install -y  libvirt  virt-install  qemu-kvm
    [root@kvm02 ~]# systemctl  start  libvirtd
    [root@kvm02 ~]# systemctl  enable  libvirtd
    
    #生成橋接
    [root@kvm02 ~]# virsh  iface-bridge  eth0  br0 
    Created bridge br0 with attached device eth0

2.將磁盤和配置文件進行傳輸過去
    
    #關機
    [root@kvm01 opt]# virsh  shutdown   web02
    
    #導出配置文件
    [root@kvm01 opt]# virsh   dumpxml   web02  > web02.xml
    
    #傳輸磁盤
    [root@kvm01 opt]# scp  -rp  /opt/web02.qcow2     root@10.0.0.162:/opt/
    
    #傳輸配置文件
    
    [root@kvm01 opt]# scp  -rp  /opt/web02.xml   root@10.0.0.162:/opt/
    
    
3.將主機導入進去
    
    [root@kvm02 opt]# virsh  define   web02.xml
    
4.啓動測試
    
    [root@kvm02 opt]# virsh  start web02 
    
    [root@kvm02 opt]# virsh  console  web02
    
[root@centos7 ~]# ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=32.6 ms
 
--- baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 32.696/32.696/32.696/0.000 ms

[c:\~]$ ssh  root@10.0.0.172


Connecting to 10.0.0.172:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Thu Dec  5 23:14:03 2019
[root@centos7 ~]#
主機名 ip 內存 網絡 軟件需求 虛擬化
kvm01 10.0.0.11 2G 建立br0橋接網卡 kvm和nfs 開啓虛擬化
kvm02 10.0.0.12 2G 建立br0橋接網卡 kvm和nfs 開啓虛擬化
nfs01 10.0.0.31 1G nfs

注意:須要互相作好host解析python

操做步驟:linux

方法一:

一:在kvm01和kvm02上安裝kvm和nfs,配置橋接網卡

#查看kvm的環境
lsmod |grep kvm
#安裝kvm環境,nfs環境
yum install libvirt* virt-* qemu-kvm* nfs-utils openssh-askpass -y
#啓動
systemctl start libvirtd.service
mount /dev/cdrom /mnt
#建立橋接網絡
virsh iface-bridge eth0 br0

二:在nfs01上安裝配置nfs

yum install nfs-utils -y
mkdir /data

vim /etc/exports
/data 10.0.0.0/24(w,async.no. root squash,no. all squash)

systemctl restart rpcbind

systemctl restart nfs

三kvm01和kvm02掛載共享目錄/opt

mount -t nfs 10.0.0.31:/data  /opt

四安裝一臺橋接模式的虛擬機

[root@kvm01 opt]# scp -rp test.qcow2 root@10.0.0.162:/data

#建立kvm虛擬機
[root@webvirtmgr opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name test --memory 1024 --vcpus 1 --disk /data/test.qcow2  --boot hd  --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole


將虛擬機ip配置爲10.0.0.111

五命令行熱遷移

virsh migrate --live web01 qemu+ssh://10.0.0.12/system --unsafe

#進入kvm,測試
ping baidu.com 
遠程鏈接kvm

方法二:

熱遷移

1.環境準備

    三臺主機
    
    kvm01           橋接              虛擬化         nfs客戶端      
    
    kvm02           橋接              虛擬化         nfs客戶端  
    
    nfs01           10.0.0.0/24                     nfs服務端


[root@kvm01 opt]# yum  install  -y  nfs-utils 

2.nfs服務端建立共享目錄

[root@nfs01 ~]# cat /etc/exports
/opt  10.0.0.0/24(rw,sync,no_root_squash,no_all_squash)

#啓動
[root@nfs01 ~]# systemctl   restart  rpcbind
[root@nfs01 ~]# systemctl   restart  nfs

#客戶端檢查

[root@kvm02 ~]# showmount  -e  10.0.0.31
Export list for 10.0.0.31:
/opt 10.0.0.0/24

[root@kvm01 opt]# showmount  -e  10.0.0.31
Export list for 10.0.0.31:
/opt 10.0.0.0/24

3.客戶端建立掛載目錄

[root@kvm02 ~]# mkdir  /data

[root@kvm01 opt]# mkdir  /data

#進行掛載
[root@kvm02 ~]# mount  -t nfs  10.0.0.31:/opt  /data

[root@kvm01 opt]# mount  -t nfs  10.0.0.31:/opt  /data

4.建立一個基於共享目錄中的主機

[root@kvm01 opt]# virsh  dumpxml   web01  > web01.xml
[root@kvm01 opt]# cp  /opt/web01.qcow2   /data/web01.qcow2

#修改配置文件
  <name>db01</name>
刪除uuid
刪除mac
<source file='/data/web01.qcow2'/>

[root@kvm01 opt]# virsh  define   web01.xml 
Domain db01 defined from db01.xml

[root@kvm01 opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     centos6                        shut off
 -     centos7                        shut off
 -     web01                           shut off
 -     lb01                           shut off
 -     web02                          shut off
 -     web03                          shut off

[root@kvm01 opt]# virsh  start web01

5.開始熱遷移

#進行ip地址解析
[root@kvm01 opt]# vim  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.161  kvm01
10.0.0.162  kvm02
#進行熱遷移

[root@kvm01 opt]# virsh   migrate  --live  --verbose  web01  qemu+ssh://10.0.0.162/system  --unsafe 
root@10.0.0.162's password: 
Migration: [100 %]

[root@kvm02 opt]# ll /run/libvirt/qemu/web01.xml
-rw------- 1 root root 9689 Dec  6 00:26 /run/libvirt/qemu/web01.xml


[c:\~]$ ping  10.0.0.171 -t
來自 10.0.0.171 的回覆: 字節=32 時間=1ms TTL=64
來自 10.0.0.171 的回覆: 字節=32 時間<1ms TTL=64
來自 10.0.0.171 的回覆: 字節=32 時間<1ms TTL=64
請求超時。
來自 10.0.0.171 的回覆: 字節=32 時間=1ms TTL=64
來自 10.0.0.171 的回覆: 字節=32 時間<1ms TTL=64
來自 10.0.0.171 的回覆: 字節=32 時間<1ms TTL=64
來自 10.0.0.171 的回覆: 字節=32 時間<1ms TTL=64
來自 10.0.0.171 的回覆: 字節=32 時間<1ms TTL=64

六. Virt-manager管理Kvm虛擬機

\#1.安裝圖形化界面
[root@qiudao /opt]# yum groupinstall "GNOME Desktop" -y

\#2.安裝vncserver
[root@qiudao /opt]# yum install tigervnc-server -y

\#3.設置vnc密碼
[root@qiudao /opt]# vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

\#4.開啓vnc,配置端口
[root@qiudao /opt]# vncserver :1
A VNC server is already running as :1xauth: file /root/.Xauthority does not exist

New 'qiudao:2 (root)' desktop is qiudao:2

Creating default startup script /root/.vnc/xstartupCreating default config /root/.vnc/configStarting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/qiudao:2.log

[root@qiudao /opt]# netstat -lntp |grep vnc
tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 31202/Xvnctcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN 31202/Xvnctcp6 0 0 :::5902 :::* LISTEN 31202/Xvnctcp6 0 0 :::6002 :::* LISTEN 31202/Xvnc

\#下載安裝虛擬化管理
[root@qiudao /opt]# yum install virt-manager -y

img

img

img

img

七KVM圖形化管理

1.服務端安裝x11圖形界面工具nginx

[root@kvm-node1 ~]# yum install -y xorg-x11-font-utils xorg-x11-server-utils xorg-x11-utils xorg-x11-xauth xorg-x11-xinit

2.服務端開啓SSH隧道轉發X11git

[root@kvm-node1 ~]# vim /etc/ssh/sshd_config
X11Forwarding yes
[root@kvm-node1 ~]# systemctl restart sshd

3.Windows客戶端使用Xshell鏈接KVM宿主機github

第一步: 鏈接KVM宿主機, 修改其屬性web

第二步: 使用xming接受SSH X11圖形轉發sql

注意: 須要下載對應工具Xming, 而後啓動shell

第三步:從新鏈接KVM宿主機, 執行virt-manager

第四步:安裝中文字符,解決界面亂碼問題

[root@kevin ~]# yum install -y dejavu-lgc-sans-fonts
[root@kevin ~]# yum groupinstall -y "Fonts"

//調整字體爲中文
[root@kvm-node1 ~]# export LANG=zh_CN.UTF-8

注意:

1.若是使用GUI界面Linux則無需安裝便可使用virt-manager
2.若是是MAC筆記本, 僅能使用Crt開啓X11圖形轉發, 同時必須下載XQuartz支持轉發

八.KVM虛擬機克隆

九.KVM可視化管理

1. 前言

​ 當Kvm宿主機愈來愈多,須要對宿主機的狀態進行調控,決定採用WebVirtMgr做爲Kvm虛擬化的web管理工具,圖形化的WEB,讓人能更方便的查看Kvm宿主機的狀況和操做。

​ WebVirtMgr是近兩年來發展較快,比較活躍,很是清新的一個Kvm管理平臺,提供對宿主機和虛機的統一管理,它有別於Kvm自帶的圖形管理工具(virtual machine manager),讓Kvm管理變得更爲可視化,對中小型Kvm應用場景帶來了更多方便。

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

2. 特色

操做簡單,易於使用

經過libvirt的API接口對Kvm進行管理

提供對虛擬機生命週期管理

3. 功能

#宿主機管理支持如下功能

CPU利用率

內存利用率

網絡資源池管理

存儲資源池管理

虛擬機鏡像

虛擬機克隆

快照管理

日誌管理

虛機遷移

#虛擬機管理支持如下功能

CPU利用率

內存利用率

光盤管理

關/開/暫停虛擬機

安裝虛擬機

VNC console鏈接

建立快照

部署

1. 安裝相關依賴

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

首先要安裝Kvm虛擬化環境,這裏我將WebVirtMgr服務器和Kvm服務器放在同一臺機器上部署的,即單機部署。

\#1.安裝epel源

[root@kvm02 ~]# yum install epel-release

\#2.安裝依賴及環境

[root@kvm02 ~]# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx

\#3.安裝編譯軟件

[root@kvm02 ~]# yum -y install gcc python-devel

\#4.安裝numpy(Python進行科學計算的基礎軟件包)

[root@kvm02 ~]# pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 安裝Python需求環境

\#1.從git-hub中下載相關的webvirtmgr代碼

[root@kvm02 ~]# cd /usr/local/src/
[root@kvm02 /usr/local/src]# git clone git://github.com/retspen/webvirtmgr.git

\#2.安裝WebVirtMgr

[root@kvm02 /usr/local/src]# cd webvirtmgr/
[root@kvm02 /usr/local/src/webvirtmgr]# pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

\#3.檢查sqlite3 (備註:自帶不須要安裝,導入模塊檢查一下。)

[root@kvm02 /usr/local/src/webvirtmgr]# 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 sqlite3
\>>> exit()

\#4.初始化帳號

[root@kvm02 /usr/local/src/webvirtmgr]# chmod +x manage.py

[root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py syncdb

img

#5.生成配置文件

[root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py collectstatic
img

\#6.添加管理員帳號,這個是管理員帳號,用上面的admin和這個帳號均可以登陸

[root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py createsuperuser
WARNING:root:No local_settings file found.
Username (leave blank to use 'root'): ops
Email address: 1176494252@qq.com
Password:
Password (again):
Superuser created successfully.

#導入數據庫
[root@webvirtmgr webvirtmgr]# 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 sqlite3
>>> exit()

\#7.拷貝web到相關目錄

[root@kvm02 /usr/local/src/webvirtmgr]# mkdir -pv /var/www
mkdir: created directory '/var/www'
[root@kvm02 /usr/local/src/webvirtmgr]# cp -rp /usr/local/src/webvirtmgr /var/www/webvirtmgr

\#8.設置ssh

[root@kvm02 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CAIi5mok4liJ/kdhHu45iknOPhfla3rG+NLyNVSPwCk root@kvm02
The key's randomart image is:
+---[RSA 2048]----+
|+. |
|=o . . . |
|+o+ .E + . |
|O. .+o+.o o |
|o+ o+..S. . |
|. ..o.o |
| . .==.o |
|+.o=oBo . |
|.*ooXo |
+----[SHA256]-----+

[root@kvm02 ~]# ssh-copy-id  -i  .ssh/id_rsa.pub   10.0.0.162

\#設置加密鏈接

[root@kvm02 ~]# ssh 10.0.0.182 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:60

3. 配置Nginx

\#1.打開/etc/nginx/nginx.conf文件,註釋server段

\#2.編輯配置文件

[root@kvm02 ~]# cat /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
}
}

\#3.從新啓動nginx服務

[root@kvm02 ~]# systemctl restart nginx

\#4.設置權限

[root@kvm02 ~]# chown -R nginx:nginx /var/www/webvirtmgr

\#5.建立/etc/supervisord.d/webvirtmgr.ini具備如下內容的文件

[root@kvm02 ~]# cat /etc/supervisord.d/webvirtmgr.ini
[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
stdout_logfile=/var/log/supervisor/webvirtmgr.log
redirect_stderr=true
user=nginx

[program:webvirtmgri-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

\#6.啓動守護進程supervisord

[root@kvm02 ~]# systemctl start supervisord.service
[root@kvm02 ~]# systemctl enable supervisord.service

\#7.查看端口

[root@kvm02 ~]# netstat -lntp |grep -E '6080|8000'
tcp 0 0 127.0.0.1:6080 0.0.0.0:* LISTEN 14866/ssh
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 14866/ssh
tcp6 0 0 ::1:6080 :::* LISTEN 14866/ssh
tcp6 0 0 ::1:8000 :::* LISTEN 14866/ssh

\#8.瀏覽器IP地址訪問

http://10.0.0.182/login/

img

只有超級管理員登錄後才能看到"基礎構架"窗口

img

4. 遠程鏈接

\#使用tcp進行對遠程libvirtd進行鏈接訪問的配置以下:

\#1.修改文件/etc/sysconfig/libvirtd,用來啓用tcp的端口

[root@kvm02 ~]# grep -Ev "^$|#" /etc/sysconfig/libvirtd
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

\#2.修改文件/etc/libvirt/libvirtd.conf

[root@kvm02 ~]# grep -Ev "^$|#" /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@kvm02 ~]# systemctl restart libvirtd.service

[root@kvm02 conf.d]# cd /var/www/webvirtmgr
[root@kvm02 webvirtmgr]# git pull
[root@kvm02 webvirtmgr]# ./manage.py collectstatic
[root@kvm02 webvirtmgr]# service supervisord restart

\#4.查看端口16509是否啓動

[root@kvm02 ~]# netstat -lntp|grep 16509
tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 15344/libvirtd

\#5.在source host鏈接dest host遠程libvirtd查看信息

[root@kvm02 ~]# virsh -c qemu+tcp://10.0.0.182/system
Welcome to virsh, the virtualization interactive terminal.

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

virsh #         #表示成功

virsh #

\#6.web端進行tcp鏈接

十.ESSI簡介

VMware商業版 提供虛擬機

#研究EXSI虛擬化和EXSI iso到kvm的 虛擬機遷移
http: L /blog.51cto. com/1 iqingbiao/1742724
virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test
-of qcow2
#p2v遷移(物理機到kvm虛擬機的遷移)
http; / /blog. csdn. net/tantexian/article/details/ 42869179

老古董:發熱量大,配置低2G ddr 400MHZ 750w
關機: U盤啓動,工具,把驅動刪掉,替換虛擬化的驅
激活Windecs
轉到設置」以
老古董:發熱量大,配置低2G ddr 400MHZ 750w
#環境準備
另起一臺服務器,安裝kvm環境。

回到源主機上面,將kvm虛擬主機centos7的鏡像和配置文件傳輸給新的服務器,因爲源佔用空間太大,將其轉換格式以後再進行傳輸,將其轉換成qcow2格式。

#冷遷移
[root@qiudao /opt]# qemu-img convert -f raw -O qcow2 centos7.raw centos7.qcow2

#將其傳輸到新的主機上面
[root@qiudao /opt]# scp -rp /opt/centos7.qcow2 10.0.0.13:/opt
[root@qiudao /opt]# scp -rp /opt/centos7.xml 10.0.0.13:/opt


#回到新的主機上面,進入到/opt目錄下查看結果
[root@kvm02 opt]# ll
total 1181384
-rw-r--r-- 1 root root 1209729024 2018-08-13 14:11 centos7.qcow2
-rw-r--r-- 1 root root 4951 2018-08-13 10:39 centos7.xml


#修改配置文件,將定義的格式raw,改爲qcow2格式

img

\#修改完成,重啓服務

[root@qiudao /opt]# systemctl restart libvirtd.service

\#進行導入配置文件
[root@qiudao /opt]# virsh define centos7.xml

\#啓動主機
[root@qiudao /opt]# virsh start centos7

\#進行ssh測試鏈接
相關文章
相關標籤/搜索