------------------------------------------------------------------------- ###KVM SNAT配置过程 ------------------------------------------------------------------------- #增加一个br0网桥(不跟任何网卡绑定) brctl addbr br0 #激活网桥 ifconfig br0 up #给br0配置IP地址 ifconfig br0 10.0.0.1/24 #1.使用virsh创建两台虚拟机vm01和vm02,这两台虚拟机网卡都接到br0上 #2.ip地址分别为10.0.0.11、10.0.0.12(注意:两台虚拟机的mac不能相同) #3.将这两台虚拟机的网关设置为10.0.0.1即br0的ip地址 #测试用vm1 ping 10.0.0.1可以ping通,用vm2 ping 10.0.0.1也可以ping通 #但是vm1 ping 不通vm2 #需要在宿主机中开启ipv4转发功能。编辑/etc/sysctl.conf修改内容为net.ipv4.ip_forward=1,然后执行sysctl -p使修改立即生效。 #开启后vm1和vm2即可ping通 #在nat表上添加SNAT转发功能即来自10.0.0.0/24的数据包且从eth0出去,将其源地址转换成192.168.50.150 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 192.168.50.150 #要实现SNAT功能,必须让filter表的FORWARD链允许转发 iptables -t filter -I FORWARD -p all -s 10.0.0.0/24 -j ACCEPT iptables -t filter -I FORWARD -p all -d 10.0.0.0/24 -j ACCEPT 或者将filter表FORWARD最后一条拒绝的链删除 iptables -D FORWARD 1 ------------------------------------------------------------------------- ------------------------------------------------------------------------- ###KVM DNAT配置过程,将宿主机的8022端口映射到客户机vm1的22端口 ------------------------------------------------------------------------- #重新启动iptables,恢复iptables配置 service iptables restart #设置宿主机iptables允许tcp8022端口通过 iptables -I INPUT -p tcp --dport 8022 -j ACCEPT #设置nat表的PREROUTING链,将访问192.168.50.150 tcp 8022端口的数据转发到10.0.0.11的22号端口 iptables -t nat -A PREROUTING -d 192.168.50.150 -p tcp -m tcp --dport 8022 -j DNAT --to-destination 10.0.0.11:22 #要实现SNAT功能,必须让filter表的FORWARD链允许转发 iptables -t filter -I FORWARD -p all -s 10.0.0.0/24 -j ACCEPT iptables -t filter -I FORWARD -p all -d 10.0.0.0/24 -j ACCEPT 或者将filter表FORWARD最后一条拒绝的链删除 iptables -D FORWARD 1 ------------------------------------------------------------------------- ------------------------------------------------------------------------- ###KVM DNAT配置过程,将宿主机的一个单独ip(如192.168.50.150)映射到客户机 #ip为10.0.0.11的vm1虚拟机上,即IP一对一映射 ------------------------------------------------------------------------- #重新启动iptables,恢复iptables配置 service iptables restart #设置nat表的PREROUTING链,将访问192.168.50.150的转发到10.0.0.11 iptables -t nat -A PREROUTING -d 192.168.50.150 -j DNAT --to-destination 10.0.0.11 #设置nat表的POSTROUTING链,将来自10.0.0.11的数据包的源地址转换成192.168.50.150 iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.11 -j SNAT --to-source 192.168.50.150 #要实现SNAT功能,必须让filter表的FORWARD链允许转发 iptables -t filter -I FORWARD -p all -s 10.0.0.0/24 -j ACCEPT iptables -t filter -I FORWARD -p all -d 10.0.0.0/24 -j ACCEPT 或者将filter表FORWARD最后一条拒绝的链删除 iptables -D FORWARD 1 ------------------------------------------------------------------------- ------------------------------------------------------------------------- ###KVM 扁平的网络模式(flat)配置过程,即将虚拟机分配一个内网ip一个外网ip ------------------------------------------------------------------------- #在宿主机上配置两个网卡eth0和eth1,eth0作为外网eth1作为内网 #如果是使用的是vmware workstation虚拟出的宿主机,eth0选用NAT网络eth1选用host-only网络 #将eth0不设置IP,eth1设置ip为192.168.80.150 #创建两个网桥br0和br1,将br1与eth0连接到一起 #使用virsh的iface-bridge命令非常方便,创建br1的同时再与eth0连接 iface-bridge eth0 br1 #注意:上面的命令有可能失败,因为如果安装了图形桌面的CentOS,NetworkManager接管网络, #需要将NetworkManager停掉,并重新启动network服务来接管网络服务 chkconfig NetworkManager off service NetworkManager stop service network restart #使用virsh创建虚拟机,在其配置文件中有两个网卡,注意mac地址要唯一 <interface type="bridge"> <mac address='06:64:12:00:00:54'/> <!--当前主机网桥的名称--> <source bridge="br0" /> <model type='virtio'/> </interface> <interface type="bridge"> <mac address='06:64:12:00:00:55'/> <!--当前主机网桥的名称--> <source bridge="br1" /> <model type='virtio'/> </interface> #在客户机中设置eth0的ip为192.168.50.200/24,网关为192.168.50.2 #在客户机中设置eth1的ip为10.0.0.11/24,不设置网关 ------------------------------------------------------------------------- virsh 两种模式:交换模式、非交互模式 suspend resume dumpxml KVM平台以存储池的形式对存储进行统一管理,所谓存储池可以理解为本地目录、通过远端磁盘阵列(iSCSI、NFS)分配过来磁盘或目录,当然也支持各类分布式文件系统。 存储池(Storage pools)是放置虚拟机的存储位置,可以是本地的,也可以是网络存储,具体的虚拟机实例放置在卷(Volume)上。 KVM创建的存储池可以理解为一种映射关系,即将某一块挂接至宿主机器上的存储空间形成可被KVM使用的逻辑存储池,以方便虚拟主机的管理。 定义一个存储池 pool-define-as images-pool dir - - - - /cloud/images/pool 查看已定义的存储池 pool-list --all 建立基于文件夹的存储池 pool-build images-pool 启用存储池 pool-start images-pool 设置存储池自动运行 pool-autostart images-pool 查看存储池信息 pool-info images-pool 已xml格式显示存储池信息 pool-dumpxml images-pool 通过XML创建一个存储池 先创建一个test-pool.xml <pool type='dir'> <name>test-pool</name> <source> </source> <target> <path>/cloud/imgs</path> <permissions> <mode>0755</mode> <owner>0</owner> <group>0</group> </permissions> </target> </pool> pool-define test-pool.xml pool-build test-pool pool-start test-pool pool-dumpxml test-pool 创建卷 vol-create-as images-pool billstudy-centos.img 8G --format qcow2 查看存储池里面的卷信息 vol-list images-pool 查看某个卷的信息 vol-info billstudy-centos.img images-pool 更详细卷的信息 vol-dumpxml billstudy-centos.img images-pool 关于KVM的快照,如果没有快照的话,虚拟机也就失去了很大的作用。 创建快照 snapshot-create-as --domain vm03 --name 2015-02-19 --description "mv03 snap" 查看快照 snapshot-list vm03 查看快照配置 snapshot-current vm03 回复快照位置 snapshot-revert vm03 2015-02-19 删除快照 snapshot-delete vm03 2015-02-19 获取帮助 help snapshot QEMU monitor是QEMU与用户交互的一种控制台,一般用于为QEMU模拟器提供较为复杂的功能, QEMU monitor的切换 "Ctrl + Alt + 2" --> QEMU monitor状态 "Ctrl + Alt + 1" --> 客户机标准显示窗口 查看帮助信息 help/? [cmd] help savevm 或 ? savevm 显示系统命令状态:info 查看QEMU的版本信息 info versions 查看当前QEMU是否有KVM的支持 info kvm info name info status 查看客户机各个vCPU的信息 info cpus 查看块设备信息,如硬盘、软盘、光驱等 info block 查看客户机的网络配置信息 info network 显示当前系统中已保存的客户机快照信息 info snapshots 查看当前客户机的迁移状态 info migrate 显示当前客户机的VNC状态 info vnc 查看QEMU monitor中命令执行的历史 info history 创建快照 savevm snap20150406 恢复快照 loadvm snap20150406 删除快照 delvm snap20150406 ------------------------------------------------------------------------- ###虚拟机动态迁移 ------------------------------------------------------------------------- 安装NFS并使用NFS网络存储 动态迁移:将客户机从源宿主机 -> 目的宿主机 注意:都要挂载NFS 1.在源宿主机上挂载NFS 2.在源宿主机上启动虚拟机 3.在目的宿主机上挂载NFS 4.在目的宿主机上启动虚拟机 5.关闭目的宿主机的防火墙或开启相应端口 /usr/libexec/qemu-kvm -m 4096 -smp 1 -incoming tcp:0:8888 /mnt/storage/centos.qcow2 -vnc :1 & -incoming 这个参数使qemu-kvm进程进入到迁移监听模式 tcp:0:8888 这个参数表示在8888端口上建立一个TCP Socket连接用于接收来自源宿主机动态迁移的内容,"0"表示允许来自任何主机的连接 5.在源宿主机上切换到QEMU monitor,然后执行迁移命令 migrate tcp:192.168.50.160:8888 6.查看迁移结果 使用virsh进行热迁移 migrate centos-nfs --live qemu+ssh://192.168.50.160/system --unsafe #出现错误1 error: internal error Attempt to migrate guest to the same host 564d46b4-6d6b-2a13-3f81-bb970716d517 sed -i "/#host_uuid/ahost_uuid = \"`uuidgen`\"" /etc/libvirt/libvirtd.conf #出现错误2 error: Unable to resolve address 'kvm02.billstudy.com' service '49152': No address associated with hostname vi /etc/hosts 192.168.50.150 kvm01.billstudy.com 192.168.50.160 kvm02.billstudy.com
版权声明:本文为博主原创文章,未经博主允许不得转载。
KVM 【SNAT/DNAT2种配置实现以及扁平化网络模式(flat)实现/virsh2种动态迁移实现】
原文地址:http://blog.csdn.net/u010811257/article/details/47049465