ZStack 1.0版本今天发布,欢迎大家下载试用。在该版本中,我们加入了以下新功能。
新增功能
1.Flat Network Provider,分布式DHCP
2.User Data,支持cloud-init
3.本地存储的磁盘迁移
4.ISO API,支持加载/卸载ISO,调整VM启动顺序
5.Spice支持
6.i18n,支持中文、繁体中文、英文
7.VM状态实时捕获
8.资源删除策略控制
9.CPU型号Passthrough,支持嵌套虚拟化
10.22M超小试用镜像
11.中文用户手册
安装升级
1.安装
2.升级
3.Virtual Router Provider升级到Flat Network Porvider
1. Flat Network Provider
Flat Network Provider是一种新的网络服务提供模式,它提供DHCP和Userdata服务。相对于已有的Virtual Router Provider,Flat Network Provider较大的优势在于不需要启动一个Virtual Router虚拟机就可以为VM提供DHCP服务,这大大简化了部署一个扁平网络的复杂度。此外,由于采用了分布式DHCP系统,Flat Network Provider不存在传统DHCP系统的单点失败情况,因为每个物理机上都会有一个DHCP服务器服务运行在该物理机上的VM。在高并发创建或启动VM的时候,DHCP的负载会被分发到不同物理机上去,大大提供了系统整体的并发性。下图是分布式DHCP系统的一个总体架构图:

1.1 使用Flat Network Provider
当你在创建一个L3网络的时候,在最后一步选择网络服务时做如下操作:

1.选择“Flat Network Service Provider"做为网络服务提供商
2.选择DHCP服务
3.点击“添加”按钮
4.重复步骤2和3添加user data服务
你可以将Flat Network Provider和Virtual Router Provider混合使用
尽管Flat Network Provider的主要目的是为扁平网络情况提供DHCP服务器,你也可以讲它跟已有的Virtual Router Provider混合使用。 例如使用Flat Network Provider提供DHCP,用Virtual Router Provider提供DNS/SNAT等其他服务。
2. User Data
标准的Cloud-init在该版本中得到支持。要使用user data,你需要在VM的操作系统中安装cloud-init包。User data使用了ZStack的系统标签(System Tags)机制实现,其格式为:
userdata::{the content}
例如:
userdata::groups:n - ubuntu: [foo,bar]n - cloud-usersnn# Add users to the system. Users are added after groups are added.nusers:n - defaultn - name: foobarn gecos: Foo B. Barn primary-group: foobarn groups: usersn selinux-user: staff_un expiredate: 2012-09-01n ssh-import-id: foobarn lock-passwd: falsen - name: barfoon gecos: Bar B. Foon sudo: ALL=(ALL) NOPASSWD:ALLn groups: users, adminn ssh-import-id: Nonen lock-passwd: truen ssh-authorized-keys:n - <ssh pub key 1>n - <ssh pub key 2>n - name: cloudyn gecos: Magic Cloud App Daemon Usern inactive: truen system: true
你应该已经注意到了上面的user data中包含了一个非常长的字符串,它其实是cloud-init的YAML配置文件minify后的结果。因为ZStack的CLI工具只能接受单行字符串,在传递cloud-init YAML配置的时候你需要先把它变成一个单行的字符串。你可以使用下面脚本:
sed ':a;N;$!ba;s/n/n/g' YAML文件路径
输出的长字符串会打印到屏幕,你可以复制黏贴。
2.1 使用User Data
当你在VM的操作系统中安装完cloud-init包后,我们强烈建议你把它保存成一个模板,这样从该模板新建的VM都会有cloud-init的包。使用下面步骤安装cloud-init包:
yum install cloud-init 或 apt-get install cloud-init
在/etc/cloud/cloud.cfg文件中添加如下内容:
datasource_list:
- CloudStack
cloud-init支持AWS,CloudStack,OpenStack多种获取user data的方式,ZStack使用的是CloudStack方式,即用DHCP服务器提供user data。
2.1.1 添加User Data
你可以在新建VM的时候指定user data:
CreateVmInstance name=vm
imageUuid=d720ff0c60ee48d3a2e6263dd3e12c33
instanceOfferingUuid=76789b62aeb542a5b4b8b8488fbaced2
l3NetworkUuids=37d3c4a1e2f14a1c8316a23531e62988,05266285f96245f096f3b7dce671991d defaultL3NetworkUuid=05266285f96245f096f3b7dce671991d systemTags='userdata::groups:n - ubuntu: [foo,bar]n - cloud-usersnn# Add users to the system. Users are added after groups are added.nusers:n - defaultn - name: foobarn gecos: Foo B. Barn primary-group: foobarn groups: usersn selinux-user: staff_un expiredate: 2012-09-01n ssh-import-id: foobarn lock-passwd: falsen - name: barfoon gecos: Bar B. Foon sudo: ALL=(ALL) NOPASSWD:ALLn groups: users, adminn ssh-import-id: Nonen lock-passwd: truen ssh-authorized-keys:n - <ssh pub key 1>n - <ssh pub key 2>n - name: cloudyn gecos: Magic Cloud App Daemon Usern inactive: truen system: true'
或者对一个已经创建的VM指定user data:
CreateSystemTag resourceUuid=303bf80af28c4e23b9b8c20d4267356b
resourceType=VmInstanceVO tag='userdata::groups:n - ubuntu: [foo,bar]n - cloud-usersnn# Add users to the system. Users are added after groups are added.nusers:n - defaultn - name: foobarn gecos: Foo B. Barn primary-group: foobarn groups: usersn selinux-user: staff_un expiredate: 2012-09-01n ssh-import-id: foobarn lock-passwd: falsen - name: barfoon gecos: Bar B. Foon sudo: ALL=(ALL) NOPASSWD:ALLn groups: users, adminn ssh-import-id: Nonen lock-passwd: truen ssh-authorized-keys:n - <ssh pub key 1>n - <ssh pub key 2>n - name: cloudyn gecos: Magic Cloud App Daemon Usern inactive: truen system: true'
你可以用QuerySystemTag获取一个VM的user data,例如:
QuerySystemTag resourceUuid=303bf80af28c4e23b9b8c20d4267356b
tag~=userdata%
这里的resourceUuid是VM的UUID。
2.1.2 删除user data
你可以用DeleteTag从一个VM上删除user data,例如:
DeleteTag uuid=user_data_tag_uuid
例如:
DeleteTag uuid=7813d03bb85840c489789f8df3a5915b
这里的UUID是system tag的UUID,你可以用获取user data一节的方法拿到。
2.1.3 更新user data
你可以用UpdateSystemTag更新一个VM上已有的user data,例如:
UpdateSystemTag uuid=762c3047e05f471ea3fce13f808a50be
tag='userdata::groups:n - ubuntu: [foo,bar]n - cloud-usersnn# Add users to the system. Users are added after groups are added.nusers:n - defaultn - name: foobarn gecos: Foo B. Barn primary-group: foobarn groups: usersn selinux-user: staff_un expiredate: 2012-09-01n ssh-import-id: foobarn lock-passwd: falsen - name: barfoon gecos: Bar B. Foon sudo: ALL=(ALL) NOPASSWD:ALLn groups: users, adminn ssh-import-id: Nonen lock-passwd: truen ssh-authorized-keys:n - <ssh pub key 1>n - <ssh pub key 2>n - name: cloudyn gecos: Magic Cloud App Daemon Usern inactive: truen system: true'
这里的UUID是system tag的UUID,你可以用获取user data一节的方法拿到。
2.2 注入SSH公钥
SSH公钥是用户使用user data最常见的用法,为此我们特别提供了一个专门的system tag,格式为:
sshkey::{content}
例如:
sshkey::ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQC5x3AoWuiZawxXoBxEcOhhdVAST4kJA/cQ2zGnh3yZ/KBU+VILQHTkbNWAaRw3q0UtfpLfVj/KoPFr43qjGF+ud8B/rD7stsAvbNVdms81aBDAFZyiN7dhlwTK+XvCMhl4RxHUItm7+Y7gzb8jTHPoqlPzAw4r8enqhNf9ABG+kaXIDa0FPhVaMPoLzHWjTe34ONIBlxsY/y1Zle49vPVYS7oAHQTc7ly7bnGXffNJ18uF5M7HPUgsIDum8KICa2LmnXJeB2M9XZtXtJUdR1ZKXeQpRtikAm3G3CwFkDxWnx31dGr0lLa2aZ88LQ2iP8nb2NK58aKb4I9Aq19k44Rl root@yyy
你可以在创建VM的时候指定公钥,例如:
CreateVmInstance name=vm
imageUuid=d720ff0c60ee48d3a2e6263dd3e12c33
instanceOfferingUuid=76789b62aeb542a5b4b8b8488fbaced2
l3NetworkUuids=37d3c4a1e2f14a1c8316a23531e62988,05266285f96245f096f3b7dce671991d defaultL3NetworkUuid=05266285f96245f096f3b7dce671991d systemTags='sshkey::ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5x3AoWuiZawxXoBxEcOhhdVAST4kJA/cQ2zGnh3yZ/KBU+VILQHTkbNWAaRw3q0UtfpLfVj/KoPFr43qjGF+ud8B/rD7stsAvbNVdms81aBDAFZyiN7dhlwTK+XvCMhl4RxHUItm7+Y7gzb8jTHPoqlPzAw4r8enqhNf9ABG+kaXIDa0FPhVaMPoLzHWjTe34ONIBlxsY/y1Zle49vPVYS7oAHQTc7ly7bnGXffNJ18uF5M7HPUgsIDum8KICa2LmnXJeB2M9XZtXtJUdR1ZKXeQpRtikAm3G3CwFkDxWnx31dGr0lLa2aZ88LQ2iP8nb2NK58aKb4I9Aq19k44Rl root@yyy'
也可以给一个已有的VM指定公钥,例如:
CreateSystemTag resourceType=VmInstanceVO
resourceUuid=606d9a2fa723407c93438789eaf72cea tag="sshkey::ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdlfgEu4SmgAXaEhLtNljm4cqowdFSyOH7NtheqzZROaRNRJOYKCABUZLmsLv1pl3Av+m1vUUILPWNymxdCnhuaxl/vFtvyWrLChKR8s2Cpl24uFpvHaWO6JLd/RnSwj8LCsCreJ3Twq77T9MCwDVl15WNjn3WKuPfFKxmW7gQTDyDK1XX35n7RYSadurdVNmJTAsQWmszmGeBDVO6U7spRtH7nNrNAMVjaOHrPp5NbMRBVCyHfj1UY71bnIdVCa2mY/RtjIkcj4JNBaQ0JPnP1jw4Ig8WVkjn74T7U4chUHmu8jzwhv+++F7EGLSNdb85RKmY5IdHDd+dRuK3Rx67 root@bji-bm-node3"
你可以用QuerySystemTag获得一个VM的公钥,例如:
QuerySystemTag resourceUuid=303bf80af28c4e23b9b8c20d4267356b
tag~=sshkey%
这里的resourceUuid是VM的UUID
2.2.1 删除公钥
你可以用DeleteTag从VM上删除一个公钥:
DeleteTag uuid=user_data_tag_uuid
例如:
DeleteTag uuid=7813d03bb85840c489789f8df3a5915b
这里的UUID是system tag的UUID,你可以用获取公钥一节的方法拿到。
2.2.2 更新公钥
你可以使用UpdateSystemTag更新一个VM的公钥,例如:
UpdateSystemTag uuid=762c3047e05f471ea3fce13f808a50be
tag='sshkey::ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdlfgEu4SmgAXaEhLtNljm4cqowdFSyOH7Nthe qzZROaRNRJOYKCABUZLmsLv1pl3Av+m1vUUILPWNymxdCnhuaxl/vFtvyWrLChKR8s2Cpl24uFpvHaWO6JLd/RnSwj8LCsCreJ3Twq77T9MCwDVl15WNjn3WKuPfFKxmW7gQTDyDK1XX35n7RYSadurdVNmJTAsQWmszmGeBDVO6U7spRtH7nNrNA MVjaOHrPp5NbMRBVCyHfj1UY71bnIdVCa2mY/RtjIkcj4JNBaQ0JPnP1jw4Ig8WVkjn74T7U4chUHmu8jzwhv+++F7EGLSNdb85RKmY5IdHDd+dRuK3Rx67 root@bji-bm-node3'
这里的UUID是system tag的UUID,你可以用获取公钥一节的方法拿到。
你或许需要重启VM让公钥生效
如果你是给一个已有的VM创建公钥或者更新公钥,你需要做如下步骤:
删除在VM中删除已有的cloud-init数据,rm -rf /var/lib/cloud
- 重启VM
对于给新建的VM指定公钥,你无需做这些步骤。
3. 本地存储的磁盘迁移
在本版本中,你可以在本地存储的不同物理机间迁移虚拟机的磁盘(volume),解决使用本地存储虚拟机不能迁移的的问题。
3.1 迁移磁盘
你可以用LocalStorageMigrateVolume迁移VM的root volume和data volume。例如:
LocalStorageMigrateVolume
volumeUuid=cdbda88fef1a42f386ff111b729159d9
destHostUuid=252d484d93e64fea946148097162b60f
3.2 迁移规则
1.如果迁移的是root volume,需要先关闭虚拟机
2.如果迁移的是data volume,需要先将data volume从虚拟机卸载(detach)
3.如果volume上有快照(snapshots),快照会被一并迁移
3.3 使用磁盘迁移迁移VM
你可以使用磁盘迁移功能在不同物理机上冷迁移虚拟机:
1.关闭虚拟机
2.将虚拟机的root volume迁移到目的物理机
3.启动虚拟机
ZStack实际是支持本地存储的虚拟机热迁移的。但在我们的压力测试中,我们发现KVM的带存储热迁移不稳定。我们在一个虚拟机中做一次Linux内核编译,并在这个过程中做带存储热迁移,迁移完成后重启虚拟机,发现虚拟机磁盘损坏。为了保护用户数据,我们在API层面关闭了虚拟机带存储热迁移的功能。
4. ISO API
在该版本中,你可以使用API向一个VM加载或卸载一个ISO,并且改变VM的启动设备顺序。
4.1 添加ISO
你可以用AttachIsoToVmInstance向一个VM添加一个ISO,例如:
AttachIsoToVmInstance
vmInstanceUuid=d4a83b0394b44482bbcb964b4dbe991c
isoUuid=815dcd3d83dd429298ba2c9b1685c1ad
4.2 卸载ISO
你可以用DetachIsoFromVmInstance从一个VM上卸载一个ISO,例如:
DetachIsoFromVmInstance
vmInstanceUuid=d4a83b0394b44482bbcb964b4dbe991c
这里的uuid是VM的UUID。
4.3 设置启动设备顺序
你可以用SetVmBootOrder设置VM的启动设备顺序,例如:
SetVmBootOrder uuid=303bf80af28c4e23b9b8c20d4267356b
bootOrder=HardDisk,CdRom
这里的uuid是VM的UUID。
合法的启动顺序包括:HardDisk和CdRom
4.4 获得启动设备顺序
你可以用GetVmBootOrder获得VM的启动设备顺序,例如:
GetVmBootOrder uuid=303bf80af28c4e23b9b8c20d4267356b
这里的uuid是VM的UUID。
4.5 设备启动顺序规则
1.如果使用ISO创建一个VM,则该VM的启动设备自动被设置为CdRom。当操作系统安装完成并重启后,启动顺序自动改成HardDisk
2.如果使用template创建一个VM,改VM的启动设备自动被设置为HardDisk
3.加载一个ISO到一个VM不改变其启动顺序。如果需要,你可以用SetVmBootOrder更改
5. Spice支持
在该版本中,我们支持Spice协议作为VM图形终端协议。你可以通过更改全局选项进行设置,例如:
UpdateGlobalConfig category=kvm name=vm.consoleMode value=spice
合法的协议包括:vnc和spice
目前ZStack还没有针对spice的console proxy,你需要下载一个spice客户端直接连接VM在物理机上的spice端口。你可以用下面的API来获得物理机的IP和VM的spice端口号:
>>>GetVmConsoleAddress uuid=9cd68155905e47b5b0698ecba9126242
{
"hostIp": "192.168.199.136",
"port": 5902,
"protocol": "spice",
"success": true
}
这里的uuid是VM的UUID。感谢来至武汉纺织大学的Nan Su(fengcai_ji@163.com)同学贡献了这个功能。
6. I18N支持
在该版本中,我们支持多语言版本,目前支持英文和中文,你可以通过点击语言图标进行切换。
感谢来自武汉纺织大学的Nan Su(fengcai_ji@163.com), Zhiqiang Hu(1063751150@qq.com)u Qi Wei(804470533@qq.com), Yu Chen(ppak@sohu.com), Wanling Xue(1962670706@qq.com)贡献了该功能!
感谢台湾百原科技提供繁体版UI翻译!
7. VM状态的实时捕获
在该版本中,我们支持VM状态的实时捕获。如果用户绕过ZStack对VM进行了操作,其状态会实时的发送回管理节点进行更新。也就是说你可以在VM内部 通过halt命令来关闭虚拟机,而不用通过ZStack UI。虽然不推荐,但如果你用virsh关闭或者启动了一个VM,其在ZStack中的状态也会被实时更新。
8. 资源删除策略控制
从该版本开始,我们对一些关键资源实现了删除策略控制,用户可以控制资源的删除方式,以防误删除。目前支持删除策略控制的资源包括:虚拟机、磁盘(volume)、镜像(image)。目前支持的删除策略包括:Direct(直接删除), Delay(延时删除),Never(从不删除)三种。默认的策略是Delay。
8.1 策略规则
1.Direct: 资源会直接被物理删除,并在数据库中删除,无法恢复。
2.Delay:资源会首先在数据库中被标记成删除,但不会物理删除。在一定的时间内,用户可以使用API对资源进行恢复,在此期间资源仍然物理存在,所以它还会占用物理空间(例如磁盘空间)。在超过一定时间后,资源会被物理删除,无法再恢复。
3.Never:资源数据库中标记成删除,永远不会被物理删除,一直占用物理空间。
8.2 虚拟机删除策略
你可以更改虚拟机的删除策略,例如:
UpdateGlobalConfig category=vm name=deletionPolicy value=Direct
如果删除策略是Delay,你可以指定延时删除的时间,例如:
UpdateGlobalConfig category=vm name=expungePeriod value=3600
单位为秒。在上面的例子中,虚拟机在被标记成删除后的1个小时后被测地删除。
如果删除策略是Delay,ZStack会周期性的去检查资源是否应该被物理删除,你可以控制周期性轮询的时间:
UpdateGlobalConfig category=vm name=expungeInterval value=3600
单位为秒
你也可以恢复一个处于删除状态的虚拟机:
RecoverVmInstance vmInstanceUuid=8c4c4c0bbac7441fb056d0d6e2168996
8.3 镜像删除策略
跟虚拟机一样,你可以改变相应的设置:
UpdateGlobalConfig category=image name=deletionPolicy value=Direct
UpdateGlobalConfig category=image name=expungePeriod value=3600
UpdateGlobalConfig category=image name=expungeInterval value=3600
也可以恢复一个处于删除状态的镜像:
RecoverImage imageUuid=8c4c4c0bbac7441fb056d0d6e2168996
如果镜像存在于多个备份存储,你只想恢复在某些备份存储上的镜像,可以通过额外参数指定:
RecoverImage imageUuid=8c4c4c0bbac7441fb056d0d6e2168996 backupStorageUuids=36c27e8ff05c4780bf6d2fa65700f22e
8.4 磁盘删除策略
跟虚拟机一样,你可以通过改变相应的设置:
UpdateGlobalConfig category=volume name=deletionPolicy value=Direct
UpdateGlobalConfig category=volume name=expungePeriod value=3600
UpdateGlobalConfig category=volume name=expungeInterval value=3600
你也可以恢复一个处于删除状态数据磁盘(data volume):
RecoverDataVolume uuid=36c27e8ff05c4780bf6d2fa65700f22e
根磁盘(root volume)的恢复是在恢复虚拟机的时候自动恢复。
9. CPU型号Paasthrough(支持嵌套虚拟化)
你可以通过改变全局配置让虚拟机获得跟物理机CPU相同的型号:
UpdateGlobalConfig category=kvm name=vm.cpuMode value=host-model
支持三种模式:
1.none: CPU型号为QEMU模拟器
2.host-model:CPU类型为物理机CPU类型
3.host-passthrough:CPU型号跟物理机CPU完全一样
当模式为host-model和host-passthrough时,虚拟机可以获得嵌套虚拟化功能。
使用该功能可能会影响虚拟机热迁移。因为热迁移时会检查虚拟机CPU型号,如果两台物理机的CPU型号不同,会导致虚拟机热迁移失败。
10. 超小试用镜像
在1.0我们为ZStack专门构建了一个只有22M的测试镜像,支持网络、SSHD,用户可以用它来做一些基本测试。相比于之前的ttylinux,该镜像支持了ACPID,支持优雅关机。下载链接:
感谢Robert Yang(@linuxer)提供该镜像!
11. 中文用户手册
用户手册已经完全汉化,可以访问ZStack中文用户手册
12. 安装
你可以通过下面方式安装:
wget http://download.zstack.org/releases/1.0/1.0.0/zstack-installer-1.0.0-0201.bin -O zstack-installer-1.0.0-0201.bin
bash zstack-installer-1.0.0-0201.bin -R aliyun
这里-R aliyun参数指定使用阿里云的源进行安装,你也可以使用-R 163使用网易的源。我们推荐使用阿里云的源
13. 升级
一如既往的,我们支持一键无缝升级:
wget http://download.zstack.org/releases/1.0/1.0.0/zstack-installer-1.0.0-0201.bin -O zstack-installer-1.0.0-0201.bin
bash zstack-installer-1.0.0-0201.bin -u
14. 用Flat Network Provider替换Virtual Router Provider
如果你的网络模式是扁平网络,并且使用的是Virtual Rotuer Provider作为网络提供商,你可以使用1.0的Flat Network Provider替换它,这样你就不再需要virtual router VM来充当DHCP服务器了。假定你要替换网络提供商的L3网络的UUID是1a82c2691978476fa6cefa36bb9d4bfd,参考以下步骤:
14.1 获得当前L3网络的网络提供商UUID
>>>QueryNetworkServiceL3NetworkRef l3NetworkUuid=1a82c2691978476fa6cefa36bb9d4bfd
{
"inventories": [
{
"l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"networkServiceProviderUuid": "5d21ea0f39c04d6fb68cfaf5a37db4ad",
"networkServiceType": "DNS"
},
{
"l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"networkServiceProviderUuid": "5d21ea0f39c04d6fb68cfaf5a37db4ad",
"networkServiceType": "DHCP"
}
],
"success": true
}
14.2 从L3网络上卸载Virtual Router Provider
>>>DetachNetworkServiceFromL3Network l3NetworkUuid=1a82c2691978476fa6cefa36bb9d4bfd networkServices='{"5d21ea0f39c04d6fb68cfaf5a37db4ad":["DHCP","DNS"]}'
{
"inventory": {
"createDate": "Jan 30, 2016 3:01:03 PM",
"dns": [
"8.8.8.8"
],
"ipRanges": [
{
"createDate": "Jan 30, 2016 3:01:04 PM",
"endIp": "192.168.201.199",
"gateway": "192.168.200.1",
"l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"lastOpDate": "Jan 30, 2016 3:01:04 PM",
"name": "ipr-dk7p",
"netmask": "255.255.252.0",
"startIp": "192.168.201.180",
"uuid": "ec5fd87dd80243fdabeeace847c04427"
}
],
"l2NetworkUuid": "9ec8cad681d1424fa7eda2447edae142",
"lastOpDate": "Jan 30, 2016 3:01:03 PM",
"name": "l3-etpz",
"networkServices": [],
"state": "Enabled",
"system": false,
"type": "L3BasicNetwork",
"uuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"zoneUuid": "4a3a78b1b9f049948b79cf9e667f0af2"
},
"success": true
}
注意这里的参数networkServices是一个map, key是第一步里返回的networkServiceProviderUuid,value是第一步里返回的networkServiceType
14.3 获得Flat Network Provider的UUID
>>>QueryNetworkServiceProvider type=Flat
{
"inventories": [
{
"attachedL2NetworkUuids": [
"9ec8cad681d1424fa7eda2447edae142"
],
"createDate": "Jan 30, 2016 11:56:32 AM",
"description": "Flat Network Service Provider",
"lastOpDate": "Jan 30, 2016 11:56:32 AM",
"name": "Flat Network Service Provider",
"networkServiceTypes": [
"DHCP",
"Userdata"
],
"type": "Flat",
"uuid": "17864f985e584a9ba4cd81de215212ce"
}
],
"success": true
}
14.4 获得承载L3网络的L2网络的UUID
>>>QueryL3Network fields=l2NetworkUuid, uuid=1a82c2691978476fa6cefa36bb9d4bfd
{
"inventories": [
{
"l2NetworkUuid": "9ec8cad681d1424fa7eda2447edae142"
}
],
"success": true
}
14.5 加载Flat Network Provider到L2网络
>>>AttachNetworkServiceProviderToL2Network l2NetworkUuid=9ec8cad681d1424fa7eda2447edae142 networkServiceProviderUuid=17864f985e584a9ba4cd81de215212ce
{
"inventory": {
"attachedL2NetworkUuids": [
"9ec8cad681d1424fa7eda2447edae142"
],
"createDate": "Jan 30, 2016 11:56:32 AM",
"description": "Flat Network Service Provider",
"lastOpDate": "Jan 30, 2016 11:56:32 AM",
"name": "Flat Network Service Provider",
"networkServiceTypes": [
"DHCP",
"Userdata"
],
"type": "Flat",
"uuid": "17864f985e584a9ba4cd81de215212ce"
},
"success": true
}
14.6 加载Flat Network Provider的服务到三层网络
>>>AttachNetworkServiceToL3Network l3NetworkUuid=1a82c2691978476fa6cefa36bb9d4bfd networkServices='{"17864f985e584a9ba4cd81de215212ce":["DHCP","Userdata"]}'
{
"inventory": {
"createDate": "Jan 30, 2016 3:01:03 PM",
"dns": [
"8.8.8.8"
],
"ipRanges": [
{
"createDate": "Jan 30, 2016 3:01:04 PM",
"endIp": "192.168.201.199",
"gateway": "192.168.200.1",
"l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"lastOpDate": "Jan 30, 2016 3:01:04 PM",
"name": "ipr-dk7p",
"netmask": "255.255.252.0",
"startIp": "192.168.201.180",
"uuid": "ec5fd87dd80243fdabeeace847c04427"
}
],
"l2NetworkUuid": "9ec8cad681d1424fa7eda2447edae142",
"lastOpDate": "Jan 30, 2016 3:01:03 PM",
"name": "l3-etpz",
"networkServices": [
{
"l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"networkServiceProviderUuid": "17864f985e584a9ba4cd81de215212ce",
"networkServiceType": "DHCP"
},
{
"l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"networkServiceProviderUuid": "17864f985e584a9ba4cd81de215212ce",
"networkServiceType": "Userdata"
}
],
"state": "Enabled",
"system": false,
"type": "L3BasicNetwork",
"uuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"zoneUuid": "4a3a78b1b9f049948b79cf9e667f0af2"
},
"success": true
}
14.7 删除virtualrouter ,删除virtual router offering
>>>QueryVirtualRouterVm
{ "inventories": [
{
"allVolumes": [
{
"createDate": "Jan 30, 2016 3:06:50 PM",
"description": "Root volume for VM[uuid:c5a966cb87d644649952daf683f89e26]",
"deviceId": 0,
"format": "qcow2",
"installPath": "/zstack_ps/rootVolumes/acct-36c27e8ff05c4780bf6d2fa65700f22e/vol-8eeaa9cb4c1045a2825f8815fed69d72/8eeaa9cb4c1045a2825f8815fed69d72.qcow2",
"lastOpDate": "Jan 30, 2016 3:06:59 PM",
"name": "ROOT-for-virtualRouter.l3.1a82c2691978476fa6cefa36bb9d4bfd",
"primaryStorageUuid": "4bff4e2d266f480ead596752d14ff3b5",
"rootImageUuid": "7bed05aa8ace4e5e8d6c55b284b66fb5",
"size": 467206656,
"state": "Enabled",
"status": "Ready",
"type": "Root",
"uuid": "8eeaa9cb4c1045a2825f8815fed69d72",
"vmInstanceUuid": "c5a966cb87d644649952daf683f89e26"
}
],
"allocatorStrategy": "LeastVmPreferredHostAllocatorStrategy",
"applianceVmType": "VirtualRouter",
"clusterUuid": "10409d3e33b249c19746022930a541c7",
"cpuNum": 1,
"cpuSpeed": 2,
"createDate": "Jan 30, 2016 3:06:50 PM",
"defaultRouteL3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"hostUuid": "415fa093b34e4a3d873368104b127115",
"hypervisorType": "KVM",
"imageUuid": "7bed05aa8ace4e5e8d6c55b284b66fb5",
"instanceOfferingUuid": "9cec7bd6324445a184351ffb7d32f970",
"lastHostUuid": "415fa093b34e4a3d873368104b127115",
"lastOpDate": "Jan 30, 2016 3:07:20 PM",
"managementNetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"memorySize": 536870912,
"name": "virtualRouter.l3.1a82c2691978476fa6cefa36bb9d4bfd",
"platform": "Linux",
"publicNetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"rootVolumeUuid": "8eeaa9cb4c1045a2825f8815fed69d72",
"state": "Running",
"status": "Connected",
"type": "ApplianceVm",
"uuid": "c5a966cb87d644649952daf683f89e26",
"vmNics": [
{
"createDate": "Jan 30, 2016 3:06:50 PM",
"deviceId": 0,
"gateway": "192.168.200.1",
"ip": "192.168.201.195",
"l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
"lastOpDate": "Jan 30, 2016 3:06:50 PM",
"mac": "fa:4c:01:68:77:00",
"metaData": "7",
"netmask": "255.255.252.0",
"uuid": "c44e856aa88a42bc85ec30ce8c334c6c",
"vmInstanceUuid": "c5a966cb87d644649952daf683f89e26"
}
],
"zoneUuid": "4a3a78b1b9f049948b79cf9e667f0af2"
}
],
"success": true
}
>>>DestroyVmInstance uuid=c5a966cb87d644649952daf683f89e26
{
"success": true
}
14.8 重连所有有VM运行的host
>>>QueryHost
{
"inventories": [
{
"availableCpuCapacity": 7180,
"availableMemoryCapacity": 1997570048,
"clusterUuid": "4282fb61aa55458ea160de138e130298",
"createDate": "Jan 30, 2016 2:51:13 PM",
"hypervisorType": "KVM",
"lastOpDate": "Jan 30, 2016 3:03:20 PM",
"managementIp": "192.168.200.187",
"name": "host1",
"state": "Enabled",
"status": "Connected",
"totalCpuCapacity": 7182,
"totalMemoryCapacity": 2098233344,
"username": "root",
"uuid": "402f8304a50c410486e023512492316b",
"zoneUuid": "4a3a78b1b9f049948b79cf9e667f0af2"
},
{
"availableCpuCapacity": 14363,
"availableMemoryCapacity": 8321593344,
"clusterUuid": "10409d3e33b249c19746022930a541c7",
"createDate": "Jan 30, 2016 3:03:14 PM",
"hypervisorType": "KVM",
"lastOpDate": "Jan 30, 2016 3:03:52 PM",
"managementIp": "192.168.200.150",
"name": "host2",
"state": "Enabled",
"status": "Connected",
"totalCpuCapacity": 14364,
"totalMemoryCapacity": 8371924992,
"username": "root",
"uuid": "415fa093b34e4a3d873368104b127115",
"zoneUuid": "4a3a78b1b9f049948b79cf9e667f0af2"
}
],
"success": true
}
>>>ReconnectHost uuid=402f8304a50c410486e023512492316b
{
"success": true
}
>>>ReconnectHost uuid=415fa093b34e4a3d873368104b127115
{
"success": true
}