警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

For the current documentation site goto: http://docs.cloudstack.apache.org

使用系统虚拟机

CloudStack使用几类系统虚拟机来完成云中的任务。总的来说,CloudStack管理这些系统虚拟机,并根据某些范围内或快速需要创建、启动和停止它们。然而,管理员需要意识到他们在调试中的作用。

系统VM模板

系统VM来自于一个单独的模板,系统VM具有以下特性:

  • Debian 7.8 (“wheezy”), 3.2.0 kernel with the latest security patches from the Debian security APT repository
  • 具有一系列最小化安装的包,可以降低安全攻击风险。
  • 64-bit for enhanced performance on Xen/VMWare
  • 包含Xen PV 驱动,KVM virtio 驱动和VMware tools的pvops 内核可以使所有hypervisor得到最佳性能。
  • Xen tools 包含性能监控
  • 最新版本的HAProxy,iptables,IPsec和来自debian库的Apache保证了提高安全性和速度。
  • 从 Sun/Oracle 安装最新版本的JRE可以保证安全性与速度的提高

改变默认系统VM模板

Using the 64-bit template should be use with a System Offering of at least 512MB of memory.

  1. 基于你所使用的hypervisor,从以下地址下载64位模板:

    Hypervisor 下载地址
    XenServer http://cloudstack.apt-get.eu/systemvm/4.6/systemvm64template-4.6.0-xen.vhd.bz2
    KVM http://cloudstack.apt-get.eu/systemvm/4.6/systemvm64template-4.6.0-kvm.qcow2.bz2
    VMware http://cloudstack.apt-get.eu/systemvm/4.6/systemvm64template-4.6.0-vmware.ova
    Hyper-V http://cloudstack.apt-get.eu/systemvm/4.6/systemvm64template-4.6.0-hyperv.vhd.zip
  2. 使用管理员登录到CloudStack管理界面。

  3. 注册64位的模板。

    例如:KVM64bit 模板

  4. 当注册模板时,选择路由(routing)。

  5. 导航至 基础结构 > 地域 > 设置

  6. 在全局参数 *``router.template.kvm``*中设置64位模板的名称,KVM64bitTemplate。

    如果你正在使用XenServer64位模板,将名字设置在*``router.template.xen``*全局参数中。

    任何在此地域中创建的新虚拟路由器均使用这个模板。

  7. 重启管理服务器。

支持VMware的多种系统虚拟机

每个CloudStack 区域都有一个单独的系统VM用于模板处理任务,如下载模板,上传模板,上传ISO。在使用VMware的区域中,有另外的系统VM用来处理VMware专有的任务,如制作快照,创建私有模板。 当VMware专有任务的负载增加时,CloudStack管理端将推出额外的系统VM。管理端监控并平衡发送到这些系统VM的命令,实行动态负载均衡并增加更多的系统VM。

控制台代理

控制台代理是一种系统VM,可以通过网页用户接口为用户呈现一个控制台视图。它通过hypervisor为来宾提供控制台将用户的浏览器与vnc端口相连。管理员和终端用户动能通过网页用户接口获得一个控制台连接。

点击控制台图标会弹出一个新窗口。根据控制台代理的公共IP ,AJAX代码会下载到这个新窗口。每个控制台代理都会分配一个公共IP。AJAX程序会连接到这个IP。控制台代理会将连接代理到正在运行所请求虚拟机的宿主机的vnc端口。

注解

hypervisors可能会分配很多端口到VNC上,因此可能同时并发多个VNC会话。

不会有任何流量是来宾虚拟IP的,因此不需要打开来宾虚拟机的vnc。

控制台虚拟机会定时的向管理服务器汇报当前活动的会话数。默认报告间隔是五秒钟。可以通过管理服务器的配置参数 consoleproxy.loadscan.interval.更改。

如果来宾虚拟机之前有已经分配的关联控制台代理的会话,控制台代理的分配会由第一次分配的控制台代理决定。如果该来宾虚拟机之前存在已分配的控制台代理,则不论该控制台代理目前负载如何管理服务器都会将该来宾虚拟机分配到目标控制台代理虚拟机。如果失败则会将来宾虚拟机分配到第一个拥有足够资源处理新会话的控制台代理上。

管理员能重启控制台代理,但此操作会中断用户与控制台会话。

对控制台代理使用SSL证书。

默认情况下,代理视图功能使用HTTP协议,在任何生产环境下,代理服务连接至少要通过SSL进行加密。

CloudStack管理员有2种方式来保证SSL加密控制代理连接的安全:

  • 建立一个SSL通配证书以及域名解析。
  • 为指定的FQDN建立一个SSL证书并配置负载均衡

更改控制代理SSL证书及域

管理员可以通过选择一个域并上传一个新的SSL证书和密钥配置SSL加密。这个域必须运行一个能DNS服务器,该服务器能解决地址格式是aaa-bbb-ccc-ddd.your.domain到IPv4 IP地址的结构aaa.bbb.ccc.ddd,例如 for example, 202.8.44.1。就是为了改变终端代理与,SSL证书和私有密钥。

  1. 建立一个动态的方案或者适用于所有可能DNS名称在你的公共IP范围以format aaa-bbb-ccc-ddd.consoleproxy.company.com-> aaa.bbb.ccc.ddd.到你已经存在的DNS服务器上

    注解

    在上述步骤中你会注意到*consoleproxy.company.com* -为安全最好的实践,我们推荐在独立的子域中创建一个新的有通配符的SSL证书,所以证书在事件中可能妥协,一个恶意的用户不能模仿一个company.com域。

  2. 通常有私钥和证书签名请求(CSR)。当你使用openssl产生私钥/公钥对和CSR,你将私钥复制到CloudStack中,保证转换为PKCS#8格式。

    1. 产生一个新的2048位的私钥

      openssl genrsa -des3 -out yourprivate.key 2048
      
    2. Generate a new certificate CSR. Ensure the creation of a wildcard certificate, eg *.consoleproxy.company.com

      openssl req -new -key yourprivate.key -out yourcertificate.csr
      
    3. 前往你喜爱的站点相信授权证书,购买一个SSL证书并获得CSR确认。你将会收到一个返回的有效地证书

    4. 转化你的私钥格式成PKCS#8加密格式。

      openssl pkcs8 -topk8 -in yourprivate.key -out yourprivate.pkcs8.encrypted.key
      
    5. 转化你的PKC#8加密的私钥到PKC#8格式是CloudStack遵循的方式。

      openssl pkcs8 -in yourprivate.pkcs8.encrypted.key -out yourprivate.pkcs8.key
      
  3. 在CloudStack用户界面的修改SSL证书,复制以下内容:

    • 刚刚生成的证书。
    • 刚刚生成的私钥。
    • The desired domain name, prefixed with *.; for example, *.consoleproxy.company.com

    Updating Console Proxy SSL Certificate

  4. 这停止了所有正运行的终端代理VM,然后已新的许可和密钥重启。用户可能会注意到对控制台有益的一个简短的打断。

管理服务器在这个改变后生成格式如 “aaa-bbb-ccc-ddd.consoleproxy.company.com” 的URLs。这个新的终端请求将会依照新的DNS域名,证书和密钥提供服务。

Uploading ROOT CA and Intermediate CA

If you need to upload custom certificate with ROOT CA and intermediate CA, you can find more details here: https://cwiki.apache.org/confluence/display/CLOUDSTACK/Procedure+to+Replace+realhostip.com+with+Your+Own+Domain+Name

IMPORTANT NOTES:

In order to avoid errors and problems while uploading custom certificates, please check following:

1. While doing URL encoding of ROOT CA and any Intermediate CA, be sure that the plus signs (“+”) inside certificates are not replaced by space (” “), because some URL/string encoding tools tend to do that.

2. If you are renewing certificates it might happen you need to upload new ROOT CA and Intermediate CA, together with new Server Certificate and key. In this case please be sure to use same names for certificates during API upload of certificate, example:

http://123.123.123.123:8080/client/api?command=uploadCustomCertificate&…&name=root1http://123.123.123.123:8080/client/api?command=uploadCustomCertificate&…&name=intermed1

Here names are “root1” and “intermed1”. If you used other names previously, please check the cloud.keystore table to obtain used names.

If you still have problems and folowing errors in management.log while destroying CPVM:

  • Unable to build keystore for CPVMCertificate due to CertificateException
  • Cold not find and construct a valid SSL certificate

that means that still some of the Root/intermediate/server certificates or the key is not in a good format, or incorrectly encoded or multiply Root CA/Intemediate CA present in database by mistake.

Other way to renew Certificates (Root,Intermediates,Server certificates and key) - although not recommended unless you fill comfortable - is to directly edit the database, while still respect the main requirement that the private key is PKCS8 encoded, while Root CA, Intemediate and Server certificates are still in default PEM format (no URL encoding needed here). After editing the database, please restart management server, and destroy SSVM and CPVM after that, so the new SSVM and CPVM with new certificates are created.

负载均衡终端代理

一个在最近的段落中使用动态DNS或者创建一定范围DNS记录作为可替换的描述将被用来创建一个特定域名的SSL证书,配置CloudStack使用特定的FQDN,然后配置一个负载均衡以均衡终端代理IP地址后的FQDN。作为这项新功能的更多详情,参见 http://cwiki.apache.org/confluence/display/CLOUDSTACK/Realhost+IP+changes

虚拟路由

虚拟路由器是一个系统虚拟机。它经常在CloudStack服务方案中被使用;终端用户不能够直接访问虚拟路由器。用户可ping和影响它(比如设置端口转发)但是不能通过ssh访问

这里没有一种机制使得管理员可以登录虚拟路由器。管理员可以重启虚拟路由器,但是会中断终端用户网络访问和服务。在一个基本的网络故障排错中,尝试在一个虚拟机上ping虚拟路由器。虚拟路由器的一些功能特性是通过系统服务方案配置的。

配置虚拟路由

你可以设置以下内容:

  • IP地址范围
  • 支持的网络服务
  • 由虚拟路由为网络服务提供的默认域名
  • 网关IP地址
  • CloudStack多久从虚拟路由器获取一次网络使用数据。如果你想搜集虚拟路由器的流量计量数据,设置全局变量router.stats.interval。如果你不使用虚拟路由器收集网络使用数据,设置该值为0

使用系统计算服务升级虚拟路由器

当 CloudStack创建一个虚拟路由器,它是按照默认的系统计算服务方案进行的设置。参见 <xref linkend=”system-service-offerings” />。所有在单独客户网络中的虚拟路由器都使用相同的系统计算服务方案。可以通过新建和使用自定义的系统计算服务方案来提高虚拟路由器的性能。

  1. 定义定制的系统计算服务方案,参见<xref linkend=”creating-system-service-offerings” />。在系统虚拟机类型中,选择域路由器。
  2. 使用网络服务方案配合系统计算服务方案,参见 “创建一个新网络方案”.
  3. 将网络服务方案应用到使用新系统计算服务方案的虚拟路由器的网络上。如果这是一个新的网络,请根据66页的添加额外客户网络的步骤操作。想要改变已生成的虚拟路由器的计算服务方案,请根据 “在客户端网络改变网络方案”.

虚拟路由器的最佳实践

  • 警告:从一个虚拟机管理程序控制台重新启动一台虚拟路由器,将删除所有iptables规则。要解决这个问题,从CloudStack用户界面停止虚拟路由器和启动。

  • 警告

    在网络中只有一个路由器可用时,不要使用destroyRouter API,因为restartNetwork API 带cleanup=false参数不能随后重新创建它。如果你想销毁并重新创建网络中的单一路由器,使用restartNetwork API 带cleanup=true参数。

虚拟路由的服务监视工具

运行在CloudStack虚拟路由上的不同的各种服务都可以使用服务监视工具监视。工具将确保服务成功运行除非CloudStack被故意损坏。如果一个服务停止,工具将自动重启该服务,如果不能帮助重启该服务,将产生一个导致失败的警报事件。一个全局参数,”network.router.enableservicemonitoring”,已经被介绍了它能控制这种特性。默认值是false,也就是说监控不是默认。当你激活后,确保服务管理器和路由被重启。

监视工具可以帮助启动一个由不期望的原因导致的冲突的VR服务。例如:

  • 由原代码的缺点引起的服务冲突。
  • 当此服务的内存空间或者CPU运算出现不足时,OS将终止此服务。

注解

只有这些服务的守护进程仍被监视。这些服务因在服务器/守护进程配置文件中的错误而失败将导致不能被监视工具重启。VPC网络不予支持。

在VR中监视下列服务:

  • DNS
  • HA代理
  • SSH
  • Apache网络服务器

支持以下网络:

  • 独立的网络

  • 在高级和基础域中分享网络

    注解

    VPC网络不被支持

在下列hypervisor上支持此特性:XenServer,VMware和KVM

增强的网络路由升级

升级VR也是很灵活的。CloudStack管理员将能够控制VR升级序列。该序列基于Infrastructure层,例如Cluster,pod或者Zone,管理层 (账户),例如Tenan或者Domain.作为管理员,当一个特殊的用户服务,例如VR,在一个短暂的具体升级后的间隔后,你可以终止它。升级操作将允许多个升级操作并行操作促使升级速度增加。

在一个完整的持续的升级过程中,用户不能启动新服务或者改变已经存在的服务。

另外,使用多版本的VR在一个单例上也是支持的。对于具体地VR,你可以预览版本和是否升级。在管理服务器升级时,CLoudStack检查VR是否是VR上操作的最新版本。为支持此特点,一个新的全局参数,``router.version.check``, 已经被加入.这个参数默认设置为true,它意味着当操作前,最少要求版本检查。如果不是VR要求的版本就没有任何操作。在旧的版本上的VR仍然是有效地,但必须升级后才能进行更多的操作。在升级之前,它将是临时状态。这将保证VR服务和状态不受管理服务器升级的影响。

以下服务将是有效的,无论VR是否升级。或者,没有任何服务在VR升级后发送到VR.

  • 安全组
  • 用户数据
  • DHCP
  • DNS
  • LB
  • 端口转发
  • VPN
  • 静态 NAT
  • Source NAT
  • 防火墙
  • 网关
  • 网络ACL

支持虚拟路由

  • VR
  • VPC VR
  • 多余的VR

升级中的虚拟路由

  1. 下载最新的系统VM模板。

  2. 下载最新的系统VM到所有主存储池。

  3. 升级管理服务器

  4. 从用户界面和使用下列描述中升级CPVM和SSVM

    # cloudstack-sysvmadm -d <IP address> -u cloud -p -s
    

    即使VR仍然是老版本,已经存在的服务会继续对VM有效。管理服务器除非升级,否则不会再VR上有任何动作。

  5. 选择性的升级VR:

    1. 用系统管理员登陆到CloudStack UI界面。

    2. 在左边的导航,选择基础架构。

    3. 在虚拟路由上,单击更多视图。

      所有的VR都在虚拟路由页中列出。

    4. 在选择视图的下拉列表中,选择所需的群组

      你可以设置以下内容:

      • 按域分组
      • 按提供点分组
      • 按群集分组
      • 按账户分组
    5. 单击已经被升级的VR组

      例如,你可以按域分组,选择希望的域名。

    6. 单击升级按钮升级所有的VRs.|vr-upgrade.png|

    7. 点击确定。

辅助存储VM

除了主机,CloudStack的二级存储虚拟机会挂载和往二级存储中写入内容。

通过二级存储虚拟机来提交信息到二级存储。二级存储虚拟机会使用多种协议通过URL来获取模版和ISO镜像文件。

二级存储虚拟机会提供后台任务来负责各种二级存储的活动:将新模版的下载到资源域中,多个资源域之间的模版复制,和快照备份。

如果有需要,管理员可以登录到辅助存储VM上。