ZStack v1.1 发布

发布于2017-04-11

  • 新增用户管理
  • 新增多网络管理
  • 更新Windows Virtio驱动安装
  • 修改章节显示方式

ZStack 1.1 版本今天发布,欢迎大家下载试用。在该版本中,我们主要针对1.0 版本做了性能和稳定性相关的优化工作。 某些性能指标提升超过10倍,例如consoleproxy在管理节点重启后会立刻安装完毕. 此外,针对内网用户,ZStack 1.1 还提供了离线安装方法.用户只要预先安装CentOS 7.2 ZStack社区版,就可以完成ZStack离线安装.

新增功能

1.Ansible 优化

2.ConsoleProxy 重连API

3.API超时管理框架

4.垃圾自动回收

5.15M超小试用镜像--支持动态添加删除云盘和网络

6.更新虚拟路由(VirtualRouter)镜像

7.修改CentOS7.2 无法热迁移VM的Bug


安装升级

1.安装

2.离线安装

3.升级

4.Virtual Router Provider升级到Flat Network Porvider


1. Ansible优化

在1.1版本中,我们不再使用Ansible Playbook的方式去部署agent,而是直接使用了Ansible的原生SDK,为每个agent都定制了单独的部署程序,使得部署的稳定性和效率得到了极大的提高。

新的Ansible部署工具会自动检查系统依赖包的安装情况,只在有依赖包缺失的情况下才访问yum或apt源,避免了重启ZStack和升级ZStack过程中,由于访问外网抖动导致的物理机重连失败的问题,提高了系统的稳定性。新的部署工具也会检查Python依赖,解决了升级过程中consoleproxy依赖的websockify重复编译问题,升级consoleproxy的部署时间从原来的5分钟缩减到了4秒。


2. ConsoleProxy重连API

在1.1版本中,我们加入了console proxy的重连和查询API,用户不再需要通过重启ZStack来重新部署console proxy。

>>>QueryConsoleProxyAgent 
{
    "inventories": [
        {
            "createDate": "Mar 26, 2016 12:53:17 PM",
            "description": "Console proxy agent running on the management node[uuid:ae80b109e9ca4f4c81191cd2ffe43000]",
            "lastOpDate": "Mar 26, 2016 12:53:22 PM",
            "managementIp": "172.20.12.46",
            "state": "Enabled",
            "status": "Connected",
            "type": "ManagementServerConsoleProxy",
            "uuid": "ae80b109e9ca4f4c81191cd2ffe43000"
        }
    ],
    "success": true
}

>>>ReconnectConsoleProxyAgent 
{
    "inventory": {
        "ae80b109e9ca4f4c81191cd2ffe43000": true
    },
    "success": true
}

3. API超时管理框架

ZStack所有功能由大量相互独立的微服务实现,服务之间使用异步消息通信,通常一个API会涉及到多个消息以及跟Agent端的HTTP调用,超时管理成为一个难题。在1.1版本中,我们加入了统一的API超时管理框架,用户无需关心底层细节。在当前版本中,用户如果需要改变默认的API超时,暂时还需要通过zstack.properties文件来改变,例如需要改变AddImage的API超时为6个小时,需要在zstack.properties添加如下配置:

ApiTimeout.org.zstack.header.image.APIAddImageMsg= org.zstack.header.storage.backup.DownloadImageMsg, org.zstack.storage.backup.sftp.SftpBackupStorageCommands$DownloadCmd, org.zstack.storage.ceph.backup.CephBackupStorageBase$DownloadCmd; 6h

NOTE:目前我们为所有耗时的API都设置了默认3小时的超时时间,用户在如无特殊需要,不建议通过配置的方式进行修改。我们在1.2版本会新加超时管理API,用户可以直接通过API来设定相应操作的超时时间。


4. 垃圾回收机制

在1.1版本中,我们全面开启了跟虚拟机相关的垃圾回收器,可以自动回收由于网络故障、物理机故障导致的遗留资源,而不阻碍用户操作。

场景:

物理机网络失联导致用户无法删除该物理机上运行的虚拟机。在早前的ZStack版本中,用户需要等待物理机网络恢复后再执行删除操作。有了垃圾回收器后,用户可以直接删除虚拟机,后台会记录该删除操作。垃圾回收器会在物理机网络恢复后自动触发,执行未完成的操作。

目前已经启动的垃圾回收器包括云主机、云盘、快照,更多的垃圾回收器会在未来版本中逐一开放。

ZStack的垃圾回收器非常智能,支持时间轮询和事件触发,其中事件触发支持多种关联事件。例如在前面的例子中,如果管理员在物理机网络恢复前又删除了该物理机,垃圾回收器也会被触发,清除之前提交的删除该物理机上虚拟机的任务。


5. 新虚拟路由(Virtual Router)镜像

VirtualRouter image 更新到了 zstack-virtualrouter-1.1.0.qcow2 .我们除了更新了VirtualRouter 对应的services外,还提高了VirtualRouter的安全访问方式:

1.修改了virtual router 默认的密码,原先的默认密码是 password。以后用户无法用密码登录Virtual Router

2.使用了用户特别的 SSH public key。 这个public key是用户在安装ZStack的时候自动产生的,可以保证每个用户都是用不同的SSH key。 用户可以使用私有的 SSH private key从Virtual Router的管理网络登录。 该SSH private key 默认存放在管理节点: /usr/local/zstack/apache-tomcat/webapps/zstackWEB-INF/classes/ansible/rsaKeys/id_rsa

用户可以下载并替换原有VirtualRouter Image:

cdn.zstack.io/community/downloads/zstack/1.1/zstack-virtualrouter-1.1.0.qcow2

替换原有VirtualRouter的方法是:

1.从UI上下载最新的VirtualRouter image,例如命名为 zstack-vr-1.1-image

2.从镜像服务器删除老的VirtualRouter Image

3.删除老的VirtualRouter Offering

4.创建新的VirtualRouter Offering,并且选择新下载的zstack-vr-1.1-image做为VirtualRouter Offering的镜像。其他网络配置不变。

5.从UI面板的Virtual Router菜单中删除现有的VirtualRouter VM

6.选择使用VR的L3网络重新创建一个普通VM,ZStack就会使用新的Virtual Router镜像创建一个新的虚拟路由。


6. 15M超小试用镜像--支持动态添加删除云盘和网络

在1.1我们为ZStack专门构建了一个只有15M的测试镜像,支持网络、SSHD,用户可以用它来做一些基本测试。相比于之前的1.0的测试镜像,该镜像支持了动态添加删除云盘和网络。下载链接:

cdn.zstack.io/community/downloads/zstack/1.2/zstack-image-1.2.qcow2

感谢Robert Yang(@linuxer)提供该镜像!


7. 修复CentOS7.2 物理机无法热迁移VM的bug

CentOS7.2 修改了热迁移VM的libvirt的相关代码,导致如果用户没有显示的设置物理机Hostname的情况下,云主机无法热迁移。ZStack以及给RedHat报告了问题。 不过在ZStack 1.1中,我们做了特别的改动来避免CentOS7.2 的这个bug。


8. 安装

你可以通过下面方式安装:

wget http://cdn.zstack.io/community/downloads/zstack/1.1/zstack-installer-1.1.0-rc1.bin -O zstack-installer-1.1.0.bin
bash zstack-installer-1.1.0.bin -R aliyun

这里-R aliyun参数指定使用阿里云的源进行安装,你也可以使用-R 163使用网易的源。我们推荐使用阿里云的源


9. 离线安装 ZStack

针对内网用户,以及访问Internet速度较慢的用户.ZStack 1.1 提供了离线安装方式. 用户若需要离线安装ZStack,需要在目标管理节点和计算节点上安装CentOS 7.2 ZStack社区版.

然后在下载了第8步中的 zstack-installer 之后,你可以通过下面方式快速完成离线安装:

bash zstack-installer-1.1.0.bin -o

具体的离线安装教程和CentOS 7.2 ZStack社区版请阅读: ZStack离线安装教程


10. 升级

一如既往的,我们支持一键无缝升级:

wget http://cdn.zstack.io/community/downloads/zstack/1.1/zstack-installer-1.1.0-rc1.bin -O zstack-installer-1.1.0.bin
bash zstack-installer-1.1.0.bin -u

多节点升级中的zstack.war 可以从如下链接获取: cdn.zstack.io/community/downloads/zstack/1.1/1.1.0/zstack.war


11. 用Flat Network Provider替换Virtual Router Provider

如果你的网络模式是扁平网络,并且使用的是Virtual Rotuer Provider作为网络提供商,你可以使用1.0的Flat Network Provider替换它,这样你就不再需要virtual router VM来充当DHCP服务器了。假定你要替换网络提供商的L3网络的UUID是1a82c2691978476fa6cefa36bb9d4bfd,参考以下步骤:

11.1 获得当前L3网络的网络提供商UUID

>>>QueryNetworkServiceL3NetworkRef l3NetworkUuid=1a82c2691978476fa6cefa36bb9d4bfd
{
 "inventories": [
     {
         "l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
         "networkServiceProviderUuid": "5d21ea0f39c04d6fb68cfaf5a37db4ad",
         "networkServiceType": "DNS"
     },
     {
         "l3NetworkUuid": "1a82c2691978476fa6cefa36bb9d4bfd",
         "networkServiceProviderUuid": "5d21ea0f39c04d6fb68cfaf5a37db4ad",
         "networkServiceType": "DHCP"
     }
 ],
 "success": true
}

11.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

11.3 获得Flat Netwok 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
}

11.4 获得承载L3网络的L2网络的UUID

>>>QueryL3Network fields=l2NetworkUuid, uuid=1a82c2691978476fa6cefa36bb9d4bfd
{
 "inventories": [
     {
         "l2NetworkUuid": "9ec8cad681d1424fa7eda2447edae142"
     }
 ],
 "success": true
}

11.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
}

11.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
}

11.7 删除virtualroute, 删除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
} 

11.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
}

Please enable JavaScript to view the comments powered by Disqus.

学习路径

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 产品和服务。

回到顶部