ZStack 1.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 Cloud 产品学习路径

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

我知道了

升级提醒

若您选择升级至4.0.0及之后版本,请注意以下功能调整:

1. 云路由器全面升级为VPC路由器,云路由网络全面升级为VPC网络,不再单独设云路由器页面。升级全程无感知,相关业务不受任何影响。

2. 企业管理账号体系取代用户组与用户,不再单独设用户/用户组页面,不可再使用用户/用户组账号登录云平台。升级前,请先将“用户组与用户”纳管的账号数据妥善迁移至“企业管理”纳管,再执行升级操作。注意:对于admin创建并具备admin权限的用户账号同步取消,如有需要,可使用企业管理账号体系中的平台管理员实现相同功能。

3. 调整AD/LDAP与账户的对接管理方式,统一由企业管理纳管,不再单独设AD/LDAP页面。升级前,请先将“账户”对接纳管的AD/LDAP账号数据妥善迁移至“企业管理”纳管,再执行升级操作。

如对上述升级提醒有任何疑问或需要升级帮助,请联系ZStack官方技术支持

我已阅读并知晓上述升级提醒。
下载ZStack企业版

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

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

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

下载ZStack企业版

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

邮箱或手机号码格式错误
验证手机号
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
登录观看培训视频
仅对注册用户开放,请 登录 或 填写资料 观看培训视频
填写资料

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

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

商务咨询:

400-962-2212 转 1

商务联系:

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

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

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

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

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

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

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

成功提交申请。

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

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

联系我们

商务咨询
400-962-2212 转 1
售后咨询
400-962-2212 转 2

回到顶部

产品试用申请
请选择您要试用的产品
ZStack Cloud 企业版
ZStack Cloud 混合云版
ZStack Cloud 基础版
ZStack Cloud 标准版
ZStack 信创云平台
ZStack Ceph企业版
ZStack Mini 边缘计算一体机
ZStack CMP 多云管理平台
请填写您的基本信息
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

成功提交申请。

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

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