需求说明:

  1. 为了配合项目验收,及验保证收过程的流畅,现将原部署在一台公网服务器的7kvm 虚拟机迁移至方便携带的线下(dell precision m6800/i7/32G/256SSD+2T)。

  2. 7kvm虚拟机中4台是windows73台是国产kylin,每台都配有公网IP(目的是为了远程演示)。因为项目代码中IP被写死,所以线下vm主机IP 必须使用原公网线上的IP地址;4 windows,和3kylin 位于不同的网段,示例:

kvm(libivrt)bridge和nat模式共存互通_kvm

3. 目前只有两个网段,物理机windows7使用的是bridge模式,所以和工作工作站在一个网段,kylin使用的是nat模式,我创建了一个virbr0 网卡,让kylin接入;

4. 当需要更多的网段时可以通过配置,来创建一个网络;

实施步骤:

  1. 操作系统的安装,kvmlibvirt的使用不在赘述,直接记录迁移过程;

  2. 原镜像的cp ,注意当cp 虚拟机的镜像时,虚拟机一定要关机,否则镜像无法使用(实际企业中,一般都采用的是较为成熟的虚拟化产品,这些产品可以直接对虚拟机进行在线迁移,但是部署大多比较不方便,所以我使用最原始的方法-手动迁移这些虚拟机)

  3. 文档侧重点放在NAT上,主要是想NAT 主机能与Bridge 主机通信

kvm(libivrt)bridge和nat模式共存互通_nat_02

可以看到这些主机正在运行状态:我们需要关掉它们然后cp镜像

 

kvm(libivrt)bridge和nat模式共存互通_virtsh_03

这些镜像足足有109Gcp 1个小时终于ok

  1. Cp 虚拟机的xml 文件;

这个xml 文件决定虚拟机的配置,内存,cpu,网络,都有这个文件来控制;一般位于/etc/libvirt/qemu/这个位置;(不同的系统位置可能不同)

  1. 定义一个NAT网络;

配置文件所在的目录:/etc/libvirt/qemu/networks/,默认存在default,我们cp一份在其基础上修改:

cd /etc/libvirt/qemu/networks/
cp  default.xml  kylin.xml
vim kylin.xml
<network>
 <name>kylin</name>
 <bridge name="virbr0" />
 <forward/>
 <ip address="219.239.247.1"netmask="255.255.255.0">
    <static>
      <range start="219.239.247.2" end="219.239.247.254" />
    </static>
 </ip>
</network>

解释:

需要为virbr0 配置一个地址,NAT模式内主机需要将网关设置为该IP;

可以定义ipdhcp还是static,默认是dhcp,我这样它没有报错且能用,就当可以这样改吧;

定义完成后保存退出wq

kvm(libivrt)bridge和nat模式共存互通_virtsh_04

可以先查看一下已经存在的nat网络,这个default 网络是默认就存在的,我现在删掉它启用我自己的,(也可以不删)。

virsh  net-undefinedefault (删除default网络命令)

kvm(libivrt)bridge和nat模式共存互通_bridge_05

现在再看已经没有了

 

执行virsh net-define kylin.xml 发布这个网络;

kvm(libivrt)bridge和nat模式共存互通_bridge_06

但是状态是无效的,我们启动它;

kvm(libivrt)bridge和nat模式共存互通_kvm_07

可以看到已经启动了;

还可以加入自动启动免得每次开机都手动启动

kvm(libivrt)bridge和nat模式共存互通_kvm_08

Autostart 位置已经是yes 状态了;   

通过brctl show 还可以看到br0 virbr0的信息;说明我们的bridgeNAT 网络都准备好了;bridge 网络的配置,只需要修改网卡配置文件,然后重启即可;

NAT网络定义到此为止;

 

  1. 配置虚拟机xml文件(重点2);

  

    <interface type='network'>
     <mac address='52:54:00:62:5b:e6'/>
     <source network='kylin'/>
     <model type='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03'function='0x0'/>
  </interface>

虚拟机配置文件所在的目录:/etc/libvirt/qemu

以上两处是和bridge模式两处不同的地方,注意source network 处应该写网络名,而不是像bridge 一样写网卡名;