zoukankan      html  css  js  c++  java
  • 虚拟机迁移

    虚拟机迁移

    迁移的原因(前提:共享存储)

    • 尽可能停机时间短(安全等级 三个9)
    • 资源不均等

    环境准备

    报错

    原因:没有虚拟环境

    冷迁移

    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解析

    操作步骤:

    方法一:

    一:在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图形界面工具

    [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隧道转发X11

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

    3.Windows客户端使用Xshell连接KVM宿主机

    第一步: 连接KVM宿主机, 修改其属性

    第二步: 使用xming接受SSH X11图形转发

    注意: 需要下载对应工具Xming, 然后启动

    第三步:重新连接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测试连接
    
  • 相关阅读:
    Flask之threading.loacl方法
    websocket之简易聊天室
    websocket介绍
    Flask之jinja2模板语言
    Flask之基础
    Linux之项目的部署
    Linux之nginx负载均衡
    Linux之nginx
    Linux之redis-cluster
    Linux之redis-sentinel
  • 原文地址:https://www.cnblogs.com/1naonao/p/12013567.html
Copyright © 2011-2022 走看看