KVM 【SNAT/DNAT2种配置实现以及扁平化网络模式(flat)实现/virsh2种动态迁移实现】

-------------------------------------------------------------------------
###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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 18:56:07

KVM 【SNAT/DNAT2种配置实现以及扁平化网络模式(flat)实现/virsh2种动态迁移实现】的相关文章

Docker扁平化网络设计与实现的方法步骤详解

研发背景 众所周知,Docker容器跨主机互访一直是一个问题,Docker官方为了避免网络上带来的诸多麻烦,故将跨主机网络开了比较大的口子,而由用户自己去实现.目前Docker跨主机的网络实现方案也有很多种,主要包括端口映射.ovs. fannel等. 但是这些方案都无法满足我们的需求:端口映射服务内的内网IP会映射成外网的IP,这样会给开发带来困惑,因为他们往往在跨网络交互时是不需要内网IP的:而ovs与fannel则是在基础网络协议上又包装了一层自定义协议,这样当网络流量大时,却又无端的增加

扁平化设计:赶一种叫“简约”的时髦

人可以说是一种受感官支配的动物,我们被食物的香味吸引,被悦耳的音乐吸引,更容易吸引我们的是透过视觉看到的东西.因此人也可以说是一种视觉动物,我们很容易通过视觉来判断很多的东西,美丑甚至是善恶.再进一步来说,色彩是抓住我们视觉的核心. 互联网技术发达的今天,我们打开电脑.手机就能看到许多的网站.应用,最先吸引我们的应该不是它们的性能而是色彩.因此对于网站设计来说,界面色彩的设计也是不得马虎的重要环节. 说到设计,扁平化设计应该算是现下的设计热门词,无论是一个网站还是一个应用程序,扁平化和极简的设计

扁平化设计2.0

时至今日,扁平化已不再是流行一时的设计风潮,而是一种美学风格.扁平化大胆的用色,简洁明快的界面风格一度让大家耳目一新,当它对元素效果抛弃的如此彻底之际,它又将效果捡起来,改装成另一番模样,使得扁平化进化为扁平化2.0. 扁平化设计特质 对于扁平化的定义,依然没有一个固定范式,但概括起来有下面四个特征: 1)没有多余的效果,例如投影.凹凸或渐变等 2)使用简洁风格的元素和图标 3)大胆丰富且明亮的配色风格 4)尽量减少装饰的极简设计 扁平化所追随的细节依然不变,然而这些"规范"开始松懈了

扁平化设计的历史

[摘要]"扁平化设计"是一种设计风格术语,它抛弃任何能使得作品突显3D效果的特性. 如今一提到网站设计,就会不可避免地碰到"扁平化设计"(flat design)这个词.近几年扁平化设计趋势风生水起,也受到很多大公司的青睐. 但扁平化设计来源是哪里?为什么它风靡网站设计?在设计中,我们只有知道一种风格和技术的来源以及它背后的历史,我们在使用这种美学风格时才能更加得心应手.下面让我们追根溯源,了解扁平化设计的前世今生. 究竟什么是扁平化设计 对于没接触过的人来说,&q

扁平化设计发展

[PConline 欣赏]现在说起网页.UI设计,都会谈论扁平化设计(Flat Design)这个概念,一些大型公司和组织在网页设计都将风格偏向了它,而iOS 7又推上了一个高峰. 在苹果与微软的青睐与推动下,扁平化设计日益盛行,但是很少有人知道扁平化设计这个概念由何而来?为什么将这个概念用在了网页设计上?对于设计的新概念来说,搞清楚一个风格和一项技术的历史背景很重要,因为在我们觉得是否采用这个新的设计概念的时候,对它来由的了解可以帮助我们做出更明智的决定. 到底什么是扁平化设计? 对于那些从来

扁平化设计的流行配色方案

扁平化设计的流行配色方案 扁平化设计从2012年开始就已经流行起来,我觉得flat design有点类似极简主义设计,同样是追求简洁.简约,不同的是,扁平化设计是一项运用简单效果,或者是刻意进行一个不使用三维效果的设计方案.一个好的扁平化设计必然不可能出现阴影.浮雕和渐变等效果. 扁平化设计看上去非常简单.直观,并且使用方便,所以在手机界面和网页设计中变得越来越受欢迎. 让我们来学习一下,如何进行扁平化设计吧. 什么是扁平化设计?<探讨扁平化设计之美><使用扁平化设计的网页设计欣赏>

扁平化2.0

时至今日,扁平化已不再是流行一时的设计风潮,而是一种美学风格.扁平化大胆的用色,简洁明快的界面风格一度让大家耳目一新,当它对元素效果抛弃的如此彻底之际,它又将效果捡起来,改装成另一番模样,使得扁平化进化为扁平化2.0. 扁平化设计特质 对于扁平化的定义,依然没有一个固定范式,但概括起来有下面四个特征: 1)没有多余的效果,例如投影.凹凸或渐变等 2)使用简洁风格的元素和图标 3)大胆丰富且明亮的配色风格 4)尽量减少装饰的极简设计 扁平化所追随的细节依然不变,然而这些“规范”开始松懈了.随着扁平

扁平化2.0:扁平化设计以前从未有的6个设计风格

时至今日,扁平化已不再是流行一时的设计风潮,而是一种美学风格.扁平化大胆的用色,简洁明快的界面风格一度让大家耳目一新,当它对元素效果抛弃的如此彻底之际,它又将效果捡起来,改装成另一番模样,使得扁平化进化为扁平化2.0. 扁平化设计特质 对于扁平化的定义,依然没有一个固定范式,但概括起来有下面四个特征: 没有多余的效果,例如投影.凹凸或渐变等 使用简洁风格的元素和图标 大胆丰富且明亮的配色风格 尽量减少装饰的极简设计 扁平化所追随的细节依然不变,然而这些“规范”开始松懈了.随着扁平化进化到2.0时

扁平化设计五大原则

扁平化设计五大原则 摘要:这段时间以来,扁平化设计一直是设计师之间的热门话题.那什么是扁平呢?designmodo设计师Carrie Cousins总结扁平化的五大特点,并且介绍了“准”扁平化设计理念及其优缺点. 这段时间以来,扁平化设计一直是设计师之间的热门话题.每个人都有自己的独特认识,有的非常喜欢而有的人却恰恰相反.那什么是扁平呢? designmodo设计师Carrie Cousins在网站上介绍了扁平化的五大特点,以及“准”扁平化设计的优缺点.CSDN编译如下. Cousins表示他虽