CloudStack 隔离网络VM的创建与VM通信
来源:互联网 发布:电气常用数据手册 编辑:程序博客网 时间:2024/05/22 16:45
原文地址:http://www.wangdk.com/?p=63
下面整理的内容都是在CloudStack的Advance Zone 中创建隔离的来宾网络(不是VPC中的网络),vlan id :305,VM 模板为 ubuntu 10.04,
流程图
下图为整理的创建VM以及VM通信的主要流程。
看到流程图,就应该大体清楚是怎么回事了,再说一下自己的一些总结,不一定正确,如觉得有异议,可以讨论
验证过程遇到的问题及结论
1、 由于每个隔离的来宾网络,都有一个单独vrouter虚拟机提供gateway服务,不同的vlan,可以有相同的subnet。
2、当使用隔离的来宾网络创建VM时,会为该网络创建一个VRouter 虚拟机,会在VRouter所在的主机以及新建的VM所在的主机穿件vlan接口,如下图所示:(系统为该网 络分配vlan id:305,该隔离网络为 192.168.1.1/24)
2.1 在隔离网络中创建虚拟机时,首先创建该网络对应的vrouter 虚拟机,该vrouter虚拟机对应的网卡信息为:
[[Nic:Public-10.41.2.233-vlan://untagged], [Nic:Guest-192.168.1.1-vlan://305], [Nic:Control-169.254.3.76-null]]
2.2 将将要新建的VM的mac地址和IP 配置到Vrouter虚拟机
执行函数:
com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource.execute(DhcpEntryCommand)
执行的脚本dhcp_entry.sh,最终执行的脚本为vrouter 虚拟机上的:/root/edithosts.sh (该脚本主要是配置dhcp,该文不做说明)
2.3 创建VM,此时携带的网卡信息:[Nic:Guest-192.168.1.113-vlan://305],但是该IP为被使用,虚拟机的IP从Vrouter 虚拟机获 取(根据新建VM的mac地址获取)
2.4
在启动VM的时候会去在host主机上创建vlan接口:函数:
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.createVifs(VirtualMachineTO, LibvirtVMDef)
获取vlanid使用脚本modifyvlan.sh (传入参数 (305,eth0,breth0-305,vlan)在host创建vlan接口(breth0-305,eth0.305)
其中305 为该网络的vlanid,eth0 为主机上 private network对应的物理接口
传递给agent的nic参数截图:
2.5 脚本modifyvlan.sh 中的重要代码
vconfig set_name_type DEV_PLUS_VID_NO_PAD 设置命名格式
vconfig add $pif $vlanId //($pif=eth0 $vlanId-305) eth0网口增加vlan 305
brctl addbr $vlanBr //($vlanBr=br0eth0-305) 增加网桥br0eth0-305
brctl addif $vlanBr $vlanDev //($vlanBr=br0eth0-305 $vlanDev=eth0.305) 将eth0.305 作为网桥br0eth0-305的一个端口,即:所有目的地为eth0.305的流量,都会被当做目的地为br0eth0-305,同时,当流量通过br0eth0-305流出时,所有流量都会被当做从eth0.305 网口流出。
- CloudStack 隔离网络VM的创建与VM通信
- CloudStack 隔离网络VM的创建与VM通信
- cloudstack 创建与删除VM流程
- CloudStack 创建VM 源码流程分析
- CloudStack 创建VM 源码流程分析
- CloudStack VM运行状态的监控-Management
- cloudstack VM的高可用(HighAvailability)
- CloudStack VM系统被还原的原因
- VM Guest与Host之间的通信
- vm的网络设置
- 宿主机与vm通信
- VM workstation 与 VM vSphere的区别
- 无线网络与VM网络设置
- cloudstack内部的VM HA和Host HA
- vm的cpu通过cgroup来隔离
- vm网络
- vm-vm网络配置问题
- VM虚拟机与宿主机网络互联的方法
- 深入探索Java-数据类型
- How to get started with WebRTC
- Android AsyncTask实现一个线程操作完成后启动另一个线程
- 移动平台插件库--自定义滚动插件
- mysql merge表介绍
- CloudStack 隔离网络VM的创建与VM通信
- 查询postfix版本
- JDBC之addBatch运用实例
- Mysql中count(*),DISTINCT的使用方法和效率研究
- js ZeroClipboard 拷贝文本到剪贴板
- boost.锁
- 关于ROWNUM .
- 关于位图边缘的检测定位
- 设计模式之组合模式