ZStack v1.0发布

发布于2017-02-23

  • Flat Network Provider,分布式DHCP
  • User Data,支持cloud-init
  • 本地存储的磁盘迁移
  • ISO API,支持加载/卸载ISO,调整VM启动顺序
  • Spice支持
  • i18n,支持中文、繁体中文、英文
  • VM状态实时捕获
  • 资源删除策略控制
  • CPU型号Passthrough,支持嵌套虚拟化
  • 22M超小试用镜像
  • 中文用户手册

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创建公钥或者更新公钥,你需要做如下步骤:

  1. 删除在VM中删除已有的cloud-init数据,rm -rf /var/lib/cloud

  2. 重启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
}

学习路径

ZStack 产品学习路径

快速梳理文档,点击相应文本链接,快速跳转到相应文档的页面,学习 ZStack 产品。

我知道了

下载ZStack企业版

您已填写过基本信息?点击这里

姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

下载链接将会通过邮件形式发送至您的邮箱,请谨慎填写。

下载ZStack企业版

还未填写过基本信息?点击这里

邮箱或手机号码格式错误
验证手机号
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io
申请ZStack多机版
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。 当您收到电子邮件后,请点击 URL 链接,以完成下载。

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。
或点击下方URL链接 (IE内核浏览器请右键另存为), 完成下载:

感谢您使用 ZStack 产品和服务。

成功提交申请。

我们将安排工作人员尽快与您取得联系。

感谢您使用 ZStack 产品和服务。

回到顶部