警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

CloudStack Administration Documentation

_images/acslogo.png

This guide is aimed at Administrators of a CloudStack based Cloud, for Release Notes, Installation and General introduction to CloudStack see the following guides:

用户界面

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

用户界面

登陆到用户界面

CloudStack提供一个基于web的UI,管理员和终端用户能够使用这个界面。用户界面版本依赖于登陆时使用的凭证不同而不同。用户界面是适用于大多数流行的浏览器包括IE7,IE8,IE9,Firefox3.5+,Firefox4,Safari4,和Safari5。URL是:(用你自己的管理控制服务器IP地址代替)

http://<management-server-ip-address>:8080/client

如果管理服务器是全新的安装,。那么会出现一个安装向导。在稍后的访问中,,你将看到一个登录界面,,你需要通过用户名和密码登入来查看你的仪表盘.

用户名 -> 你账号的用户ID。默认用户名是admin。

密码 -> 用户ID对应的密码。默认用户名的密码是password。

域 -> 如果你是root用户,此处留空即可。

如果你是一个子域用户,在域中输入完全路径,不包括根域。

例如,假设在根域下建立了多个层级,像Comp1/hr,在Comp1域的用户在域字段处应该输入Comp1,在Comp1/sales域的用户应该输入Comp1/sales。

更多关于当你登录这个界面时选项的指导,参照作为根管理员登录。

最终用户界面概览

CloudStack用户界面帮助云基础设施的用户查看和使用他们的云资源,包括虚拟机、模板和ISO、数据卷和快照、宾客网络,以及IP 地址。如果用户是一个或多个CloudStack项目的成员或管理员,用户界面能提供一个面向项目的视图。

根管理员界面的概述

CloudStack界面帮助CloudStack管理员配置、查看和管理云的基础设施、用户域、账号、项目和配置。当一个全新的管理服务器安装完成后,在第一次启动界面的时候,可以选择根随引导步骤配置云的基础设施。当再次登录时,会显示当前登录用户的仪表板。在这个页面有很多的连接,可以通过左边的导航栏访问各种管理功能。根管理员也可以使用界面像最终用户一样来执行所有的功能。

作为根管理员登录

在管理服务器软件安装并且运行后, 你就可以运行CloudStack的用户界面.了。在这里通过UI,可以供给、查看并管理你的云基础架构。

  1. 打开你自己喜欢的浏览器并访问这个URL。请把IP地址替换成你自己的管理服务器的IP。

    http://<management-server-ip-address>:8080/client
    

    初次登录管理服务器时,会出现一个向导启动画面。后续访问时,您会直接进入控制面板。

  2. 如果你看到第一次的向导屏幕, 可以选择下面步骤之一进行。

    • **继续执行基本安装。**如果你仅仅是想体验CloudStack,请选择这个,并且这样你可以马上开始跟着向导进行简单的配置。我们将帮助你建立一个有以下功能的云:一个运行CloudStack软件的机器和使用NFS协议的存储;一个运行VMs的XenServer或KVM hypervisor的服务器;一个共享的公有网络。

      安装向导的提示会给你需要的所有信息。但如果你需要更多的详细信息,你可以按照试用安装向导进行。

    • 我之前用过CloudStack。 如果您已经完成设计阶段,计划部署一个复杂CloudStack云,或是准备对用基础安装向导搭建的试验云进行扩展,请选择此项。在管理员UI中,您可以使用CloudStack中更强大的功能,例如高级VLAN网络、高可用、负载均衡器和防火墙等额外网络设备,以及支持Citrix XenServer、KVM、VMware vSphere等多种虚拟化平台。

      根管理员的仪表盘显示出来。

  3. 你应该为根管理员设置一个新的密码。如果你选择基础设置。将会提示你立即创建一个新的密码。如果你选择有经验的用户,请选择:ref:`changing-root-password`里的步骤。

警告

使用根管理员登录。这个账号管理CloudStack的部署,包括物理架构。根管理员可以通过更改配置来变更基本的功能,创建或删除用户账号,以及其它许多只有被授权的用户执行的操作。请更改默认的密码,确保其唯一性和安全性。

更改Root密码

在云的安装及后续管理过程中,您需要用根管理员登录UI。根管理员账号管理着CloudStack的部署以及物理设施。根管理员可以修改系统配置,改变基本功能,创建和删除用户账号,以及其他仅限于已授权人员执行的操作。在初始安CloudStack时,请务必修改默认密码为新的较独特的密码。

  1. 打开你自己喜欢的浏览器并访问这个URL。请把IP地址替换成你自己的管理服务器的IP。

    http://<management-server-ip-address>:8080/client
    
  2. 使用当前root用户的ID和口令登录UI。缺省为admin,pawword。

  3. 点击帐户。

  4. 点击管理员帐号名。

  5. 点击查看用户。

  6. 点击管理员用户名。

  7. 点击更改密码按钮。 button to change a user's password

  8. 输入新密码,然后点击确认。

管理账户,用户和域

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

Managing Roles, Accounts, Users and Domains

Roles, Accounts, Users, and Domains

Roles

A role represents a set of allowed functions. All CloudStack accounts have a role attached to them that enforce access rules on them to be allowed or disallowed to make an API request. Typically there are four default roles: root admin, resource admin, domain admin and user.

账户

一个账户通常代表一个客户的服务提供者或一个大组织中的一个部门。一个账户可存在多个用户。

帐户通常按域进行分组。域中经常包含多个账户,这些账户间存在一些逻辑上关系和一系列该域和其子域下的委派的管理员(这段的意思就是说在逻辑上域下可以有管理员,子域下也可以有管理员)。比如,一个服务提供商可有多个分销商这样的服务提供商就能为每一个分销商创建一个域

对于每个账户的创建,Cloud的安装过程中创建了三种不同类型的用户账户:根管理员,域管理员,普通用户。

普通用户

用户就像是账户的别名。在同一账户下的用户彼此之间并非隔离的。但是他们与不同账户下的用户是相互隔离的。大多数安装不需要用户的表面概念;他们只是每一个帐户的用户。同一用户不能属于多个帐户。

多个账户中的用户名在域中应该是唯一的。相同的用户名能在其他的域中存在,包括子域。域名只有在全路径名唯一的时候才能重复。比如,你能创建一个root/d1,也可以创建root/foo/d1和root/sales/d1。

管理员在系统中是拥有特权的账户。可能有多个管理员在系统中,管理员能创建删除其他管理员,并且修改系统中任意用户的密码。

域管理员

域管理员可以对属于该域的用户进行管理操作。域管理员在物理服务器或其他域中不可见。

根管理员

根管理员拥有系统完全访问权限,包括管理模板,服务方案,客户服务管理员和域。

资源所有权

资源属于帐户,而不是帐户中的单个用户。例如,账单、资源限制等由帐户维护,而不是用户维护。用户有权限操作任何在帐户中提供的资源。权限有角色决定。根管理员通过使用assignVirtualMachine API可以将任何虚拟机的所有权从一个帐户调整到另一个帐户。域或子域管理员可以对域中的VMs做同样的操作,包括子域。

Using Dynamic Roles

In addition to the four default roles, the dynamic role-based API checker feature allows CloudStack root admins to create new roles with customized permissions. The allow/deny rules can be configured dynamically during runtime without restarting the management server(s).

For backward compatiblity, all roles resolve to one of the four role types: admin, resource admin, domain admin and user. A new role can be created using the roles tab in the UI and specifying a name, a role type and optionally a description.

Role specific rules can be configured through the rules tab on role specific details page. A rule is either an API name or a wildcard string that are one of allow or deny permission and optionally a description.

When a user makes an API request, the backend checks the requested API against configured rules (in the order the rules were configured) for the caller user-account’s role. It will iterate through the rules and would allow the API request if the API matches an allow rule, else if it matches a deny rule it would deny the request. Next, if the request API fails to match any of the configured rules it would allow if the requested API’s default authorized annotaions allow that user role type and finally deny the user API request if it fails to be explicitly allowed/denied by the role permission rules or the default API authorize annotations. Note: to avoid root admin being locked out of the system, all root admin accounts are allowed all APIs.

The dynamic-roles feature is enabled by default only for all new CloudStack installations since version 4.9.x.

In 4.11.x and above, existing deployment without any commands.properties file will be automatically migrated to dynamic roles. Admins may also enable dynamic roles by setting the global setting ‘dynamic.apichecker.enabled’ to true.

After an upgrade, admins can also use this migration tool to migrate old rules from commands.properties file(s): /usr/share/cloudstack-common/scripts/util/migrate-dynamicroles.py.

During migration, this tool enables the global setting in the database and copies existing static role-based rules from provided commands.properties file (typically at /etc/cloudstack/management/commands.properties) to the database and renames the commands.properties file (typically to /etc/cloudstack/management/commands.properties.deprecated). The migration process does not require restarting the management server(s).

Usage: migrate-dynamicroles.py [options] [-h for help]

Options:

-b DB The name of the database, default: cloud
-u USER User name a MySQL user with privileges on cloud database, default: cloud
-p PASSWORD Password of a MySQL user with privileges on cloud database
-H HOST Host or IP of the MySQL server
-P PORT Host or IP of the MySQL server, default: 3306
-f FILE The commands.properties file, default: /etc/cloudstack/management/commands.properties
-D Use the default role-rule permissions, and only enable dynamic roles
-d Dry run and debug operations this tool will perform

Examples:

sudo python /usr/share/cloudstack-common/scripts/util/migrate-dynamicroles.py -u cloud -p cloud -H localhost -P 3006 -f /etc/cloudstack/management/commands.properties
sudo python /usr/share/cloudstack-common/scripts/util/migrate-dynamicroles.py -u cloud -p cloud -H localhost -P 3006 -D

If you’ve multiple management servers, remove or rename the commands.properties file on the management servers typically in /etc/cloudstack/management path, after running the migration tool for the first management server.

给帐户和域分配专用资源

根管理员可以将资源分配给指定的域或为了保证额外的安全或性能从而需要单独基础架构帐户。为了一个指定的域或账号,区域、机架、群集或者主机可以被根管理员保留。只有域或它的子域中的用户可以使用这个基础架构。比如,只有域中的用户可以在其中的区域中创建来宾虚机。

这里有几种有效的分配方式:

  • 明确的专用。根管理员在初始部署和配置期间给一个帐户或者域分配了一个区域、机架、群集或者主机。
  • 严格的潜在专用:一个主机禁止通过多个账号共享。例如,严格私自共享对于部署的某些应用是有用处的,像没有软件授权主机不能在不同账号间进行桌面共享。
  • 优先的潜在专用。如果可以的话,VM会被部署在专用的基础架构中。否则,VM可被部署在共享基础架构中。

如何给帐户或者域指定一个区域、群集、机架或者主机

对于明确的专用:当部署一个新的区域、机架、群集或者主机的时候,根管理员可以点击Dedicated选框,然后选择域或者帐户来拥有这些资源。

对于明确的专用一个已存在的区域、机架、群集或者主机:使用根管理员登录,在UI中找到资源,然后点击Dedicate按钮。button to dedicate a zone, pod,cluster, or host

对于隐式的专用:管理员创建的计算服务方案和在部署规划区域选择ImplicitDedicationPlanner。然后在规划模型中,管理员按照是否允许一些人当没有专用资源可用的时候使用共享资源来选择严格的或者优先的。无论何时,用户基于这个服务方案创建的VM都会位于专用主机。

如何使用专用主机

要使用明确专用主机,在关联组 (参阅 “关联组”)中选择explicit-dedicated 类型。比如,当创建新VM的时候,终端用户可以选择将其运行在专用基础架构上。如果一些基础架构已经被分配给专用的用户帐号或域,那么这个操作才能成功。

专用主机、群集、机架和区域的行为

管理员可以将VMs从专用主机上迁移到任何想要的地方,不管目标主机是不同帐号/域专用的还是共享的主机(不对任何特殊帐号或域专用)。CloudStack将生成一个警告,不过操作还是允许的。

专用主机可用主机标签连接。如果同时需要主机标签和专用,那么VM将只会在匹配所有需求的主机上运行。如果没有专用资源可用于这类用户,那么VM就不会被不部署。

如果你删除了一个指定了专用资源的帐号或者域,那么其中的任何主机、群集、机架和区域就会被释放。它们会变成可被任何帐户或者域共享,或者管理员可选择重新把它们指定给不同的帐号或域。

系统VMs和虚拟路由器影响专用主机的行为。系统VMs和虚拟路由器由CloudStack系统账号拥有,并且它们可在任何主机上部署。它们不会伴随着明确专用主机。主机上的系统虚机和虚拟路由器使其不再适合作为严格的潜在专用主机。主机之所以不能用于严格的潜在专用主机,是因为主机已经有针对帐号(默认系统账号)的VMs。尽管如此,运行着系统VMs或虚拟路由器的主机可以被用于优先的潜在专用。

使用LDAP服务器用于用户验证

You can use an external LDAP server such as Microsoft Active Directory or ApacheDS to authenticate CloudStack end-users. CloudStack will search the external LDAP directory tree starting at a specified base directory and gets user info such as first name, last name, email and username.

To authenticate, username and password entered by the user are used. Cloudstack does a search for a user with the given username. If it exists, it does a bind request with DN and password.

To set up LDAP authentication in CloudStack, call the CloudStack API command addLdapConfiguration and provide Hostname or IP address and listening port of the LDAP server. You could configure multiple servers as well. These are expected to be replicas. If one fails, the next one is used.

The following global configurations should also be configured (the default values are for openldap)

  • ldap.basedn: Sets the basedn for LDAP. Ex: OU=APAC,DC=company,DC=com
  • ldap.bind.principal, ldap.bind.password: DN and password for a user who can list all the users in the above basedn. Ex: CN=Administrator, OU=APAC, DC=company, DC=com
  • ldap.user.object: object type of users within LDAP. Defaults value is user for AD and inetorgperson for openldap.
  • ldap.email.attribute: email attribute within ldap for a user. Default value for AD and openldap is mail.
  • ldap.firstname.attribute: firstname attribute within ldap for a user. Default value for AD and openldap is givenname.
  • ldap.lastname.attribute: lastname attribute within ldap for a user. Default value for AD and openldap is sn.
  • ldap.username.attribute: username attribute for a user within LDAP. Default value is SAMAccountName for AD and uid for openldap.
Restricting LDAP users to a group:
  • ldap.search.group.principle: this is optional and if set only users from this group are listed.
LDAP SSL:

If the LDAP server requires SSL, you need to enable the below configurations. Before enabling SSL for LDAP, you need to get the certificate which the LDAP server is using and add it to a trusted keystore. You will need to know the path to the keystore and the password.

  • ldap.truststore : truststore path
  • ldap.truststore.password : truststore password
LDAP groups:
  • ldap.group.object: object type of groups within LDAP. Default value is group for AD and groupOfUniqueNames for openldap.
  • ldap.group.user.uniquemember: attribute for uniquemembers within a group. Default value is member for AD and uniquemember for openldap.

Once configured, on Add Account page, you will see an “Add LDAP Account” button which opens a dialog and the selected users can be imported.

_images/CloudStack-ldap-screen1.png

You could also use api commands: listLdapUsers, ldapCreateAccount and importLdapUsers.

Once LDAP is enabled, the users will not be allowed to changed password directly in cloudstack.

Using a SAML 2.0 Identity Provider for User Authentication

You can use a SAML 2.0 Identity Provider with CloudStack for user authentication. This will require enabling the SAML 2.0 service provider plugin in CloudStack. To do that first, enable the SAML plugin by setting saml2.enabled to true and restart management server.

Starting 4.5.2, the SAML plugin uses an authorization workflow where users should be authorized by an admin using authorizeSamlSso API before those users can use Single Sign On against a specific IDP. This can be done by ticking the enable SAML Single Sign On checkbox and selecting a IDP when adding or importing users. For existing users, admin can go to the user’s page and click on configure SAML SSO option to enable/disable SSO for a user and select a Identity Provider. A user can be authorized to authenticate against only one IDP.

The CloudStack service provider metadata is accessible using the getSPMetadata API command, or from the URL http://acs-server:8080/client/api?command=getSPMetadata where acs-server is the domain name or IP address of the management server. The IDP administrator can get the SP metadata from CloudStack and add it to their IDP server.

To start a SAML 2.0 Single Sign-On authentication, on the login page users need to select the Identity Provider or Institution/Department they can authenticate with and click on Login button. This action call the samlsso API command which will redirect the user to the Identity Provider’s login page. Upon successful authentication, the IdP will redirect the user to CloudStack. In case a user has multiple user accounts with the same username (across domains) for the same authorized IDP, that user would need to specify domainpath after selecting their IDP server from the dropdown list. By default, users don’t need to specify any domain path. After a user is successfully authenticated by an IDP server, the SAML authentication plugin finds user accounts whose username match the username attribute value returned by the SAML authentication response; it fails only when it finds that there are multiple user accounts with the same user name for the specific IDP otherwise the unique useraccount is allowed to proceed and the user is logged into their account.

Limitations:

  • The plugin uses a user attribute returned by the IDP server in the SAML response to find and map the authorized user in CloudStack. The default attribute is uid.
  • The SAML authentication plugin supports HTTP-Redirect and HTTP-Post bindings.
  • Tested with Shibboleth 2.4, SSOCircle, Microsoft ADFS, OneLogin, Feide OpenIDP, PingIdentity.

The following global configuration should be configured:

  • saml2.enabled: Indicates whether SAML SSO plugin is enabled or not true. Default is false
  • saml2.sp.id: SAML2 Service Provider Identifier string
  • saml2.idp.metadata.url: SAML2 Identity Provider Metadata XML Url or Filename. If a URL is not provided, it will look for a file in the config directory /etc/cloudstack/management
  • saml2.default.idpid: The default IdP entity ID to use only in case of multiple IdPs
  • saml2.sigalg: The algorithm to use to when signing a SAML request. Default is SHA1, allowed algorithms: SHA1, SHA256, SHA384, SHA512.
  • saml2.redirect.url: The CloudStack UI url the SSO should redirected to when successful. Default is http://localhost:8080/client
  • saml2.sp.org.name: SAML2 Service Provider Organization Name
  • saml2.sp.org.url: SAML2 Service Provider Organization URL
  • saml2.sp.contact.email: SAML2 Service Provider Contact Email Address
  • saml2.sp.contact.person: SAML2 Service Provider Contact Person Name
  • saml2.sp.slo.url: SAML2 CloudStack Service Provider Single Log Out URL
  • saml2.sp.sso.url: SAML2 CloudStack Service Provider Single Sign On URL
  • saml2.user.attribute: Attribute name to be looked for in SAML response that will contain the username. Default is uid
  • saml2.timeout: SAML2 IDP Metadata refresh interval in seconds, minimum value is set to 300. Default is 1800

使用项目来组织用户资源

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

使用项目来管理用户和资源。

项目概览

项目用来管理用户和资源。处于单独域中的CloudStack用户可以自组,他们可以集中并分享虚拟资源,如VM、快照、模板、磁盘、IP地址等。CloudStack可以像跟踪每个用户一样跟踪每个项目的资源,所以可以按照用户或者项目对资源使用收费。例如,一个软件公司的私有云可能将所有QA部门的员工分配到一个项目,当需要在测试中区分同一云中该项目组员工的贡献时,测试中的资源跟踪将变的容易。

你可以配置 CloudStack允许任何用户创建项目,或者你也可以只允许CloudStack管理员进行此项操作。一旦你创建了项目,你就成为项目管理员,你可以将域中的其他用户加入到项目。CloudStack可以设置成将用户直接加入项目或者向接受者发送邀请。项目组成员可以浏览和管理项目中的所有虚拟资源(例如,共享VM)。一个用户可以属于任何项目组,并可在CloudStack界面中切换只与项目相关的信息,如项目VM,项目成员,项目相关警告等。

项目管理员可以将角色传递给项目另外的成员。项目管理员也可以添加、删除项目成员,设置新的资源限制(只要在CloudStack管理员默认的全局设置范围之内),删除项目。当管理员将成员移出项目,那个成员所创建的资源,如VM实例,仍旧在项目中。这将我们带到了资源归属以及项目可用资源的课题下.

项目内创建的资源为项目所有,不属于任何特殊的CloudStack帐户,仅能在项目内使用。属于一个或多个项目的用户扔可在这些项目之外创建资源,这些资源属于这个用户帐户;与项目使用和资源限制并不冲突。你可以在项目内创建项目级的网络来隔离流量,并提供网络服务,如端口转发,负载均衡,VPN,静态NAT。项目也可以在项目之外使用特定资源,只要这些资源是共享的。例如,域中的共享网络,公用模板对任何项目都是可用的。模板所有者如果赋予权限,项目也可以使用私有模板。项目可以使用域中设置的服务方案或磁盘方案;然后,你无法在项目层级创建私有服务和磁盘方案。

配置项目

在CloudStack用户使用项目前,CloudStack管理员必须设置不同的系统以支持它们,包括成员身份邀请,项目资源的限制,以及对谁可以创建项目的控制。

设置邀请

CloudStack可以设置成项目管理员直接添加用户或者向接受者发送邀请。邀请可以通过邮件或者用户的CloudStack帐户。如果你希望管理员使用邀请来添加项目成员,那么打开并设置CloudStack中的邀请属性。

  1. 使用管理员登录到CloudStack管理界面。

  2. 在左侧导航栏,点击 全局设置

  3. 在搜索栏中,输入项目,点击搜索按钮。 |搜索项目|

  4. 在搜索结果中,你还需要设置一些其他的参数来控制邀请行为。下表所示的是全局配置参数中与项目邀请相关的部分,点击编辑按钮设置每个参数。

    配置参数 描述
    project.invite.required 将值设置为 true以打开邀请特性。
    project.email.sender 邀请邮件中填入发送区域的邮件地址。
    project.invite.timeout 新成员对于邀请的允许响应时间。
    project.smtp.host 作为处理邀请的邮件服务器的主机名。
    project.smtp.password (可选)SMTP服务器要求的密码。你必须将project.smtp.username和project.smtp.useAuth也设置为true。
    project.smtp.port SMTP服务器的监听端口。
    project.smtp.useAuth 如果SMTP服务器需要用户名和密码,则设置为true
    project.smtp.username (可选) 用于SMTPU认证的用户名。必须将project.smtp.password 和project.smtp.useAuth也设置为true。
  5. 重启管理服务器:

    service cloudstack-management restart
    
设置项目的资源限制

CloudStack管理员可以设置全局默认限制来控制云中每个项目可拥有的资源量。该服务用来限制不可控的资源使用,如快照,IP地址,虚拟机实例。域管理员在域中可以覆盖个人项目中的这些资源限制,只要这些限制在CloudStack根管理员的全局默认限制范围内。CloudStack根管理员可以为云中的任何项目设置更低的资源限制。

按项目设置资源限制

The CloudStack root administrator or the domain administrator of the domain where the project resides can set new resource limits for an individual project. The project owner can set resource limits only if the owner is also a domain or root administrator.

新限制值必须小于 CloudStack系统管理员设置的全局限制值(参见`“设置项目的资源限制” <#setting-resource-limits-for-projects>`_)。如果项目中的某种资源数量已经超过了新限制值,现有资源不受影响。然而,该项目将不能再添加该类型的新资源,直到资源数低于新限制值。

  1. 使用管理员登录到CloudStack管理界面。
  2. 在左侧导航栏点击项目。
  3. 在选择视图选择项目。
  4. 点击您要操作的项目名称。
  5. 点击资源页。该页列出了项目当前可拥有的各类资源的最大数量。
  6. 为一种或几种资源输入新值。
  7. 点击应用
设置全局项目资源限制
  1. 使用管理员登录到CloudStack管理界面。

  2. 在左侧导航栏,点击 全局设置

  3. 在搜索栏输入“max.projects”,点击搜索按钮。

  4. 在搜索结果中,你可以看到应用于云中所有项目的参数,你可以使用它们设置每个项目的最大资源量。没有项目能拥有更多资源,但个人项目能拥有更低的限制。点击编辑按钮设置每个参数。|编辑参数|

    max.project.public.ips 项目拥有的公共IP最大值,参看公共IP地址。
    max.project.snapshots 项目可拥有的最大快照数。参看工作相关快照。
    max.project.templates 项目可拥有的最大模板数。参看工作相关模板。
    max.project.uservms 项目中的虚拟客户机最大数目。参看工作相关虚拟机。
    max.project.volumes 项目中所拥有的最大数据卷数,参看工作相关卷。
  5. 重启管理服务器。

    # service cloudstack-management restart
    
设置项目创建许可

你可以配置 CloudStack允许所有用户创建新项目,或限制只有 CloudStack管理员具备此项能力。

  1. 使用管理员登录到CloudStack管理界面。

  2. 在左侧导航栏,点击 全局设置

  3. 在搜索框中,输入allow.user.create.projects。

  4. 点击编辑按钮设置参数。|编辑参数|

    allow.user.create.projects

    设置为true以允许端用户创建项目。设置为false如果你仅希望CloudStack根管理员和域管理员创建项目。

  5. 重启管理服务器。

    # service cloudstack-management restart
    

创建新项目

CloudStack系统管理员和域管理员能创建项目。如果全局变量allow.user.create.projects设置为true,终端用户也能创建项目。

  1. 使用管理员登录到CloudStack管理界面。
  2. 在左侧导航栏点击项目。
  3. 在选择视图点击项目。
  4. 点击新建项目。
  5. 为项目命名并添加描述,然后点击创建项目。
  6. 会出现一个界面,你可以很快的添加更多成员到项目中,此步可选。当你准备好继续,点击下一步。
  7. 点击保存。

添加成员到一个项目

项目管理员、项目所属域的域及其父域的管理员,CloudStack根管理员均可以添加新成员。CloudStack有两种方法可以添加成员,但每次只能使能一种:

  • 如果邀请已被使能,你可以向新成员发送邀请。
  • 如果邀请未被使能,你可以直接通过界面添加成员。
发送项目成员关系邀请

如果邀请特性按照 `“设置邀请” <#设置邀请>`_中描述的方式被打开,使用这些步骤添加项目成员。如果邀请特性没有被打开,使用在界面中添加项目成员的步骤。

  1. 登录到CloudStack的界面
  2. 在左侧导航栏点击项目。
  3. 在选择视图选择项目。
  4. 点击您要操作的项目名称。
  5. 点击邀请标签。
  6. 在添加中,选择以下其中一个:
    1. 帐户 – 邀请将出现在用户项目概览的邀请标签中。参见使用项目概览。
    2. 邮件 – 邀请将发送到用户的邮箱地址。每个被发送的邀请中包含一个唯一的编码,称为令牌,当接收者接受邀请时需要向 CloudStack提供此令牌。只有当SMTP服务器相关的参数设置完毕后,邮件邀请才能工作。参见`“设置邀请” <#setting-up-invitations>`_。
  7. 输入想要添加的新用户的用户名称或邮件地址,点击邀请。如果你在前述步骤中选择了帐户那么输入CloudStack用户名。如果你选择了邮箱,那么输入邮箱地址,你只能邀请在云中拥有帐户并在与项目组同一域中的用户。然而,你可以向任何邮箱发送邀请。
  8. 为了浏览和管理你所发送的邀请,返回到这个标签。当邀请被接受,新成员将显示在项目帐户标签中。
在界面中添加项目成员

下面的步骤介绍在邀请特性未使能的情况下如何添加项目新成员。如果邀请特性已按照 `“设置邀请” <#设置邀请>`_在云中被使能,那么使用 `“发送项目成员关系邀请” <#发送项目成员关系邀请>`_中的步骤。

  1. 登录到CloudStack的界面
  2. 在左侧导航栏点击项目。
  3. 在选择视图选择项目。
  4. 点击您要操作的项目名称。
  5. 点击项目按钮,项目目前的成员将被列表显示。
  6. 输入你想添加的新成员帐户名称,点击添加帐户。你只能添加云中已有并与项目存在于相同域中的帐户。

接受成员关系邀请

如果你收到了一个加入CloudStack项目的邀请,并希望接受邀请,请按照以下步骤:

  1. 登录到CloudStack的界面

  2. 在左侧导航栏点击项目。

  3. 在选择概览,选择邀请。

  4. 如果你看到有邀请列表显示,点击接受按钮。

    屏幕上所显示的邀请是通过你的CloudStack帐户发送的。

  5. 如果你收到的是邮件邀请,点击输入令牌按钮,提供邮件中的项目ID和唯一的ID编码(令牌)。

挂起或删除项目

当项目被挂起,它仍保有资源,但这些资源不能被使用。新资源及用户不能被加入到挂起的项目。

当项目被删除,资源将被销毁,成员帐户也从项目中移除。项目状态被显示为禁止有待最后删除。

项目可以被管理员,项目所属的域及其父域管理员, CloudStack根管理员挂起或删除,

  1. 登录到CloudStack的界面

  2. 在左侧导航栏点击项目。

  3. 在选择视图选择项目。

  4. 点击项目名称。

  5. 点击以下按钮:

    使用 |移除项目|进行删除

    使用 |挂起项目|进行挂起

使用项目概览

如果你是项目成员,你可以通过CloudStack项目概览查看项目成员,资源消耗等。项目概览仅显示与一个项目相关的信息,从众多信息中筛选出项目状态及资源,这是种有效的方法。

  1. 登录到CloudStack的界面
  2. 点击项目概览。
  3. 出现项目控制板,显示项目VM,卷,用户,事件,网络设置等,在控制板中,你可以:
    • 点击帐户按钮浏览和管理项目成员。如果你是项目管理员,你可以添加新成员,或者将成员从用户改为管理员。每次只有一名成员能成为管理员,如果你将另外的用户设置为管理员,你将成为普通用户。
    • (如果邀请已被使能)点击邀请按钮来浏览或管理已经想新项目成员发出未被接受的邀请。有待确认的邀请将一直在列表中知道被新成员接受,或邀请时间超时,或你取消了邀请。

服务方案

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

服务方案

除了云中的物理和逻辑基础设施以及 CloudStack 软件和服务器,你还需要一个用户服务层以便让人们能够真正利用云。这不仅仅意味这一个用户界面,而是一组用户可选择的选项和资源,如通过模版创建虚拟机,磁盘存储等等。如果您正在运行一个商业服务,您将可以跟踪服务和用户资源的使用以及使用计费情况。即使你不对使用云的人收费,-比如说,用户是你的内部组织,或只是你的朋友共享你的云 - 你仍然可以跟踪他们所使用的服务以及有多少人。

服务方案,磁盘方案,网络方案和模版

用户可以根据不同的功能和特性来创建新的实例,CloudStack提供了几种方法供用户选择以便创建一个新的实例:

  • 服务方案,由CloudStack管理员定义,提供了CPU速率,CPU核数,内存大小,根磁盘标签等多种选项供选择。可参阅创建新的计算方案。
  • 磁盘方案,由CloudStack管理员定义,针对主数据存储提供磁盘大小和IOPS(QOS)等选项供选择。可参阅创建新的磁盘方案。
  • 网络方案,由 CloudStack 管理员定义,约定来宾网络中虚拟路由器或外部网络设备提供给终端用户可用的功能描述集。
  • 模版,由CloudStack管理员或其他CloudStack用户定义,用户创建新的实例时可选择的基本操作系统镜像。例如,CloudStack中包含的CentOS模版。可参阅使用模版。

除了给用户提供了这些选择,还有另一种类型的服务方案只提供给CloudStack管理员,用于配置虚拟基础设施资源。欲了解更多信息,请参阅使用系统服务方案升级虚拟路由器。

计算和磁盘服务方案

一个服务方案是一个虚拟硬件特征集合,比如 CPU 核心数量和速度,内存,已经磁盘大小。 CloudStack 管理员可以建立各种方案,接着终端用户在建立一个新虚拟机时就可以选择可用方案。基于用户的选择方案, CloudStack 可以发送整合在计费系统中的使用记录。

CloudStack 管理员必须定义一些服务方案的特征,同时留下一些未定义的,让终端用户输入自己需要的值。这个对于降低 CloudStack 管理员定义的方案的数量很有用处。代替为每个用户定义一个他们想要可能组合值的计算方案,管理员可以为用户定义灵活的计算方案,并作为基本的若干不同虚拟机配置。

一个服务方案包含以下元素:

  • 必备的CPU,内存和网络资源
  • 如何计算资源
  • 使用资源如何收费
  • 产生了多少费用

比如,一个服务方案允许用户创建一个虚拟机实例,这个实例等于: 1 GHz Intel® Core™ 2 CPU, $0.20/hour 的 1G 内存, $0.10/GB. 的网络流量。

CloudStack 把服务方案分割为计算方案和磁盘放哪。计算方案指定:

  • 来宾 CPU(可选)。如果 CloudStack 管理员未定义,用户可选择 CPU 特性。
  • 来宾 RAM ( 可选)。如果 CloudStack 管理员未定义,用户可选择 RAM。
  • 来宾网络类型(虚拟或者直连)
  • 根磁盘标签

磁盘方案特指:

  • 磁盘大小 (可选)。如果 CloudStack 管理员未定义,用户可选择磁盘大小。
  • 数据磁盘标签
自定义计算方案

CloudStack provides you the flexibility to specify the desired values for the number of CPU, CPU speed, and memory while deploying a VM. As an admin, you create a Compute Offering by marking it as custom, and the users will be able to customize this dynamic Compute Offering by specifying the memory, and CPU at the time of VM creation or upgrade. Custom Compute Offering is same as the normal Compute Offering except that the values of the dynamic parameters will be set to zeros in the given set of templates. Use this offering to deploy VM by specifying custom values for the dynamic parameters. Memory, CPU and number of CPUs are considered as dynamic parameters.

动态计算方案可以在下列情况下使用:部署虚拟机,改变停止状态虚拟机和运行中的虚拟机的计算方案,单独扩容。为了支持此功能的新字段,自定义,已经被添加到创建计算方案页面。如果自定义字段被选中,用户将可以通过填写所需 CPU ,CPU 速度和内存数量的值来创建自定义计方案。看到了吗?有关它的更多信息。

Recording Usage Events for Dynamically Assigned Resources.

为了支持该功能,使用事件已经被增强到动态分配资源注册事件中。当从一个自定义计算方案创建一个虚拟机时,使用事件被注册,并紧接更改处于停止状态或者运行状态虚拟机的计算方案。如 CPU ,速度,RAM 这些参数的值被记录下来。

创建一个新的计算方案

为了创建一个新的计算方案

  1. 以管理员权限登录CloudStack用户界面。

  2. 在左侧导航栏中,点击 服务方案。

  3. 选择方案中,选择计算方案

  4. 点击 添加计算方案

  5. 在对话框中,选择如下操作:

    • ** 名称 **: 服务方案所需的名称。

    • ** 描述 ** :显示给用户的简短方案描述。

    • ** 存储类型 *:磁盘类型应该被分配。系统VM 运行时所在主机挂载的存储作为本地分配。通过 NFS 可访问的存储作为 共享分配。

    • ** 自定义 ** :自定义计算方案使用在以下场景:部署虚拟机,改变停止状态和运行中虚拟机的计算方案,仅仅为了扩大规模。

      如果自定义字段被选中,最终用户必须为CPU,CPU速度和RAM存储器的数量所需的值使用自定义计算产品时填写。当您选中该复选框,这三个输入字段隐藏在该对话框。

    • # of CPU cores: 在该方案中分配核心数量给系统 VM , 如果选择自定义,该区域不会出现。

    • ** CPU (in MHz) **: 分配给系统 VM 的 CPU 核心速度。比如 “ 2000 ” 将提供 2 GHz 时钟频率。如果选择订制,该区域不会出现

    • ** Memory (in MB) **: 分配给系统 VM 的内存M数。比如,, “ 2048 ” 应该提供 2 G RAM。如果选择订制,该区域不会出现。

    • 网络速度: 允许的数据传输速度(MB/秒)。

    • ** 磁盘读取速率 ** :磁盘每秒允许读取的bit数

    • ** 磁盘写入速率 **: 磁盘每秒允许写入的bit数。

    • ** 磁盘读取速率 ** : IPOS (每秒的输入/输出操作 )中运行磁盘读取的速率

    • ** 磁盘写入速率 ** : IPOS (每秒的输入/输出操作 )中运行磁盘写入的速率

    • ** HA 方案 ** : 如果必要,管理员可以选择监控系统 VM 和尽可能采用高可用。

    • QoS Type: Three options: Empty (no Quality of Service), hypervisor (rate limiting enforced on the hypervisor side), and storage (guaranteed minimum and maximum IOPS enforced on the storage side). If leveraging QoS, make sure that the hypervisor or storage system supports this feature.

    • Custom IOPS: If checked, the user can set their own IOPS. If not checked, the root administrator can define values. If the root admin does not set values when using storage QoS, default values are used (the defauls can be overridden if the proper parameters are passed into CloudStack when creating the primary storage in question).

    • Min IOPS: Appears only if storage QoS is to be used. Set a guaranteed minimum number of IOPS to be enforced on the storage side.

    • Max IOPS: Appears only if storage QoS is to be used. Set a maximum number of IOPS to be enforced on the storage side (the system may go above this limit in certain circumstances for short intervals).

    • Hypervisor Snapshot Reserve: For managed storage only. This is a value that is a percentage of the size of the root disk. For example: if the root disk is 20 GB and Hypervisor Snapshot Reserve is 200%, the storage volume that backs the storage repository (XenServer) or datastore (VMware) in question is sized at 60 GB (20 GB + (20 GB * 2)). This enables space for hypervisor snapshots in addition to the virtual disk that represents the root disk. This does not apply for KVM.

    • ** 存储标签 ** :这个标签应该和系统 VM 使用的主存储相关联。

    • ** 主机标签 ** :(可选)用于组织你的主机的任何标签。

    • ** CPU 容量 ** : 是否限制CPU使用率的水平,即使备用容量仍可用。

    • ** 公共 ** : 指明系统方案是对所有域或者部分域是否可用。 选择 Yes 则所有域可用。选择 No 则限制一定范围的域可用; CloudStack 会给出一个字域名字提示。

    • ** 隔离 ** : 如果选中,从这个服务方案创建的虚拟机重启复位后都会有自己的根磁盘。这对于需要通过重启获得全新开始和无需保持桌面状态的安全环境中非常有用。

    • ** 部署方案 ** :当部署基于这个服务方案的虚拟机时,你会让 CloudStack 选择使用这个技术。

      首先,存放新虚拟机的第一台主机必须有足够的容量来满足虚拟机的要求。

      User Dispersing makes the best effort to evenly distribute VMs belonging to the same account on different clusters or pods.

      用户更倾向于集中部署同一帐户内的虚拟机在单一提供点.

      默认将虚拟机部署在特定域或账户的专属基础设施中。如果你选择,那么你必须为规划者参考 “ 为账号和域指定资源 ”.

      裸机协同全裸机使用。参考安装向导中的全裸机安装。

    • ** 方案模式 ** :当在之前场景中默认指定方案被选中时使用。方案模式决定了在分享的单独域或账户的私有基础架构中部署多少虚拟机。

      严禁:一个主机禁止通过多个账号共享。例如,严格默认指定对于部署的某些应用是有用处的,例如,在无隔离桌面软件授权主机上不能在不同账号间进行桌面共享。

      优先:VM 尽可能的部署在专属基础架构。否则部署在共享基础架构。

    • GPU: Assign a physical GPU(GPU-passthrough) or a portion of a physicalGPU

      GPU card(vGPU) to the guest VM. It allows graphical applications to run on the VM. Select the card from the supported list of cards.

      The options given are NVIDIA GRID K1 and NVIDIA GRID K2. These are vGPU capable cards that allow multiple vGPUs on a single physical GPU. If you want to use a card other than these, follow the instructions in the “GPU and vGPU support for CloudStack Guest VMs” page in the Cloudstack Version 4.4 Design Docs found in the Cloudstack Wiki.

    • vGPU Type: Represents the type of virtual GPU to be assigned to a guest VM. In this case, only a portion of a physical GPU card (vGPU) is assigned to the guest VM.

      Additionally, the passthrough vGPU type is defined to represent a physical GPU device. A passthrough vGPU can directly be assigned to a single guest VM. In this case, a physical GPU device is exclusively allotted to a single guest VM.

  6. 点击 添加

创建一个新的磁盘方案

为了创建一个新的磁盘方案

  1. 以管理员权限登录CloudStack用户界面。
  2. 在左侧导航栏中,点击 服务方案。
  3. 在选择方案中,选择 磁盘方案
  4. 点击 添加磁盘方案
  5. 在对话框中,选择如下操作:
    • Name: Any desired name for the disk offering.
    • ** 描述 ** :显示给用户的简短方案描述。
    • Custom Disk Size: If checked, the user can set their own disk size. If not checked, the root administrator must define a value in Disk Size.
    • Disk Size: Appears only if Custom Disk Size is not selected. Define the volume size in GB (2^30 1GB = 1,073,741,824 Bytes).
    • QoS Type: Three options: Empty (no Quality of Service), hypervisor (rate limiting enforced on the hypervisor side), and storage (guaranteed minimum and maximum IOPS enforced on the storage side). If leveraging QoS, make sure that the hypervisor or storage system supports this feature.
    • Custom IOPS: If checked, the user can set their own IOPS. If not checked, the root administrator can define values. If the root admin does not set values when using storage QoS, default values are used (the defauls can be overridden if the proper parameters are passed into CloudStack when creating the primary storage in question).
    • Min IOPS: Appears only if storage QoS is to be used. Set a guaranteed minimum number of IOPS to be enforced on the storage side.
    • Max IOPS: Appears only if storage QoS is to be used. Set a maximum number of IOPS to be enforced on the storage side (the system may go above this limit in certain circumstances for short intervals).
    • Hypervisor Snapshot Reserve: For managed storage only. This is a value that is a percentage of the size of the data disk. For example: if the data disk is 20 GB and Hypervisor Snapshot Reserve is 200%, the storage volume that backs the storage repository (XenServer) or datastore (VMware) in question is sized at 60 GB (20 GB + (20 GB * 2)). This enables space for hypervisor snapshots in addition to the virtual disk that represents the data disk. This does not apply for KVM.
    • (Optional)Storage Tags: The tags that should be associated with the primary storage for this disk. Tags are a comma separated list of attributes of the storage. For example “ssd,blue”. Tags are also added on Primary Storage. CloudStack matches tags on a disk offering to tags on the storage. If a tag is present on a disk offering that tag (or tags) must also be present on Primary Storage for the volume to be provisioned. If no such primary storage exists, allocation from the disk offering will fail..
    • ** 公共 ** : 指明系统方案是对所有域或者部分域是否可用。 选择 Yes 则所有域可用。选择 No 则限制一定范围的域可用; CloudStack 会给出一个字域名字提示。
  6. 点击 添加
修改或删除一个服务方案

服务方案一旦被创建则不能被修改。这个特性同样适用于计算方案和磁盘方案。

系统服务方案可以被删除。它不再处于使用中,它可以被立即永久删除。如果服务方案处于使用中,它会留在数据库中,直到所有引用它的虚拟机被删除。管理员删除后,管理员创建新的虚拟机时这个服务方案将不可用。

系统服务方案

系统服务方案提供CPU速度,CPU数量,标签和RAM大小的选择,就像其他服务方案那样。但不被用于虚拟机实例和暴露给用户,系统服务方案是用来改变虚拟路由器,console 代理,和其他系统的虚拟机的默认属性。系统服务方案只对 CloudStack中 root 管理员是可见的。CloudStack 提供默认的系统管理方案。CloudStack 中 root 管理员可以创建其他自定义系统服务方案。

当 CloudStack 中创建一个虚拟路由器的来宾网络,它使用系统服务方案中的默认设置和网络方案进行关联。你可以通过应用包含不同的系统服务方案的网络方案升级的虚拟路由器的功能。该网络中的所有虚拟路由器将使用来自新服务方案的设置。

创建一个新的系统服务方案

为了创建一个系统服务方案:

  1. 以管理员权限登录CloudStack用户界面。
  2. 在左侧导航栏中,点击 服务方案。
  3. 在选择方案中,选择 系统方案
  4. 点击 添加系统服务方案
  5. 在对话框中,选择如下操作:
    • 名称。系统方案任意名称。
    • 描述。显示给用户的方案简短描述。
    • 系统 VM 类型。选中方案支持的系统虚拟机的类型。
    • 存储类型。应该指明磁盘类型。运行中的虚拟机所在主机关联的存储采用本地分配。通过 NFS 可访问存储共享分配。
    • # CPU 核心。方案中提供给系统 VM 可分配的核心数量。
    • CPU ( MHz )。 分配给系统 VM CPU 核心频率。例如,” 2000 “ 将提供一个2 GHz 时钟。
    • 内存 ( MB )。系统 VM 应该总计分配兆字节内存。例如,” 2048 “ 应该分配 2GB RAM.
    • 网络速率。每秒允许传输多少 MB 数据。
    • 提供HA。如果提供,管理员可以为监控系统 VM 并且提供必要的高可用。
    • 存储标签。它应该和系统 VM 使用的主存储相关联。
    • 主机标签。 ( 可选 )你可以选择任何标签用于规范你的主机。
    • CPU 容量。是否限制 CPU 使用水平不管是否还有可用的空闲容量。
    • ** 公共 ** : 指明系统方案是对所有域或者部分域是否可用。 选择 Yes 则所有域可用。选择 No 则限制一定范围的域可用; CloudStack 会给出一个子域名字提示。
  6. 点击 添加

网络限速

网络限速是基于明确规则来控制网络访问和带宽使用率的一个进程。 CloudStack 中通过网络速率参数来控制来宾网络在云中的行为。这个参数定义一个来宾网络允许的默认数据传输速率为 Mbps (兆比特每秒)。它定义了网络利用上限。如果目前的使用率低于允许的上限,则允许访问,否则拒绝。

你可以在大型云环境中通过限制一些账户明确的使用率或拥塞控制来节省网络带宽。以下是可以在你的云中进行配置的网络速率:

  • 网络方案
  • 服务方案
  • 全局参数

服务方案中如果网络速率设置为 NULL , vm.network.throttling.rate 值作为全局参数被应用。网络方案中如果这个值设置为 NULL 。network.throttling.rate 值被看做全局参数。

对于默认的公共,存储和管理网络,网络速度被设置为0,这意味着,公共,存储和管理网络默认不被限制带宽。对于默认来宾网络,网络速率设置为 NULL 。在这种情况下,网络速率被默认为全局参数值。

你可以在大型云环境中通过限制一些账户明确的使用率或拥塞控制来节省网络带宽。以下是可以在你的云中进行配置的网络速率:

网络 网络速率起源
来宾网络虚拟路由器 来宾网络方案
公网网络虚拟路由器 来宾网络方案
辅助存储 VM 的存储网络 系统网络方案
辅助存储 VM 的管理网络 系统网络方案
Console 代理 VM 的存储网络 系统网络方案
Console 代理 VM 的管理玩了过 系统网络方案
虚拟路由器的存储网络 系统网络方案
虚拟路由器的管理网络 系统网络方案
辅助存储 VM 的公共网络 系统网络方案
Console 代理 VM 的公共玩了过 系统网络方案
Console 代理 VM 的默认网络 计算方案
来宾 VM 的附加网络 对应的网络方案

一个来宾虚拟机必须有一个默认网络,也可拥有多个附加网。根据各种参数,如主机和虚拟交换机使用,你可以观察到在云网络中的不同速率。例如,在 VMware 主机的实际网络速率依赖于其他配置( 计算方案,网络方案,或两者兼有 );网络类型( 共享或隔离 )和流量方向( 入口或出口 )。

CloudStack 中特定网络使用网络方案的网络速率设置将应用到端口组的流量整形策略中。例如:端口组 A , 网络 : 现实网络的特定子网或 VLAN 。网络通过虚拟路由器连接端口组 A ,同时网络中默认实例也连接该端口组。尽管如此,如果通过设置了网络速率的计算方案部署虚拟机,并且如果这个网络速率通过流量整形策略应用到其他端口组。例如端口组 B , 使用该计算方案的实例连接到端口组 B 将 替换到端口组 A 的连接。

VMWARE中基于标准端口组流量整形策略只被应用于出口流量,并且网络效果依赖于 CloudStack 中使用的网络类型。共享网络中,不限制 CloudStack 入口流量,同时限制出口流量到任何实例应用到端口组的速率。如果计算方案配置了网络速率,速率应用到出口流量,否则应用网络方案的网络速率设置。对于隔离网络,网络方案设置网络速率,如果明确了范围,会对入口流量产生影响。这个主要是因为网络方案的网络速率设置应用在虚拟路由器到实例之间的出口流量上。在一定范围内,实例通过端口组速率限制出口流量,这个和共享网络类似。

例如:

网络方案网络速率 = 10 Mbps

计算方案网络速率 = 200 Mbps

共享网络中。CloudStack 这种进入流量不进行限制,同时出口流量限制为 200 Mbps。隔离网络入口流量限制为 10 Mbps,同时出口流量限制到 200 Mbps

修改系统 VM 的默系统方案

你可认为的修改一个特殊系统 VM 的系统方案。此外,作为一个 CloudStack 管理员,你也可以改变系统 VM 使用的默认系统方案。

  1. 创建一个新的系统方案

    获取更多信息,查看 创建一个新的系统服务方案

  2. 备份数据库:

    mysqldump -u root -p cloud | bzip2 > cloud_backup.sql.bz2
    
  3. 打开一个 MySQL 提示:

    mysql -u cloud -p cloud
    
  4. 在 cloud 数据库运行以下查询。

    1. 在磁盘 _offering 表,验证原始默认方案和你想默认使用的新方案。

      记录新方案的 ID

      select id,name,unique_name,type from disk_offering;
      
    2. 对于原始默认方案,设置 _name 唯一值为 NULL

      # update disk_offering set unique_name = NULL where id = 10;
      

      确保你使用正确的 ID 值

    3. 对于你想使用默认值的新方案,参照以下进行唯一 _name 值设置:

      对于默认控制台代理虚拟机 ( CPVM )方案, 设置唯一 _name 为 ‘ Cloud.com-ConsoleProxy ‘。对于默认辅助存储虚拟机 ( SSVM ) 方案, 设置唯一 _name 为 ‘ Cloud.com-SecondaryStorage ‘。例如:

      update disk_offering set unique_name = 'Cloud.com-ConsoleProxy' where id = 16;
      
  5. 重启 CloudStack 管理器服务器。因为默认方案启动时被加载到内存,要求重启。

    service cloudstack-management restart
    
  6. 销毁存在的 CPVM 或 SSVM 方案,并等待它们重建。 通过新的系统方案配置新的 CPVM 或 SSVM。

用户网络设置

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

用户网络设置

用户网络设置概览

当涉及到云计算所提供的网络服务, 使用云基础设施的人都有各自不同的需求和喜好. 作为CloudStack管理员, 你可以为你的用户做下面的事情来设置网络:

  • 在资源域里设置物理网络
  • 在单个物理网卡上为同一服务设置不同的服务提供者(例如, 同时设置Cisco和Juniper的防火墙)
  • 绑定不同类型的网络服务到网络方案中, 这样用户可以在给定的虚机中使用期望的网络服务.
  • 随着时间的推移, 添加新的网络方案以便是最终用户升级他们的网络服务.
  • 提供更多的途径让一个用户访问一个网络, 比如通过用户所在的一个项目

关于虚拟网络

虚拟网络是使多租户在一个物理网络中的逻辑结构。在CloudStack中,虚拟网络可以被共享或隔离。

独立的网络

一个隔离的网络可以访问虚拟机的单一账户。隔离的网络具有下列性质。

  • 如VLAN等资源被动态分配和垃圾收集
  • 有一个用于整个网络的网络方案
  • 网络提供可升级或降级,但它是用于整个网络的

更多信息,参考`“在高级区域中配置来宾流量” <networking2.html#configure-guest-traffic-in-an-advanced-zone>`_.

共享网络

共享网络可以被属于不同客户的虚拟机访问。共享网络中的网络隔离通过安全组实现(仅在CloudStack 3.0.3及以后的基本区域中支持)

  • 管理员创建的共享网络
  • 在一个确定的哉中设计共享网络
  • 共享网络资源如VLAN和物理网络,它映射到指定的管理员
  • 共享网络通过安全组实现隔离
  • 公网网络作为一个共享网络不会展示给终端用户
  • 当共享网络是由虚拟路由提供的服务,则每个区域是不支持Source NAT功能的。然而,每个帐户是支持Source NAT功能的。更多信息,参考`“配置共享来宾网络” <networking2.html#configuring-a-shared-guest-network>`_.
虚拟网络资源的运行时分配

当你定义一个新的虚拟网络,该网络的所有的设置都存储在CloudStack中。只有当第一台虚拟机在该网络中启动时,实际的网络资源才会被激活。当所有的虚拟机都离开了虚拟网络,系统进行网络资源垃圾收集,使它们能够重新分配。这有助于节约网络资源。

网络服务提供者

注解

查看最新的网络服务提供者支持列表请见CloudStack用户界面或者调用listNetworkServiceProviders`.。

服务提供者(也称为网络元件)是指通过硬件或虚拟应用来实现网络应用。比如,防火墙应用可以安装在云端来提供防火墙服务。在独立网络中多个提供者能提供相同的网络服务。比如,可以通过思科或者Juniper的设备在同一个物理网络中提供防火墙服务。

在一个网络中你可以多个实例使用相同的服务提供者(也可以使用多个Juniper SRX设备)

如果不同提供者被设置在网络中提供相同服务,管理员可以通过创建网络提供方案,因此用户能够自己制定使用哪个物理网络提供者(要遵从网络提供方案中的其他选项)。否则CloudStack会在服务被需求的时候选择使用哪个提供者。

支持的网络服务提供者

CloudStack已经预置了一些内置的服务提供者支持列表。你能在创建网络提供方案的时候你能从这列表中选择。

  虚拟路由 Citrix NetScaler Juniper SRX F5 BigIP Host based (KVM/Xen)
远程访问VPN
DNS/DHCP/User Data
防火墙
负载均衡
弹性IP
弹性负载均衡
Source NAT
静态 NAT
端口转发

网络方案

注解

要查看最新的网络服务支持列表,请参见 CloudStack用户界面或者调用API listNetworkServices。

网络方案是带名称的一套网络服务,例如:

  • DHCP
  • DNS
  • Source NAT
  • 静态 NAT
  • 端口转发
  • 负载均衡
  • 防火墙
  • VPN
  • (可选)在服务的多个可选提供者中指定其一,例如Juniper作为防火墙服务
  • (可选)用于指定使用哪个物理网络的网络标签

用户创建虚机时,需要选择一种可用的网络方案。该网络方案确定了虚机可使用的网络服务。

CloudStack ;提供了默认的网络方案,在此之外,系统管理员可以添加任意数量的自定义网络方案。通过创建多种自定义网络方案,您可以在一个多租户的物理网络基础上提供不同级别的网络服务。例如,尽管两个租户的底层物理网络是一个,租户A可能仅需要用防火墙保护他们的网站,而租户B可能运行一个Web服务器集群,要求一个可扩展的防火墙方案、负载均衡方案、和用于访问后台数据库的可替代的网络。

注解

如果你创建了一个负载均衡规则且使用包括外部负载均衡设备的网络服务方案,如包括NetScaler,但随后将网络方案改成使用CloudStack的虚拟路由器,则你必须在虚拟路由器上创建一个防火墙规则,这些防火墙规则与已经设置的负载均衡规则一一对应,只有这样,才能使那些负载均衡规则继续起作用。

创建新虚拟网络时,CloudStack 管理服务器可选择该网络使用的网络方案。每个虚拟网络都关联一个网络方案。虚拟网络可以通过改变关联的网络方案来升级或降级。如果您要这样做,请确保调整物理网络以匹配网络方案。

CloudStack 中有给系统虚机使用的内部网络方案。内部网络方案对最终用户是不可见的,但系统管理员可以对其修改。

创建一个新的网络方案

创建一个新的网络方案

  1. 以管理员权限登录CloudStack用户界面。

  2. 在左侧导航栏中,点击 服务方案。

  3. 在选择方案中,选择网络方案。

  4. 点击添加网络方案。

  5. 在对话框中,选择如下操作:

    • 名称: 任何网络方案的名称。

    • 描述: 提供一个简短的方案描述。

    • 网络速度: 允许的数据传输速度(MB/秒)。

    • 来宾类型: 选择来宾网络为隔离或共享网络。

      关于此组的描述,参考 see “关于虚拟网络”.

    • 持续性: 表明来宾网络是否支持持续性。无需提供任何VM部署的网络,称之为持续性网络。更多信息,参考 “持久性网络”.

    • 指定VLAN.(只针对隔离来宾网络)这表明无论使用这个方案时是否指定了VLAN,如果你选中了这个选项,并且当你创建VPC层或隔离网络时使用了这个网络方案,那么,你都可以为你创建的网络拽定一个VLAN ID。

    • VPC: 此选项表明是否在来宾网络中启用VPC。 CloudStack中的虚拟专用云(VPC)是专用、隔离的。 一个VPC可以有一个类似于传统物理网络的虚拟网络拓扑结构。有关的VPC的详细信息,请参考 see “关于VPC”.

    • 支持的服务.选择一个或多个可能的网络服务。对于有一个服务,你还必须同时选择服务的提供者。比如,如果你选择了负载均衡服务,那你可以CLOUDSTACK虚拟路由或是云环境中其它配置了此功能的服务者。取决于你选择服务的不同,额外的选项或是对话框的填写项也会相应不同。

      基于你选择的来宾网络类型,可以看到如何支持的服务。

      支持的服务 描述 隔离 共享
      DHCP 更多信息,请参考 “DNS and DHCP”. 支持 支持
      DNS 更多信息,请参考 “DNS and DHCP”. 支持 支持
      负载均衡 如果选择了负载均衡功能,你就可以选择CLOUDSTACK虚拟路由或是云环境中其它配置了此服务的提供者。 支持 支持
      防火墙 更多信息,请参考管理指南 支持 支持
      Source NAT 如果选择了 Source NAT功能,你就可以选择CLOUDSTACK虚拟路由或是云环境中其它配置了此服务的提供者。 支持 支持
      静态 NAT 如果选择了Static NAT功能,你就可以选择CLOUDSTACK虚拟路由或是云环境中其它配置了此服务的提供者。 支持 支持
      端口转发 如果选择了端口转发功能,你就可以选择CLOUDSTACK虚拟路由或是云环境中其它配置了此服务的提供者。 支持 不支持
      VPN 更多信息,请参考`“Remote Access VPN” <networking2.html#remote-access-vpn>`_. 支持 不支持
      用户数据 更多信息,请参考 “用户数据和元数据”. 不支持 支持
      网络 ACL 更多信息,参考 “配置网络ACL”. 支持 不支持
      安全组 更多信息,请参考 “添加一个安全组”. 不支持 支持
    • 系统方案.如果你在任务服务提供者中选择了虚拟路由,那就会出现系统方案的填写项。选择你希望虚拟路由在此网络中提供的服务。比如,如果你选择了虚拟路由提供负载均衡服务,系统方案填写项就会出现,你可以选择CLOUDSTACK管理员定义的所有系统服务及默认服务。

      更多信息,参考 “系统服务方案”.

    • 负载均衡隔离:指定一种你希望的网络里的负载均衡隔离类型:共享的或单独的。

      单独的:如果你选择了单独的负载均衡隔离类型,这个区域内的单独负载均衡设备资源池里就会分出一个设备来供使用。如果没有足够的设备,网络创建就会失败。如果要在高流量环境充分利用设备,单独的负载均衡设备是一个很好的选择。

      共享的:如果你选择了共享的负载均衡设备, 这个区域内的共享负载均衡设备资源池里就会分出一个设备来供使用。CloudStack会将共享设备分配给不少于一定量的帐号共用,如果共享设备到达了最大数量,则这个设备不会再分配给新的帐号使用。

    • 模式: 你可以选择 Inline mode 或 Side by Side 模式:

      Inline mode: 这种模式只被Juniper SRX 和BigF5负载均衡设备支持。在Inline mode模式下,防火墙设备放在负载均衡设置的前端,这个防火墙作为进入流量的网关,所有的流量会被转发到后端的负载均衡设备上。在这种情况下,负载均衡不是直接连接到公网网络的。

      Side by Side*:在Side by Side模式下,防火墙设备和负载均衡设备是并列的。所以所有的流量都是直接到负载均衡设备而不经过防火墙。因此,负载均衡设备是直接暴露在公网中的。

    • 关联的公网IP:如果你想给来宾网络中的虚拟机直接分配公网IP,选择这个选项。这个选择只有在以下情况都满足时才有效:

      • 来宾网络被共享
      • 启用StaticNAT
      • 启用弹性IP

      更多信息,参考`“关于弹性IP” <networking2.html#about-elastic-ip>`_.

    • 冗余路由性能:这个选项只有在虚拟路由作为Source NAT提供者时才是可选的。如果你希望提供不间断的网络连接,选中这个选项,则系统会提供两个虚拟路由:一个主的,一个辅的。主虚拟路由负载收发用户虚拟机器的相关请深圳市。如主的路由DOWN掉时,由辅助路由升级为主路由接替工作。CloudStack 会将两个邪气路由分别部署在不同的主机上,以保证可用性。

    • Conserve mode: 这个选项表明是滞要使用Conserve模式。在这种模式下,网络资源只会分配给网络里第一个启动的虚拟机。当Conserve模式被关闭时,公网IP只能用于一个设备。比如,一个用于端口转发规则的公网IP不会被用于其它StaticNAT或是负载均衡服务。当Conserve模式启用时,你可以在同一个公网IP上定义多个服务。

      注解

      如果StaticNAT启用后,不考虑conseve模式的状态,则此IP不会创建端口转发或是负载均衡规则。然而,你可以通过 createFirewallRule命令添加防火墙规则。

    • 标签:网络标签用于指定所要使用的物理网络。

    • 默认外出策略: 为防火墙配置默认的外出流量规则。选项有阻止和允许。如果没有特别制定策略的话,所有外出流量都是允许的。这表明,从这个方案创建的客户网络是允许所有外出流量的。

      为了阻止客户网络的外出流量,选择阻止选项。在这种情况下,当你从一个隔离的客户网络配置一个外出规则时,添加一些特殊的规则以允许外出流量。

  6. 点击 添加

使用虚拟机

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

使用虚拟机

关于虚拟机的使用

CloudStack在云中为管理员提供了完整的管理所有来宾VMs整个生命周期的功能。CloudStack为终端用户和管理员提供了许多来宾虚机管理操作。VMs能被关机、开机、重启和销毁。

来宾VMs有名称和组。VM的名称和组对于CloudStack是不透明的,对终端用户整理他们的VMs可用。每个VM可以有三个用于不同环境的名称。其中有两个名字受用户控制:

  • 实例名称 – 一个唯一的,不可变的由CloudStack生成的ID,此ID不能被用户修改。此名称符合 IETF RFC 1123中的要求。
  • 显示名称 – 在CloudStack UI中显示的名称。可以由用户设置。默认跟实例名称一致。
  • 名称 – 由DHCP服务器分配给VM的主机名。可以由用户设置。默认跟实例名称一致。

注解

你能把来宾VM的显示名附加到它的内部名称上。更多信息,请参考 “将显示名附加到VM的内部名称”.

来宾VMs可以配置成高可用(HA)。启用了HA的VM由系统监控。如果系统检测到此VM宕机,它可能将尝试在不同的主机上重启VM。更多信息,请参考在虚拟机上启用HA

每个新VM都有一个公共网络IP地址。当VM启动后,CloudStack为此VM的公共网络IP地址与内网IP地址自动创建一个静态NAT。

如果使用了弹性IP(与Netscaler负载均衡同时使用),初始分配给新VM的IP地址并没有标记为弹性的。用户必须将自动配置IP改为获得一个弹性IP,并在新IP与来宾VM的内网IP之间设置静态NAT映射。VM的原始IP地址随后会被释放到可用公共网络IPs池中。同样,你也可以在启用了EIP的基础zone中不为VM分配公网IP。关于弹性IP的更多信息,请参考`“关于弹性IP” <networking2.html#about-elastic-ip>`_。

CloudStack不能区分是VM突然关机还是用户对来宾VM进行的关机操作(像Linux中的“shutdown”命令)。如果从启用了HA功能的VM系统中执行了关机操作,CloudStack会重启它。要对启用了HA功能的VM进行关机操作,你必须通过CloudStack UI或者API。

虚拟机的最佳实践

为了让VMs能够按照预期的工作并提供最好的服务,请按照下面的指导进行操作。

监视VMs的最大容量

管理员应该监视每个集群中的虚拟机实例的总数,如果总量快达到hypervisor允许的最大虚拟机数量时,不再向此群集分配虚拟机。并且,要注意为主机预留一定的计算能力,以防止群集中有主机发生故障,因为发生故障的主机上的虚拟机需要重新部署在这些预留主机上。请咨询您所选择hypervisor的文档,了解此hypervisor能支持的最大虚拟机数量,并将此数值设置在CloudStack的全局设置里。监控每个群集里虚拟机的活跃程序,并将活跃虚拟机保持在一个安全线内。这样,CloudStack就能允许偶尔的主机故障。举个示例:如果集群里有N个主机,而你只能让其中任一主机的停机时间不超过特定时间。那么,你能在此集群部署的最多虚拟主机数量值为:(N-1) * (每主机最大虚拟量数量限值)。一旦群集中的虚拟机达到此数量,必须在CloudStack的用户界面中禁止向此群集分配新的虚拟机。

安装需要的工具和驱动

确认在每个VM上都安装了下列软件和驱动:

  • 对于XenServer,在每个VM上安装PV驱动和Xen tools。这将启用动态迁移和干净的来宾虚机关机。安装Xen tools也是为了使动态的CPU和RAM扩展能够工作。
  • 对于vSphere,在每台VM上安装VMware Tools。这是为了能让控制台查看正常工作。安装VMware Tools也是为了使动态的CPU和RAM扩展能够工作。

使用下面其中一个方法确认已经安装了Xen tools或VMware Tools:

  • 从已经安装了tools的模板创建的每个VM;或者,
  • 当注册一个新的模板时,管理员或者用户可以标示出哪个在模板上安装了tools。这可以通过UI或者使用updateTemplate API来做;或者,
  • 如果用户通过一个没有安装Xen tools或者VMware Tools的模板部署虚机,然后在VM上安装了tools,之后用户可以使用updateVirtualMachine API告知CloudStack。在安装tools和更新虚拟机之后,请重启虚拟机。

虚拟机的生命周期

虚拟机可能处于下列状态:

Basic two-machine CloudStack deployment

一旦一个虚拟机被销毁,那么它就不能被恢复。该虚拟机使用的所有资源被系统回收。其中包括虚拟机的IP地址。

停止操作是比较稳妥的关闭操作系统的方式,因为这样做能正常的关闭所有正在运行的应用程序。如果操作系统不能被停止,才要强制关闭它。这么做跟拔掉物理机器的电源线是一个效果。

重启是关机再开机的过程。

CloudStack会保存虚机硬盘的状态直到它被销毁。

正在运行的虚机可能会因为硬件或者网络故障而出现问题。出现问题的虚机是down状态。

如果系统在三分钟内收不到hypervisor的心跳信号,那么它就会将虚机切换至down状态。

用户能够手动从down状态下重启虚机。

如果虚机被标记上启用了HA,那么系统会自动地重启down状态中的虚机。

创建VMs

虚拟机通常是从模板创建的。用户也能创建空白虚拟机。空白虚拟机就是一个重新安装的操作系统。用户可以通过CD/DVD-ROM加载ISO文件安装。

注解

你可以创建一个VM,但不要启动它。你来决定此VM是否需要作为VM部署的一部分而启动。在deployVm API里面提供了一个startVM参数,提供了这个功能。更多信息,请参考开发者指导。

从模板创建一个VM。

  1. 用管理员或用户账号登录CloudStack UI。

  2. 在左侧导航栏,点击实例

  3. 点击添加实例。

  4. 选择一个区域。

  5. 选择一个模板,然后按照向导中的步骤操作。更多关于如何上传模板的更多信息,请参考`*使用模板* <templates.html>`_。

  6. 确认​你​的​硬​件​设​备​满足​运​行​所​选​的​服​务条件。

  7. 点击提交,你的VM就会被创建并启动。

    注解

    出于安全原因,VM的内部名称仅root管理员可见。

从ISO创建虚拟机:

注解

(XenServer)XXenServer上运行的Windows VMs需要安装PV驱动,它可能在模板中或在创建完VM后添加。PV驱动对于基本的管理功能是必要的,比如挂载额外的卷和ISO镜像、在线迁移和正常关机。

  1. 用管理员或用户账号登录CloudStack UI。
  2. 在左侧导航栏,点击实例
  3. 点击添加实例。
  4. 选择一个区域。
  5. 选择ISO启动,然后按照向导中的步骤进行操作。
  6. 点击提交,你的VM就会被创建并启动。

访问VMs

任​何​用​户​都可​以​访​问​他​们​自​己​的​虚​拟​机​。​管​理​员​能​够​访​问​在​云​中​运​行​的​所​有​虚​拟​机​。

通过CloudStack UI访问VM:

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 点击实例,然后点击运行VM的名字。
  3. 点击查看控制台按钮 depicts adding an iso image

通过网络直接访问VM:

  1. VM必须开通相关端口以便外部访问。比如,在基础zone中,新的VM可能被关联到一个允许流量进入的安全组。但这取决于你在创建VM的时候选择的安全组。在其他情况下,你可以通过设置端口转发策略来打开一个端口。请参考 “IP转发及防火墙”
  2. 如果打开端口后,你仍然不能使用SSH访问VM,那么可能是VM中没有启用SSH。这取决于当你创建VM的时候选的模板是否启用了SSH。通过CloudStack UI访问VM,然后使用VM操作系统中的命令行启用SSH。
  3. 如果网络中有外部防火墙设备,你需要创建一个防火墙策略来允许访问。请参考`“IP转发及防火墙” <networking2.html#ip-forwarding-and-firewalling>`_。

停止和启动VMs

一旦VM实例被创建,你可以根据需要停止、重启或删除它。在CloudStack UI里,点击实例,选择VM,然后使用停止、启动、重启和销毁按钮。

将VMs指定到主机

在任何时刻,每个虚拟机实例都运行在一台主机上。CloudStack如何决定在哪个主机上放置VM呢?通常是这几种方式:

  • 自动分配默认主机。CloudStack可以自动的选取最合适的主机来运行每个虚机。
  • 实例类型偏好设置。CloudStack管理员可以指定专门为某些特殊来宾实例做过优化的主机。比如,管理员指定为Windows来宾实例做过优化的主机。默认主机分配器会尝试将此类来宾实例运行到这些主机上。如果这些主机不够用,分配器会把实例运行在容量充足的物理机上。
  • 纵向和横向定位。纵向定位是指,在消耗完当前主机提供的所有资源的时候会将所有来宾虚机定位到第二台主机上。这会云中的节省电力成本。横向定位在每个主机上使用轮询的方式放置来宾虚机。在某些情况下这样会给来宾虚机带来更好的性能。
  • 最终用户偏好设置。用户不能控制VM实例运行在哪台主机上,但是他们能为VM指定区域。这样CloudStack就只能将VM分配到该区域中的主机上。
  • 主机标签。管理员可以给主机分配标签。这些标签是用来指定VM该使用哪台主机的。CloudStack管理员自己决定如何定义主机标签,然后使用这些标签创建一个服务方案来提供给用户。
  • 关联性组。依靠定义关联性组并把VMs分配给它们,用户或管理员可以影响(但不是指令)VMs运行在不同的主机上。这个功能是让用户可以规定某些VMs不会运行在同一台主机上。
  • CloudStack为添加新的分配器提供了一个插件似的接口。这些自定义的分配器可以提供任何管理员想要的策略。
关联性组

依靠定义关联性组并把VMs分配给它们,用户或管理员可以影响(但不是指令)VMs运行在不同的主机上。这个功能是让用户可以规定某些VMs运行在同“host anti-affinity”类型的而非同一台主机上。这写类服务器增强了容错功能。如果一个主机出现问题,那么另一个提供同样服务的VM(比如,运行用户的网站)依然在别的主机上运行。

一个关联性组的作用域是针对每个用户账号的。

创建一个新的关联性组

要添加一个关联性组:

  1. 用管理员或用户账号登录CloudStack UI。
  2. 在左侧的导航条,点击关联性组。
  3. 点击添加关联性组。在对话框中的下列区域中输入:
    • 名称。组的名称。
    • 描述。给出更多关于这个组的说明。
    • Type. The only supported type shipped with CloudStack is Host Anti-Affinity. This indicates that the VMs in this group should avoid being placed on the same host with each other. If you see other types in this list, it means that your installation of CloudStack has been extended with customized affinity group plugins.
将一个新的VM分配给一个关联性组

要将一个新的VM分配给一个关联性组:

  • 如何创建VM,在 `“Creating VMs” <virtual_machines.html#creating-vms>`_中有描述。在添加实例向导中,有一个新的关联性组标签,你可以选择关联性组。
给已有的VM更改关联性组

要将已有的VM添加到关联性组:

  1. 用管理员或用户账号登录CloudStack UI。
  2. 在左侧导航栏,点击实例
  3. 点击你想更改的VM的名称。
  4. 点击停止按钮,将此VM关机。
  5. 点击变更关联性组按钮。 button to assign an affinity group to a virtual machine.
查看关联性组的成员

要查看当前哪些VMs被分配到指定的关联性组:

  1. 在左侧的导航条,点击关联性组。

  2. 点击要查看的组的名称。

  3. 点击查看实例。组的成员会列在此处。

    在这里,你可以点击列表中任何VM的名称来访问它所有的详细信息并控制它。

删除一个关联性组

要删除关联性组:

  1. 在左侧的导航条,点击关联性组。

  2. 点击要查看的组的名称。

  3. 点击删除。

    任何属于关联性组的VM都会被踢出此组。之前组里的成员会继续在当前主机上正常的运行,但是如果VM重启了,它就不再按照之前关联性组的主机分配策略。

虚拟机快照

(支持XenServer、KVM和VMware)

利用CloudStack的VM卷快照功能,你可以对VM做快照像保存它的CPU/内存状态一样保护VM的数据卷(可选的)。这对快速还原一个VM来说是非常有用的。比如,你可以对一个VM做快照,然后做了一些像软件升级的操作。如果期间有问题出现,使用之前保存的VM快照就可以将VM恢复到之前的状态了。

快照的创建使用的是 hypervisor本地快照工具。VM快照不但包括数据卷还可选择性的包括VM的运行或关机时(CPU状态)和内存内容的状态。快照保存在CloudStack的主存储里。

VM快照存在父/子关系。同一个VM的每次快照都是之前快照的子级。每次你对同一VM追加的快照,它仅仅保存两次快照之间系统状态差异。之前的快照变成父级,新的快照变成子级。它可能对这些父/子快照创建一个长链,它实际上是一个从当前的VM状态还原到之前的”还原”记录。

如果你需要了解更多关于VMware的VM快照,请转去VMware文档中心和VMwareBK库,查找 了解虚拟机的快照-英文`了解虚拟机的快照-中文<http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2075429>`_

VM快照的限制
  • 如果一个VM存储了一些快照,你就不能给他附加新卷或删除存在的卷。如果你更改了VM的卷,他将不能通过之前卷结构下所做快照来进行恢复。如果你想给这样一个VM附加卷,请先删除快照。
  • 如果你更改了VM的服务方案,那么包含了数据卷和内存的VM快照就不能保留了,任何已有的此类型的VM快照都将被丢弃。
  • 你不能同时对VM在做卷快照和VM快照。
  • 你只能使用CloudStack来创建其管理的主机上的VM快照。你在hypervisor上直接创建的任何快照都不能被CloudStack识别。
配置VM快照

云管理员可以使用全局配置变量来控制VM快照的行为。要设置这些变量,移步至CloudStack UI中的全局设置。

配置设置名

描述

vmsnapshots.max

云中虚拟机能够保存快照的最大数。 (number of VMs) * vmsnapshots.max是云中VM快照的总共可能数量。如果任何一个VM的快照数达到了最大值,那么快照删除任务会把最老的快照删掉。

vmsnapshot.create.wait

在提示失败和发生错误之前快照工作为了成功的做快照而等待的秒数。

是用VM的快照

是用CloudStack UI创建一个VM快照:

  1. 是用用户或者管理员登录CloudStack。

  2. 点击实例。

  3. 点击你想做快照的VM名称。

  4. 点击抓取VM快照按钮。 button to restart a VPC

    注解

    如果一个快照处理过程正在进行,那么点击这个按钮是没有反应的。

  5. 提供一个名称和秒数。这些会显示在VM快照列表中。

  6. (仅限运行中的VMs)如果你想在快照中包含VM的内存状态,请勾选内存。这可以保存虚拟机的CPU和内存状态。如果你不勾选这个选项,那么只有VM目前磁盘状态会被保存。勾选了这个选项会让快照过程变长。

  7. 静止VM:如果你想在做快照之前让VM的文件系统处于静止状态,请勾选此选项。使用CloudStack提供的主存储的XenServer环境不受支持。

    当这个选项在CloudStack提供的主存储中使用了,那么静止操作是由底层的hypervisor完成的(VMware支持)。当使用了其他主存储提供商的插件,静止操作是由其提供商的软件完成的,

  8. 点击确定。

要删除一个快照或者还原VM的状态到指定的一个快照:

  1. 通过之前描述的步骤定位至VM。

  2. 点击查看VM快照。

  3. 在快照列表中,点击你要操作的快照名字。

  4. 取决于你想做什么:

    要删除快照,点击删除按钮。 delete-button.png

    要还原至此快照,点击还原按钮。 depicts adding an iso image

注解

当VM被销毁了,那么它的快照也会被自动的删除。这种情况下,你不用手动的去删除快照。

更改VM名字,OS或组

在VM被创建之后,你可以修改显示名,操作系统和它所属的组。

通过CloudStack UI访问VM:

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 在左侧的导航菜单中,点击实例。
  3. 选择你想修改的VM。
  4. 点击停止按钮来关闭虚机。 depicts adding an iso image
  5. 点击编辑。 button to edit the properties of a VM
  6. 更改以下几项为所需要的:
  7. 显示名:如果你想更改VM的名字,那么输入一个新的显示名。
  8. OS类型:选择所需的操作系统。
  9. :输入VM的组名。
  10. 点击应用

给来宾VM的内部名称附加显示名

每个来宾VM都有一个内部名称。主机使用内部名称来识别来宾VMs。CloudStack为来宾VM提供了一个关于显示名的选项。你可以设置显示名作为内部名称以便vCenter可以使用它来识别来宾VM。vm.instancename.flag作为一个新的全局参数,已被添加用来实现此功能。

默认的内部名称的格式是 i-<user_id>-<vm_id>-<instance.name>,这里instance.name是全局参数。但是,如果vm.instancename.flag被设置为true,并且来宾VM在创建的过程中提供了显示名,那么显示名就会被附加至该主机的来宾VM的内部名称上。这样就使得内部名称的格式类似于 i-<user_id>-<vm_id>-<displayName>。vm.instancename.flag的默认值被设置为false。这个功能可以比较容易的在大型数据中心的部署中表示实例名和内部名之间的相互关系。

下面的表格解释了不同场景下VM的名称是如何显示的。

用户提供的显示名 vm.instancename.flag VM的主机名 vCenter中的名称 内部名称
True 显示名 i-<user_id>-<vm_id>-displayName i-<user_id>-<vm_id>-displayName
True UUID i-<user_id>-<vm_id>-<instance.name> i-<user_id>-<vm_id>-<instance.name>
False 显示名 i-<user_id>-<vm_id>-<instance.name> i-<user_id>-<vm_id>-<instance.name>
False UUID i-<user_id>-<vm_id>-<instance.name> i-<user_id>-<vm_id>-<instance.name>

为VM变更服务方案

要给虚拟机提升或降低可用计算资源的级别,你可以更改VM的计算方案。

  1. 使用用户或管理员登录到CloudStack用户界面。

  2. 在左侧的导航菜单中,点击实例。

  3. 选择你要处理的VM。

  4. (如果你启用了动态VM扩展或缩减,请跳过此步;查看:ref:cpu-and-memory-scaling。)

    点击停止按钮来关闭虚机。 depicts adding an iso image

  5. 点击更改服务按钮。 button to change the service of a VM

    显示更改服务对话框。

  6. 选择你想应用到选择的VM的方案。

  7. 点击确定。

运行中VMs的CPU和内存的扩展和缩减

(支持XenServer、KVM和VMware)

通常当你第一次部署VM的时候不太可能精确地预计CPU和RAM需求。你可能必须在VM的生命周期内的任何时间增加这些资源。你可以在不中断运行状态中的VM的情况下,动态的修改CPU和RAM级别来提升这些资源,、。

动态CPU和RAM扩展和缩减能被用于一下情况:

  • 运行VMware和XenServer的主机上的用户VMs。
  • VMware上的系统VMs。
  • 虚拟机上必须安装VMware Tools或者XenServer Tools。
  • 对于新的CPU和RAM大小必须在hypervisor和VM操作系统要求之内。
  • 在CloudStack 4.2安装完以后创建的新VMs都可以使用动态扩展和缩减功能。如果你的CloudStack是从旧版本升级而来的,其上已有的VMs不会支持动态扩展和缩减功能,除非你按照下面的过程来升级这些VM。
升级已有VMs

如果你正在升级旧版本的CloudStack,并且你还想让你的旧版本VMs拥有动态扩展和缩减能力,请使用以下步骤来升级VMs:

  1. 确保区域级别设置enable.dynamic.scale.vm被设置为true。在CloudStack UI的左侧导航条,点击基础架构,然后点击区域,点击你要操作的区域,然后点击Settings标签。
  2. 在每台VM上安装Xen tools(适用于XenServer主机)或者VMware Tools(适用于VMware主机)。
  3. 停止VM。
  4. 点击编辑按钮。
  5. 点击动态伸缩选框。
  6. 点击应用
  7. 重启VM。
配置动态CPU和RAM伸缩

要配置此功能,请使用下面的全局配置变量:

  • enable.dynamic.scale.vm:设置为True以启用此功能。默认情况下,此功能是被关闭的。
  • scale.retry:伸缩操作的重试次数。默认为2。
如果动态伸缩CPU和RAM

要修改虚拟机的CPU和/或RAM,你必须更改VM的计算方案为你想要的。你可以按照上文中所述的同样的步骤 “Changing the Service Offering for a VM”,但是要跳过停止虚拟机的步骤。当然,你可能必须先创建一个新的计算方案。

当你提交一个动态伸缩的请求的时候,当前主机可能会扩展资源。如果主机没有足够的资源,VM会被在线迁移至同一群集中的其他主机。如果群集中没有能满足CPU和RAM条件的主机,那么扩展操作会失败。不用担心,VM会往常一样继续运行。

局限性
  • 你不能为XenServer上运行的系统VMs进行动态伸缩操作。
  • CloudStack不会检查新的CPU和RAM级别是不是符合VM操作系统的要求。
  • 当为VMware上运行的Linux VM扩展内存或者CPU的时候,你可能需要运行额外的脚本。更多信息,请参阅VMware知识库中的 在Linux中热添加内存 (1012764)
  • (VMware)如果当前主机上没有可用资源,因为一个已知的问题,VMware上的虚机扩展会失败,这是因为CloudStack和vCenter计算可用容量方法的不同。更多信息,请参阅`https://issues.apache.org/jira/browse/CLOUDSTACK-1809 <https://issues.apache.org/jira/browse/CLOUDSTACK-1809>`_。
  • 对于运行Linux 64位和Windows 7 32位操作系统的VMs,如果VM初始分配的RAM小于3GB,那么它最大能动态的扩展到3GB。这是因为这些操作系统已知的问题,如果尝试从小于3G动态扩展至超过3G的话,操作系统会宕机。

在重启时重置虚拟机的Root卷

为安全环境和确保VM重启期间不被中断状态,你可以重置root磁盘。更多信息,请参阅 “在重启时给VM重置一个新的Root磁盘”

在主机之间移动VMs(手动在线迁移)

CloudStack管理员可以从一个主机将运行中的VM不中断服务地移动到其他主机或者将其进入维护模式。这个过程叫手动在线迁移,要满足以下条件:

  • root管理员已登录。域管理员和用户不能执行手动在线迁移操作。
  • VM正在运行。停止的VMs不能进行在线迁移。
  • 目标主机必须有足够的可用容量。如果没有,VM会一直停留在”迁移中”状态,直到有多余内存可用。
  • (KVM)VM必须不能使用本地磁盘存储。(在XenServer和VMware中,CloudStack依靠XenMotion和vMotion允许使用了本地磁盘的VM能够在线迁移。)
  • (KVM)目标主机必须跟源主机在同一个群集。(在XenServer和VMware上,CloudStack依靠XenMotion和vMotion,允许VM从一个群集在线迁移到另一个群集)

手动在线迁移一个虚拟机

  1. 使用用户或管理员登录到CloudStack用户界面。

  2. 在左侧的导航菜单中,点击实例。

  3. 选择你想迁移的VM。

  4. 点击迁移实例按钮。 button to migrate an instance

  5. 从可用主机列表中,选择一个目标主机。

    注解

    如果VM的存储与VM必须一起被迁移,这点会在主机列表中标注。CloudStack会为你自动的进行存储迁移。

  6. 点击确定。

删除VMs

用户可以删除他们拥有的虚拟机。在删除运行中的虚拟机之前,虚拟机会被强制停止。管理员可以删除任何虚拟机。

要删除虚拟机:

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 在左侧的导航菜单中,点击实例。
  3. 选择你想删除的VM。
  4. 点击销毁实例按钮。 button to destroy an instance

使用ISOs

CloudStack支持ISOs和将其挂载到来宾VMs。ISO是一种只读的ISO/CD-ROM格式的文件文件系统。用户可以上传他们自己的ISOs并且将其挂载至他们的来宾VMs。

ISOs文件通过URL上传。HTTP是受支持的协议。一旦ISO通过HTTP指定一个上传URL,比如http://my.web.server/filename.iso上传成功,那么文件就可以用了。

ISOs可能是私有的也可以是共有的,像templates.ISOs并不针对某种hypervisor。也就是说,运行在vSphere上的来宾虚机和运行在KVM上的虚机可以挂载同一个ISO。

ISO镜像可能存储在系统中并且隐私级别与模板相似。ISO镜像分为可引导或不可引导的。可引导的ISO镜像是包含了OS镜像的。CloudStack允许用户通过ISO镜像来启动来宾虚机。用户同样可以将ISO镜像挂载到来宾VMs。比如,给Windows安装PV驱动。ISO镜像不指定hypervisor。

添加ISO

为了添加额外的操作系统或者给来宾VMs使用其它软件,你可以添加ISO。操作系统镜像被认为是最典型的ISO,但是你也能添加软件类型的ISOs,例如你想把安装的桌面应用作为模板的一部分。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,点击模板。

  3. 在选择视图中,选择ISOs。

  4. 点击添加ISO。

  5. 在添加ISO界面中,提供下列信息:

    • 名称: ISO 镜像的简称。例如,CentOS6.2 64-bit。

    • 描述: 对于ISO镜像的描述。例如,CentOS 6.2 64-bit.

    • URL: ISO镜像主机的URL。管理服务器必须能够通过HTTP访问这个地址。如果有需要你可以直接将ISO放置到管理服务器中。

    • 区域: 选择你希望该ISO在到哪个区域可用,或者选择所有区域使该ISO在CloudStack中全部区域中可用。

    • 可启动: 来宾是否可以通过该ISO镜像启动。例如,一个CentOS ISO 是可启动的,一个Microsoft Office ISO 是不可启动的。

    • **操作系统类型*: 这有助于CloudStack和Hypervisor执行某些操作并假设可提高来宾虚拟机的性能。选择下列之一。

      • 如果你需要的ISO镜像对应的操作系统在列表中,请选择它。
      • 如果ISO镜像的操作系统类型没有被列出或者ISO是不可引导的,选择Other。
      • (仅针对XenServer) 如果你想使用这个ISO在PV 模式中引导,选择 Other PV (32-bit) 或 Other PV(64-bit)
      • (仅针对KVM) 如果你选择一个操作系统为PV-enabled,, 通过这个ISO创建的虚拟机会有一个SCSI(virtio)根磁盘。如果这个操作系统没有PV-enabled,,虚拟机将有一个IDE根磁盘。PV-enabled 类型是:
        • Fedora 13
        • Fedora 12
        • Fedora 11
        • Fedora 10
        • Fedora 9
        • Other PV
        • Debian GNU/Linux
        • CentOS 5.3
        • CentOS 5.4
        • CentOS 5.5
        • Red Hat Enterprise Linux 5.3
        • Red Hat Enterprise Linux 5.4
        • Red Hat Enterprise Linux 5.5
        • Red Hat Enterprise Linux 6

      注解

      不建议选择一个比操作系统镜像老的版本。例如,选择CentOS 5.4 去支持一个CentOS6.2的镜像通常导致不能工作。在这种情况下,去选择Other。

    • 可提取: 如果该ISO可以被提取出来,则选择Yes。

    • 公共: 如果该ISO可以被所有用户使用,则选择Yes。

    • 精选: 如果你想这个用户在选择这个ISO时更加突出则选择Yes。该ISO将出现在精选ISO列表中。只有管理员可以设置ISO为精选。

  6. 点击确定。

    管理服务器将下载该ISO。根据ISO镜像的大小,下载过程可能会用很长时间。一旦该镜像已经被成功下载到辅助存储时ISO 状态栏将会显示Ready。点击刷新更新更新百分比。

  7. 重要: 等等ISO下载完成过程中。如果你想执行下一个任务并且尝试正常使用该ISO,这将会失败。在CloudStack 使用它之前该ISO必须是完整且有效的。

附加ISO到虚拟机
  1. 在左侧的导航菜单中,点击实例。
  2. 选择要使用的虚拟机。
  3. 点击附加ISO按钮。 depicts adding an iso image
  4. 在附加ISO对话框中,选择所需的ISO。
  5. 点击确定。
改变VM’s 的基础镜像

每个VM都是通过基础镜像创建的,可以是创建并存储在CloudStack中的一个模版或者一个ISO镜像。云管理员和终端用户都可以创建和修改模版,ISO和VM。

在CloudStack中,你可以改变虚拟机的基础磁盘从一个模版换成其他模版,或从一个ISO换成其他ISO。(你不能把ISO变成模版或模版变成ISO。)

例如,假设有一个模板基于一个特定的操作系统,并且操作系统厂商发布了一个补丁。管理员和用户理所当然的想要将该补丁应用到已经存在的虚拟机中,并确保虚拟机开始使用它。无论是否涉及软件更新,也有可能只是将虚拟机从当前的模板切换至其他所需的模板。

要改变熏鸡的基础镜像,通过虚拟机iD和新的模版ID调用restoreVirtualMachine API命令。模版ID参数可以参考模版或者ISO,取决于虚拟机正在使用的基础镜像类型(它必须匹配先前的镜像类型)。当这个调用生效时,虚拟机的根磁盘首先被摧毁,然后通过指定的模版ID参数创建根磁盘。新的根磁盘会附件到虚拟机中,现在虚拟机已经基于新的模版了。

你同样可以在调用restoreVirtualMachine时忽略模版ID参数。在这个情况下,虚拟机的根磁盘被摧毁并重新创建。但相同的模版或ISO已经被该虚拟机使用。

未验证使用SSH秘钥

除了用户名和密码验证之外,出于额外的安全性考虑,CloudStack还支持使用SSH秘钥来登录到云架构。你可以使用createSSHKeyPair API来生成SSH秘钥。

因为每个云用户都有他们自己的SSH秘钥,一个云用户不能登录到另一个云用户的实例中,除非他们共享了他们的SSH key文件。使用一个SSH秘钥对,你可以管理多个实例。

创建一个支持SSH秘钥的实例模板

创建一个支持SSH秘钥的实例模板。

  1. 使用CloudStack提供的模板创建一个新的实例。

    关于创建新实例的更多信息,请参阅

  2. The SSH Key Gen Script 下载CloudStack脚本到你已经创建的实例中。

    wget https://raw.githubusercontent.com/apache/cloudstack/master/setup/bindir/cloud-set-guest-sshkey.in
    
  3. 复制这个脚本到 /etc/init.d。

    cp cloud-set-guest-sshkey.in /etc/init.d/
    
  4. 给这个脚本必要的权限:

    chmod +x /etc/init.d/cloud-set-guest-sshkey.in
    
  5. 当系统启动的时候运行脚本:

    chkconfig --add cloud-set-guest-sshkey.in
    
  6. 停止实例。

创建SSH秘钥对

你必须给createSSHKeyPair api方法做一个调用。你可以使用CloudStack Python API 库或curl 命令给CloudStack API做调用。

比如,从CloudStack服务器为根域中的管理员帐户做调用来创建一个SSH秘钥对 ,名称为 “keypair-doc” :

注解

确认你调整这些值是你所需要的。如果你从不同的服务器上做API调用,你的 URL/PORT 也是不同的,并且你必须使用API 秘钥。

  1. 运行如下curl命令:

    curl --globoff "http://localhost:8096/?command=createSSHKeyPair&name=keypair-doc&account=admin&domainid=5163440e-c44b-42b5-9109-ad75cae8e8a2"
    

    输出的内容与下面所示的类似:

    <?xml version="1.0" encoding="ISO-8859-1"?><createsshkeypairresponse cloud-stack-version="3.0.0.20120228045507"><keypair><name>keypair-doc</name><fingerprint>f6:77:39:d5:5e:77:02:22:6a:d8:7f:ce:ab:cd:b3:56</fingerprint><privatekey>-----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQCSydmnQ67jP6lNoXdX3noZjQdrMAWNQZ7y5SrEu4wDxplvhYci
    dXYBeZVwakDVsU2MLGl/K+wefwefwefwefwefJyKJaogMKn7BperPD6n1wIDAQAB
    AoGAdXaJ7uyZKeRDoy6wA0UmF0kSPbMZCR+UTIHNkS/E0/4U+6lhMokmFSHtu
    mfDZ1kGGDYhMsdytjDBztljawfawfeawefawfawfawQQDCjEsoRdgkduTy
    QpbSGDIa11Jsc+XNDx2fgRinDsxXI/zJYXTKRhSl/LIPHBw/brW8vzxhOlSOrwm7
    VvemkkgpAkEAwSeEw394LYZiEVv395ar9MLRVTVLwpo54jC4tsOxQCBlloocK
    lYaocpk0yBqqOUSBawfIiDCuLXSdvBo1Xz5ICTM19vgvEp/+kMuECQBzm
    nVo8b2Gvyagqt/KEQo8wzH2THghZ1qQ1QRhIeJG2aissEacF6bGB2oZ7Igim5L14
    4KR7OeEToyCLC2k+02UCQQCrniSnWKtDVoVqeK/zbB32JhW3Wullv5p5zUEcd
    KfEEuzcCUIxtJYTahJ1pvlFkQ8anpuxjSEDp8x/18bq3
    -----END RSA PRIVATE KEY-----
    </privatekey></keypair></createsshkeypairresponse>
    
  2. 复制秘钥的数据到一个文件。这个文件类似于:

    -----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQCSydmnQ67jP6lNoXdX3noZjQdrMAWNQZ7y5SrEu4wDxplvhYci
    dXYBeZVwakDVsU2MLGl/K+wefwefwefwefwefJyKJaogMKn7BperPD6n1wIDAQAB
    AoGAdXaJ7uyZKeRDoy6wA0UmF0kSPbMZCR+UTIHNkS/E0/4U+6lhMokmFSHtu
    mfDZ1kGGDYhMsdytjDBztljawfawfeawefawfawfawQQDCjEsoRdgkduTy
    QpbSGDIa11Jsc+XNDx2fgRinDsxXI/zJYXTKRhSl/LIPHBw/brW8vzxhOlSOrwm7
    VvemkkgpAkEAwSeEw394LYZiEVv395ar9MLRVTVLwpo54jC4tsOxQCBlloocK
    lYaocpk0yBqqOUSBawfIiDCuLXSdvBo1Xz5ICTM19vgvEp/+kMuECQBzm
    nVo8b2Gvyagqt/KEQo8wzH2THghZ1qQ1QRhIeJG2aissEacF6bGB2oZ7Igim5L14
    4KR7OeEToyCLC2k+02UCQQCrniSnWKtDVoVqeK/zbB32JhW3Wullv5p5zUEcd
    KfEEuzcCUIxtJYTahJ1pvlFkQ8anpuxjSEDp8x/18bq3
    -----END RSA PRIVATE KEY-----
    
  3. 保存文件。

创建实例

在你保存了SSH秘钥对文件之后,你必须使用你在`章节 5.2.1, “ 创建支持SSH秘钥的实例模板” <#create-ssh-template>`__中创建的模来板创建一个实例。确保你使用与你在`章节 5.2.2, “创建秘钥对” <#create-ssh-keypair>`__中创建的同样的SSH秘钥名称。

注解

这时候你不能通过使用 GUI来创建实例,要使用新创建的SSH秘钥对来关联实例。

使用简单的curl命令创建新的实例:

curl --globoff http://localhost:<port number>/?command=deployVirtualMachine\&zoneId=1\&serviceOfferingId=18727021-7556-4110-9322-d625b52e0813\&templateId=e899c18a-ce13-4bbf-98a9-625c5026e0b5\&securitygroupids=ff03f02f-9e3b-48f8-834d-91b822da40c5\&account=admin\&domainid=1\&keypair=keypair-doc

在你的云环境中,服务方案和安全组IDs(如果你使用安全组功能)可以替代模板。

使用SSH秘钥对登录

测试你的SSH秘钥的生成是否成功,需要检查是否能够登录到云中。

举个例子,在LinuxOS中,运行:

ssh -i ~/.ssh/keypair-doc <ip address>

参数-i是通知ssh客户端使用一个在~/.ssh/keypair-doc中找到的ssh秘钥。

重置SSH密钥

通过API命令resetSSHKeyForVirtualMachine,用户可以设置或者重设分配给虚拟机的SSH秘钥对。可以更改丢失或被盗用的SSH密钥对,并且用户可以使用新的秘钥对来访问VM。只要创建或注册新的密钥对然后调用resetSSHKeyForVirtualMachine。

User-Data and Meta-Data

CloudStack provides API access to attach up to 2KB of data after base64 encoding to a deployed VM. Using HTTP POST(via POST body), you can send up to 32K of data after base64 encoding. Deployed VMs also have access to instance metadata via the virtual router.

Create virtual machine thru the API: deployVirtualMachine using the parameter userdata= to include user-data formated in base64.

Accessed user-data from VM. Once the IP address of the virtual router is known, use the following steps to retrieve user-data:

  1. Run the following command to find the virtual router.

    # cat /var/lib/dhclient/dhclient-eth0.leases | grep dhcp-server-identifier | tail -1
    
  2. Access user-data by running the following command using the result of the above command

    # curl http://10.1.1.1/latest/user-data
    

Meta Data can be accessed similarly, using a URL of the form http://10.1.1.1/latest/meta-data/{metadata type}. (For backwards compatibility, the previous URL http://10.1.1.1/latest/{metadata type} is also supported.) For metadata type, use one of the following:

  • service-offering. A description of the VMs service offering
  • availability-zone. The Zone name
  • local-ipv4. The guest IP of the VM
  • local-hostname. The hostname of the VM
  • public-ipv4. The first public IP for the router. (E.g. the first IP of eth2)
  • public-hostname. This is the same as public-ipv4
  • instance-id. The instance name of the VM
Using Cloud-Init

Cloud-Init can be use to access an interpret user-data from virtual machines. Cloud-Init be installed into templates and also require CloudStack password and sshkey scripts (Adding Password Management to Your Templates and using ssh keys). User password management and resetSSHKeyForVirtualMachine API are not yet supported by cloud-init.

  1. Install cloud-init package into a template:

    # yum install cloud-init
      or
    $ sudo apt-get install cloud-init
    
  2. Create datasource configuration file: /etc/cloud/cloud.cfg.d/99_cloudstack.cfg

    datasource:
      CloudStack: {}
      None: {}
    datasource_list:
      - CloudStack
    
user-data example

This example use cloud-init to Upgrade Operating-System of the newly created VM:

#cloud-config

# Upgrade the instance on first boot
# (ie run apt-get upgrade)
#
# Default: false
# Aliases: apt_upgrade
package_upgrade: true

base64 formated:

I2Nsb3VkLWNvbmZpZw0KDQojIFVwZ3JhZGUgdGhlIGluc3RhbmNlIG9uIGZpcnN0IGJvb3QNCiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpDQojDQojIERlZmF1bHQ6IGZhbHNlDQojIEFsaWFzZXM6IGFwdF91cGdyYWRlDQpwYWNrYWdlX3VwZ3JhZGU6IHRydWUNCg==

Refer to Cloud-Init CloudStack datasource documentation for latest capabilities. Cloud-Init and Cloud-Init CloudStack datasource are not supported by Apache CloudStack community.

Assigning GPU/vGPU to Guest VMs

CloudStack can deploy guest VMs with Graphics Processing Unit (GPU) or Virtual Graphics Processing Unit (vGPU) capabilities on XenServer hosts. At the time of VM deployment or at a later stage, you can assign a physical GPU ( known as GPU-passthrough) or a portion of a physical GPU card (vGPU) to a guest VM by changing the Service Offering. With this capability, the VMs running on CloudStack meet the intensive graphical processing requirement by means of the high computation power of GPU/vGPU, and CloudStack users can run multimedia rich applications, such as Auto-CAD, that they otherwise enjoy at their desk on a virtualized environment. CloudStack leverages the XenServer support for NVIDIA GRID Kepler 1 and 2 series to run GPU/vGPU enabled VMs. NVIDIA GRID cards allows sharing a single GPU cards among multiple VMs by creating vGPUs for each VM. With vGPU technology, the graphics commands from each VM are passed directly to the underlying dedicated GPU, without the intervention of the hypervisor. This allows the GPU hardware to be time-sliced and shared across multiple VMs. XenServer hosts use the GPU cards in following ways:

GPU passthrough: GPU passthrough represents a physical GPU which can be directly assigned to a VM. GPU passthrough can be used on a hypervisor alongside GRID vGPU, with some restrictions: A GRID physical GPU can either host GRID vGPUs or be used as passthrough, but not both at the same time.

GRID vGPU: GRID vGPU enables multiple VMs to share a single physical GPU. The VMs run an NVIDIA driver stack and get direct access to the GPU. GRID physical GPUs are capable of supporting multiple virtual GPU devices (vGPUs) that can be assigned directly to guest VMs. Guest VMs use GRID virtual GPUs in the same manner as a physical GPU that has been passed through by the hypervisor: an NVIDIA driver loaded in the guest VM provides direct access to the GPU for performance-critical fast paths, and a paravirtualized interface to the GRID Virtual GPU Manager, which is used for nonperformant management operations. NVIDIA GRID Virtual GPU Manager for XenServer runs in dom0. CloudStack provides you with the following capabilities:

  • Adding XenServer hosts with GPU/vGPU capability provisioned by the administrator.
  • Creating a Compute Offering with GPU/vGPU capability.
  • Deploying a VM with GPU/vGPU capability.
  • Destroying a VM with GPU/vGPU capability.
  • Allowing an user to add GPU/vGPU support to a VM without GPU/vGPU support by changing the Service Offering and vice-versa.
  • Migrating VMs (cold migration) with GPU/vGPU capability.
  • Managing GPU cards capacity.
  • Querying hosts to obtain information about the GPU cards, supported vGPU types in case of GRID cards, and capacity of the cards.
Prerequisites and System Requirements

Before proceeding, ensure that you have these prerequisites:

  • The vGPU-enabled XenServer 6.2 and later versions. For more information, see Citrix 3D Graphics Pack.
  • GPU/vPGU functionality is supported for following HVM guest operating systems: For more information, see Citrix 3D Graphics Pack.
  • Windows 7 (x86 and x64)
  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows 8 (x86 and x64)
  • Windows 8.1 (“Blue”) (x86 and x64)
  • Windows Server 2012 R2 (server equivalent of “Blue”)
  • CloudStack does not restrict the deployment of GPU-enabled VMs with guest OS types that are not supported by XenServer for GPU/vGPU functionality. The deployment would be successful and a GPU/vGPU will also get allocated for VMs; however, due to missing guest OS drivers, VM would not be able to leverage GPU resources. Therefore, it is recommended to use GPU-enabled service offering only with supported guest OS.
  • NVIDIA GRID K1 (16 GiB video RAM) AND K2 (8 GiB of video RAM) cards supports homogeneous virtual GPUs, implies that at any given time, the vGPUs resident on a single physical GPU must be all of the same type. However, this restriction doesn’t extend across physical GPUs on the same card. Each physical GPU on a K1 or K2 may host different types of virtual GPU at the same time. For example, a GRID K2 card has two physical GPUs, and supports four types of virtual GPU; GRID K200, GRID K220Q, GRID K240Q, AND GRID K260Q.
  • NVIDIA driver must be installed to enable vGPU operation as for a physical NVIDIA GPU.
  • XenServer tools are installed in the VM to get maximum performance on XenServer, regardless of type of vGPU you are using. Without the optimized networking and storage drivers that the XenServer tools provide, remote graphics applications running on GRID vGPU will not deliver maximum performance.
  • To deliver high frames from multiple heads on vGPU, install XenDesktop with HDX 3D Pro remote graphics.

Before continuing with configuration, consider the following:

  • Deploying VMs GPU/vGPU capability is not supported if hosts are not available with enough GPU capacity.
  • A Service Offering cannot be created with the GPU values that are not supported by CloudStack UI. However, you can make an API call to achieve this.
  • Dynamic scaling is not supported. However, you can choose to deploy a VM without GPU support, and at a later point, you can change the system offering to upgrade to the one with vGPU. You can achieve this by offline upgrade: stop the VM, upgrade the Service Offering to the one with vGPU, then start the VM.
  • Live migration of GPU/vGPU enabled VM is not supported.
  • Limiting GPU resources per Account/Domain is not supported.
  • Disabling GPU at Cluster level is not supported.
  • Notification thresholds for GPU resource is not supported.
Supported GPU Devices
Device Type
GPU
  • Group of NVIDIA Corporation GK107GL [GRID K1] GPUs
  • Group of NVIDIA Corporation GK104GL [GRID K2] GPUs
  • Any other GPU Group
vGPU
  • GRID K100
  • GRID K120Q
  • GRID K140Q
  • GRID K200
  • GRID K220Q
  • GRID K240Q
  • GRID K260Q
GPU/vGPU Assignment Workflow

CloudStack follows the below sequence of operations to provide GPU/vGPU support for VMs:

  1. Ensure that XenServer host is ready with GPU installed and configured. For more information, see Citrix 3D Graphics Pack.

  2. Add the host to CloudStack. CloudStack checks if the host is GPU-enabled or not. CloudStack queries the host and detect if it’s GPU enabled.

  3. Create a compute offering with GPU/vGPU support: For more information, see Creating a New Compute Offering..

  4. Continue with any of the following operations:

    • Deploy a VM.

      Deploy a VM with GPU/vGPU support by selecting appropriate Service Offering. CloudStack decide which host to choose for VM deployment based on following criteria:

      • Host has GPU cards in it. In case of vGPU, CloudStack checks if cards have the required vGPU type support and enough capacity available. Having no appropriate hosts results in an InsufficientServerCapacity exception.
      • Alternately, you can choose to deploy a VM without GPU support, and at a later point, you can change the system offering. You can achieve this by offline upgrade: stop the VM, upgrade the Service Offering to the one with vGPU, then start the VM. In this case, CloudStack gets a list of hosts which have enough capacity to host the VM. If there is a GPU-enabled host, CloudStack reorders this host list and place the GPU-enabled hosts at the bottom of the list.
    • Migrate a VM.

      CloudStack searches for hosts available for VM migration, which satisfies GPU requirement. If the host is available, stop the VM in the current host and perform the VM migration task. If the VM migration is successful, the remaining GPU capacity is updated for both the hosts accordingly.

    • Destroy a VM.

      GPU resources are released automatically when you stop a VM. Once the destroy VM is successful, CloudStack will make a resource call to the host to get the remaining GPU capacity in the card and update the database accordingly.

使用模板

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

使用模板

模板相当于虚拟机的重用配置。当用户创建虚拟机时能从CloudStack的模板列表中选择一个。

特殊情况下,模板可以是一个包含一个或多个操作系统的虚拟磁盘镜像,你可以选择性的安装另外的软件,比如office应用并设置访问控制来决定谁能使用这个模板。每个模板对应一个特殊类型的虚拟机,此类虚拟机在将模板添加入CloudStack时指定。

CloudStack附带一个默认模板。为了向用户呈现出更多选择,CloudStack的管理员和用户能创建模板并添加到CloudStack中。

创建模板概览

CloudStack默认已经有了一个带CentOS系统的默认模板。有许多添加更多模板的方法,管理员和普通用户均能添加。一般是这样的顺序:

  1. 运行一个带有你需要的操作系统的虚拟机实例,并进行一些你期望的设置。
  2. 停止VM。
  3. 将卷转换为模板。

还有其他方法向CloudStack中添加模板。比如你可以对虚机磁盘卷做个快照然后通过这个快照创建模板,或者从另一个系统导入一个VHD到CloudStack。

接下来的几节中将继续讲述各种创建模板的技术。

模板的需求

  • 对于 XenServer, 在每一个你创建的模板上安装 PV 驱动 / Xen tools。 这将使动态迁移和干净的宾客关机成为可能。
  • 对于 vSphere, 在每一个你创建的模板上安装VMware 工具。这将使控制台视图能够正常工作。

模板最佳实践

如果你计划使用大的模板(100 GB 或更大),确保你有10g 的网络以支持大的模板。 当大的模板被使用时,较慢的网络可能导致超时及其它错误。

默认模版

CloudStack包含一个CentOS 模版。当主存储和二级存储配置完成后,这个模版会由二级存储虚拟机下载。可以在生产部署中使用这个模版,也可以删除掉它,使用自定义的模版。

默认模版的root用户密码是“password”。

为XenServer,KVM和vSphere各提供了一个默认模板。下载的模板取决于你的云中使用的hypervisor类型。每个模板大概占用2.5GB的存储空间。

默认模版包括标准的iptables 规则,会阻止除了ssh以外的其他访问。

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere        anywhere       icmp any
ACCEPT     esp  --  anywhere        anywhere
ACCEPT     ah   --  anywhere        anywhere
ACCEPT     udp  --  anywhere        224.0.0.251    udp dpt:mdns
ACCEPT     udp  --  anywhere        anywhere       udp dpt:ipp
ACCEPT     tcp  --  anywhere        anywhere       tcp dpt:ipp
ACCEPT     all  --  anywhere        anywhere       state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere        anywhere       state NEW tcp dpt:ssh
REJECT     all  --  anywhere        anywhere       reject-with icmp-host-

私有模板和公共模板

用户创建模板时可选择模板为公有还是私有。

私有模板只对创建者可用。默认上传的模板都是私有的。

当用户将模板标识为“公有”,该模板不但能让该用户域中所有账户中的所有用户使用,还可以让能访问存储该模板的区域的其他域中用户使用。这取决于zone是设置成公用还是私有。私有区域被分配到一个单一的域,而公共区域能被任何域访问。

通过已存在的虚拟机创建模板

当你已经有了一台按你的想法已经配置好的虚拟机,你就能以他为原型创建别的虚拟机。

  1. 使用 `“创建VMs” <virtual_machines.html#creating-vms>`_给出的方法创建并且开启一个虚拟机。

  2. 在虚拟机中做好需要的配置,然后点击按钮关闭该虚拟机。

  3. 等待虚拟机关闭。当虚拟机状态显示为“已停止”,执行下一步。

  4. Go into “View Volumes” and select the Volume having the type “ROOT”.

  5. 点击创建模板并填写如下内容:

    • 名称和显示文本。这些会在UI中显示,所以建议写一些描述信息。

    • **操作系统类型*:。这有助于CloudStack和Hypervisor执行某些操作并可能提高来宾虚拟机的性能。选择下列之一。

      • 如果已停止虚拟机的系统在列表中,选择它。

      • 如果已停止虚拟机系统类型不在列表中就选择其他。

      • 如果你打算以PV模式启动该模板,请选择其他PV(32位)或其他PV(64位)。这个选项只对XenServer有效:

        注解

        通常你不能选择比镜像版本老的OS版本。比如,选择CentOS 5.4来支持CentOS 6.2镜像通常来说是不工作的。在这种情况下,你应该选择其他。

    • 公共。选择是来让CloudStack里面的所有用户都能访问这个模板。模板将会出现在社区模板列表中。请参阅 “私有和公共模板”

    • 启用密码。如果你的模板中安装了CLoudStack密码修改脚本,选择是。请参阅 Adding Password Management to Your Templates

  6. 点击 添加

当模版创建过程完成后,新模版会出现在模版页面。在创建虚机时就可以使用新模版了。

从一个快照创建一个模板

如果你不想为了使用创建模板菜单项而停止虚拟机(如在`“从已有的虚机创建模板” <#creating-a-template-from-an-existing-virtual-machine>`_中描述的), 你可以通过CloudStack UI从任何快照直接创建模板。

上传模板

vSphere模板和ISOs

如果你通过vSphere Client上传模板,请确认OVA文件不包含ISO。如果是的话,从模板部署虚拟机将失败。

模板是使用HTTP协议通过URL来上传的。模板通常都很大。你可以使用gzip压缩它们以缩短上传时间。

要上传模板:

  1. 在左侧的导航栏,点击模板。

  2. 点击注册模板。

  3. 填写以下内容:

    • 名称和显示文本。这些会在UI中显示,所以建议写一些描述信息。

    • URL。管理服务器会从指定的URL下载模板,就像 http://my.web.server/filename.vhd.gz

    • 区域::选择你希望该模板在到哪个区域可用,或者选择所有区域使该模板在CloudStack中全部区域中可用。

    • **操作系统类型*::这有助于CloudStack和Hypervisor执行某些操作并假设可提高来宾虚拟机的性能。选择下列之一。

      • 如果已停止虚拟机的系统在列表中,选择它。

      • 如果已停止虚拟机系统类型不在列表中就选择其他。

        注解

        你不能选择比镜像版本老的OS版本。比如,选择CentOS 5.4来支持CentOS 6.2镜像通常来说是不工作的。在这种情况下,你应该选择其他。

    • Hypervisor:列表中显示支持的hypervisors。选择想要的一个。

    • 格式。上传的模板文件的格式,如VHD或OVA。

    • 启用密码。如果你的模板中安装了CLoudStack密码修改脚本,选择是。请参阅 Adding Password Management to Your Templates

    • 可提取。如果模板可以被提取请选择是。如果选择了此选项,终端用户可以下载此模板的完全镜。

    • 公共。选择是来让CloudStack里面的所有用户都能访问这个模板。模板将会出现在社区模板列表中。请参阅 “私有和公共模板”

    • 精选: 。如果你想这个用户在选择这个模板时更明显则选择Yes。该模板将出现在精选模板列表中。只有管理员可以设置模板为精选。

导出模板

最终用户和管理员可以从CloudStack导出模板。导航到用户界面中的模板并选择动作菜单中的下载功能。

创建Linux模板

为了准备使用模板部署你的Linux VMs,可以使用此文档来准备Linux模板。对于文档中的情况,你要通过配置模板,这会涉及”主模板”。这个指导目前覆盖了传统的安装,但不会涉及用户数据和cloud-init还有假设在装过程中安装了openshh服务。

过程概述如下:

  1. 上传你的Linux ISO。

    更多信息,请参阅 “添加ISO”

  2. 使用这个ISO创建VM实例。

    更多信息,请参阅 “创建VMs”

  3. 准备Linux VM

  4. 从VM创建模板。

    更多信息,请参阅 “从已有的虚拟机创建模板”

Linux的系统准备工作

下列步骤将会为模板准备一个基本的Linux安装。

  1. 安装

    通常在安装过程中给VM命名是一个好的做法,这么做能确保某些组件如LVM不会只在一台机器中出现。推荐在在安装过程中使用”localhost”命名。

    警告

    对于CentOS,必须要修改网络接口的配置文件,在这里我们编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,更改下面的内容。

    DEVICE=eth0
    TYPE=Ethernet
    BOOTPROTO=dhcp
    ONBOOT=yes
    

    下一步更新主模板中的包。

    • Ubuntu

      sudo -i
      apt-get update
      apt-get upgrade -y
      apt-get install -y acpid ntp
      reboot
      
    • CentOS

      ifup eth0
      yum update -y
      reboot
      
  2. 密码管理

    注解

    如果需要,客户(如在Ubuntu的安装过程中创建的用户)应该被移除。首先确认root用户账户是启用的并且使用了密码,然后使用root登录。

    sudo passwd root
    logout
    

    使用root,移除任何在安装过程中创建的自定义用户账户。

    deluser myuser --remove-home
    

    关于设置密码管理脚本的相关说明,请参阅 Adding Password Management to Your Templates ,这样能允许CloudStack通过web界面更改root密码。

  3. 主机名管理

    默认情况下CentOS在启动的时候配置主机名。但是,Ubuntu却没有此功能,对于Ubuntu,安装时使用下面步骤。

    • Ubuntu

      The hostname of a Templated VM is set by a custom script in /etc/dhcp/dhclient-exit-hooks.d, this script first checks if the current hostname is localhost, if true, it will get the host-name, domain-name and fixed-ip from the DHCP lease file and use those values to set the hostname and append the /etc/hosts file for local hostname resolution. Once this script, or a user has changed the hostname from localhost, it will no longer adjust system files regardless of its new hostname. The script also recreates openssh-server keys, which should have been deleted before templating (shown below). Save the following script to /etc/dhcp/dhclient-exit-hooks.d/sethostname, and adjust the permissions.

      #!/bin/sh
      # dhclient change hostname script for Ubuntu
      oldhostname=$(hostname -s)
      if [ $oldhostname = 'localhost' ]
      then
          sleep 10 # Wait for configuration to be written to disk
          hostname=$(cat /var/lib/dhcp/dhclient.eth0.leases  |  awk ' /host-name/ { host = $3 }  END { printf host } ' | sed     's/[";]//g' )
          fqdn="$hostname.$(cat /var/lib/dhcp/dhclient.eth0.leases  |  awk ' /domain-name/ { domain = $3 }  END { printf     domain } ' | sed 's/[";]//g')"
          ip=$(cat /var/lib/dhcp/dhclient.eth0.leases  |  awk ' /fixed-address/ { lease = $2 }  END { printf lease } ' | sed     's/[";]//g')
          echo "cloudstack-hostname: Hostname _localhost_ detected. Changing hostname and adding hosts."
          printf " Hostname: $hostname\n FQDN: $fqdn\n IP: $ip"
          # Update /etc/hosts
          awk -v i="$ip" -v f="$fqdn" -v h="$hostname" "/^127/{x=1} !/^127/ && x { x=0; print i,f,h; } { print $0; }" /etc/hosts > /etc/hosts.dhcp.tmp
          mv /etc/hosts /etc/hosts.dhcp.bak
          mv /etc/hosts.dhcp.tmp /etc/hosts
          # Rename Host
          echo $hostname > /etc/hostname
          hostname -b -F /etc/hostname
          echo $hostname > /proc/sys/kernel/hostname
          # Recreate SSH2
          export DEBIAN_FRONTEND=noninteractive
          dpkg-reconfigure openssh-server
      fi
      ### End of Script ###
      
      chmod 774  /etc/dhcp/dhclient-exit-hooks.d/sethostname
      

    警告

    当你准备好做你的主模板的时候请运行下列步骤。如果主模板在这些步骤期间重启了,那么你要重新运行所有的步骤。在这个过程的最后,主模板应该关机并且将其创建为模板,然后再部署。

  4. 移除udev持久设备规则

    这一步会移除你的主模板的特殊信息,如网络MAC地址,租约信息和CD块设备,这个文件会在下次启动时自动生成。

    • Ubuntu

      rm -f /etc/udev/rules.d/70*
      rm -f /var/lib/dhcp/dhclient.*
      
    • CentOS

      rm -f /etc/udev/rules.d/70*
      rm -f /var/lib/dhclient/*
      
  5. 移除SSH Keys

    这步是为了确认所有要作为模板的VMs的SSH Keys都不相同,否则这样会降低虚拟机的安全性。

    rm -f /etc/ssh/*key*
    
  6. 清除日志文件

    从主模板移除旧的日志文件是一个好习惯。

    cat /dev/null > /var/log/audit/audit.log 2>/dev/null
    cat /dev/null > /var/log/wtmp 2>/dev/null
    logrotate -f /etc/logrotate.conf 2>/dev/null
    rm -f /var/log/*-* /var/log/*.gz 2>/dev/null
    
  7. 设置主机名

    为了Ubuntu DHCP的脚本功能和CentOS dhclient能设置VM主机名,他们都去要设置主模板的主机名设置为“localhost”,运行下面的命令来更改主机名。

    hostname localhost
    echo "localhost" > /etc/hostname
    
  8. 设置用户密码期限

    这步是要在模板部署之后强制用户更改VM的密码。

    passwd --expire root
    
  9. 清除用户历史

    下一步来清除你曾经运行过的bash命令。

    history -c
    unset HISTFILE
    
  10. 关闭VM

    现在你可以关闭你的主模板并且创建模板了!

    halt -p
    
  11. 创建模板!

    现在你可以创建模板了,更多信息请参阅 “从已存在的虚拟机创建模板”

注解

通过Ubuntu和CentOS的模板分发的虚机可能需要重启才让主机名生效。

创建Windows模板

Windows模板在分发多个虚拟机的之前必须使用Sysprep初始化。Sysprep允许你创建一个通用的Windows模板和避免任何可能的SID冲突。

注解

(XenServer)XXenServer上运行的Windows VMs需要安装PV驱动,它可能在模板中或在创建完VM后添加。PV驱动对于基本的管理功能是必要的,比如挂载额外的卷和ISO镜像、在线迁移和正常关机。

过程概述如下:

  1. 上传你的Windows ISO。

    更多信息,请参阅 “添加ISO”

  2. 使用这个ISO创建VM实例。

    更多信息,请参阅 “创建VMs”

  3. 按照你所使用的WIndows Server版本进行Windows Server 2008 R2(下面的)或者Windows Server 2003 R2中Sysprep的操作步骤。

  4. 准本工作完成了。现在你可以按照创建Windows模板中描述的来创建模板。

为Windows Server 2008 R2进行系统准备

对于Windows 2008 R2,你运行Windows系统镜像管理来创建一个自定义的sysprep应答XML文件。Windows系统镜像管理作为Windows Automated Installation Kit (AIK)的一部分安装在系统中。Windows AIK可以从 `微软下载中心 <http://www.microsoft.com/en-us/download/details.aspx?id=9085>`_下载到。

按照以下步骤运行Windows 2008 R2的sysprep:

注解

这些步骤的概述来源于Charity Shelbourne一个非常棒的指导,发布在 Windows Server 2008 Sysprep Mini-Setup.

  1. 下载和安装Windows AIK

    注解

    刚刚创建的Windows 2008 R2上面并没有安装Windows AIK。Windows AIK不是你创建的模板中的一部分。它仅仅用于创建sysprep应答文件。

  2. 在\Windows 2008 R2安装DVD中的源目录复制install.wim文件到本地硬盘。这是一个非常大的文件可能会复制较长时间。Windows AIK要求WIM文件是可写的。

  3. 打开Windows系统镜像管理器。

  4. 在Windows镜像面板,右击选择一个Windows镜像或编录文件选项来读取你刚刚复制的install.wim文件。

  5. 选择Windows 2008 R2版本。

    你可能会收到一个警告提示说不能打开编录文件。点击是来创建一个新的编录文件。

  6. 在应答文件面板,右击来创建一个新的应答文件。

  7. 使用以下步骤从Windows系统镜像管理器生成应答文件:

    1. 第一个页面你必须让语言和国家或位置选择页面是自动的。要使这个自动化,请在你的Windows 镜像面板扩展组件,右击Microsoft-Windows-International-Core添加设置以传送 7 oobeSystem。在你的应答文件面板中,为语言和国家或位置用适当的设置配置InputLocale、SystemLocale、UILanguage、和UserLocale。你可能对这些设置有疑问,你可以指定一个设置右击选择帮助。这将打开对应的CHM帮助文件,这里面包括了与你尝试配置的设置相关的一些示例。

      System Image Manager

    2. 你需要将软件授权选择页配置为自动进行,这不是众所周知的EULA。为此,展开Microsoft-Windows-Shell-Setup组件,选中OOBE 设置,将此设置加入到Pass 7 oobeSystem中去。在设置中,将HideEULAPage 设置为true。

      Depicts hiding the EULA page.

    3. 确保恰当的设置了序列号。如果使用MAK的话,可以在Windows2008R2的虚拟机上输入MAK。并不需要将MAK输入到Windows映像管理器中。如果你使用KMS主机进行激活,则不需要输入产品序列号。Windows卷激活的详细信息可以在http://technet.microsoft.com/en-us/library/bb892849.aspx 上查看。

    4. 类似机械化的操作还有更改管理员密码页。展开Microsoft-Windows-Shell-Setup组件(如果没有展开的话),展开用户账户,右键点击管理员密码,添加设置到Pass 7 oobeSystem配置,在设置中,指定一个密码。

      Depicts changing the administrator password

      可能会需要阅读AIK文档并设置多个选项来适合你的部署。以上的步骤至少需要使windows脱离建立网络的过程。

  8. 将答案文件保存为unattend.xml,可以忽略验证窗口中的警告信息。

  9. 将unattend.xml文件拷贝到Windows 2008 R2 虚拟机的c:\windows\system32\sysprep 文件夹下,

  10. 一旦将unattend.xml文件放到 c:\windows\system32\sysprep文件夹下,则按以下步骤运行sysprep工具:

    cd c:\Windows\System32\sysprep
    sysprep.exe /oobe /generalize /shutdown
    

    Windows 2008 R2虚拟机在sysprep完成后,会自动关闭。

针对Windows Server 2003R2的系统准备

早期的windows版本有个不同的sysprep的工具,按照这些步骤准备Windows Server 2003 R2。

  1. 从Windows 安装CD中提取\support\tools\deploy.cab到WIndows 2003 R2 虚拟机中的此目录 c:\sysprep。

  2. 运行 c:\sysprep\setupmgr.exe 来创建syprep.inf文件。

    1. 选择创建新的来创建一个新的应答文件。
    2. 安装的类型选择 “Sysprep 安装”
    3. 选择合适的OS版本
    4. 在许可协议界面,选择”是,完全自动安装”
    5. 提供你的名称和组织。
    6. 保留显示设置为默认。
    7. 设置合适的时区。
    8. 提供你的产品key。
    9. 给你的部署选择一个合适的许可模式。
    10. 选择”自动生成计算机名”。
    11. 输入一个默认的管理员密码。如果你启用了密码重置功能,用户实际上将不会使用这个密码。在来宾虚机启动之后实例管理器会重置密码。
    12. 网络组件使用”典型设置”。
    13. 选择“WORKGROUP”选项。
    14. 电话服务使用默认。
    15. 选择合适的区域设置。
    16. 选择合适的语言选项。
    17. 不要安装打印机。
    18. 不要指定”运行一次”。
    19. 你不必指定标示字符串。
    20. 将应答文件保存到c:\sysprep\sysprep.inf。
  3. 运行以下命令行来sysprep镜像:

    c:\sysprep\sysprep.exe -reseal -mini -activated
    

    在这个步骤之后,虚拟机会自动关机。

导入Amazon Machine Images

以下过程描述了当使用XenServer hypervisor时,如何导入一个AMI到Cloudstack中。

假定你有一个叫做CentOS_6.2|_x64的AMI文件。假定未来你将工作在CentOS主机上。如果AMI是一个Fedora镜像,你需要将它立即安装到Fedora主机上。

一旦镜像文件在CentOS/Fedora主机上自定义完毕,你必须有一台使用文件存储库(本地ext3 SR或者NFS SP)的XenServer主机将其转换VHD。

注解

当复制和粘贴命令时,请确保没有多余的换行符,因为一些文档查看器可能会在复制时加上换行符。

导入一个AMI:

  1. 建立在镜像文件上的回滚

    # mkdir -p /mnt/loop/centos62
    # mount -o loop  CentOS_6.2_x64 /mnt/loop/centos54
    
  2. 安装kernel-xen包到镜像文件中。下载PV内核和ramdisk到镜像中。

    # yum -c /mnt/loop/centos54/etc/yum.conf --installroot=/mnt/loop/centos62/ -y install kernel-xen
    
  3. 在 /boot/grub/grub.conf中创建一个引导。

    # mkdir -p /mnt/loop/centos62/boot/grub
    # touch /mnt/loop/centos62/boot/grub/grub.conf
    # echo "" > /mnt/loop/centos62/boot/grub/grub.conf
    
  4. 终止已经安装到镜像文件中的PV内核名称

    # cd /mnt/loop/centos62
    # ls lib/modules/
    2.6.16.33-xenU  2.6.16-xenU  2.6.18-164.15.1.el5xen  2.6.18-164.6.1.el5.centos.plus  2.6.18-xenU-ec2-v1.0  2.6.21.7-2.fc8xen  2.6.31-302-ec2
    # ls boot/initrd*
    boot/initrd-2.6.18-164.6.1.el5.centos.plus.img boot/initrd-2.6.18-164.15.1.el5xen.img
    # ls boot/vmlinuz*
    boot/vmlinuz-2.6.18-164.15.1.el5xen  boot/vmlinuz-2.6.18-164.6.1.el5.centos.plus  boot/vmlinuz-2.6.18-xenU-ec2-v1.0  boot/vmlinuz-2.6.21-2952.fc8xen
    

    Xen的kernels/ramdisk通常以“xen”结尾。在lib/modules中选择相应的内核版本,intrd和vmlinuz将作出相应的反应.综上,唯一要求的条件是版本为2.6.18-164.15.1.el5xen。

  5. 根据你要找的内容,在grub.conf文件中创建一个入口。以下为入口例子。

    default=0
    timeout=5
    hiddenmenu
    title CentOS (2.6.18-164.15.1.el5xen)
       root (hd0,0)
       kernel /boot/vmlinuz-2.6.18-164.15.1.el5xen ro root=/dev/xvda
       initrd /boot/initrd-2.6.18-164.15.1.el5xen.img
    
  6. 编辑 etc/fstab,将”sda1“改为”xvda”并将“sdb”改为”xbdb”.

    # cat etc/fstab
    /dev/xvda  /         ext3    defaults        1 1
    /dev/xvdb  /mnt      ext3    defaults        0 0
    none       /dev/pts  devpts  gid=5,mode=620  0 0
    none       /proc     proc    defaults        0 0
    none       /sys      sysfs   defaults        0 0
    
  7. 通过终端开启登陆。在默认终端设备XenServer系统上的是xvc0.确定在etc/inittab和etc/securetty中有以下各自的行:

    # grep xvc0 etc/inittab
    co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
    # grep xvc0 etc/securetty
    xvc0
    
  8. 确保虚拟盘支持PV磁盘和PV网络。为你之前选择好的kernel版本自定义这些。

    # chroot /mnt/loop/centos54
    # cd /boot/
    # mv initrd-2.6.18-164.15.1.el5xen.img initrd-2.6.18-164.15.1.el5xen.img.bak
    # mkinitrd -f /boot/initrd-2.6.18-164.15.1.el5xen.img --with=xennet --preload=xenblk --omit-scsi-modules 2.6.18-164.15.1.el5xen
    
  9. 修改密码

    # passwd
    Changing password for user root.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
    
  10. 退出chroot

    # exit
    
  11. 检查 `etc/ssh/sshd_config`中关于允许在ssh登录时使用密码的相关行。

    # egrep "PermitRootLogin|PasswordAuthentication" /mnt/loop/centos54/etc/ssh/sshd_config
    PermitRootLogin yes
    PasswordAuthentication yes
    
  12. 如果你需要通过CloudStack· UI或API启用重置模板的密码功能,在镜像中安装密码更改脚本。相关内容请参考:ref:adding-password-management-to-templates

  13. 卸载或删除loopback挂载。

    # umount /mnt/loop/centos54
    # losetup -d /dev/loop0
    
  14. 复制镜像文件到XenServer主机的文件存储库。在下面的例子中,XenServer是”xenhost”。这个XenServer有一个UUID为a9c5b8c8-536b-a193-a6dc-51af3e5ff799的NFS库。

    # scp CentOS_6.2_x64 xenhost:/var/run/sr-mount/a9c5b8c8-536b-a193-a6dc-51af3e5ff799/
    
  15. 登录到XenServer然后创建一个与镜像同样大小的VDI。

    [root@xenhost ~]# cd /var/run/sr-mount/a9c5b8c8-536b-a193-a6dc-51af3e5ff799
    [root@xenhost a9c5b8c8-536b-a193-a6dc-51af3e5ff799]#  ls -lh CentOS_6.2_x64
    -rw-r--r-- 1 root root 10G Mar 16 16:49 CentOS_6.2_x64
    [root@xenhost a9c5b8c8-536b-a193-a6dc-51af3e5ff799]# xe vdi-create virtual-size=10GiB sr-uuid=a9c5b8c8-536b-a193-a6dc-51af3e5ff799 type=user name-label="Centos 6.2 x86_64"
    cad7317c-258b-4ef7-b207-cdf0283a7923
    
  16. 将镜像导入到VDI中。这可能会花费10-20分钟。

    [root@xenhost a9c5b8c8-536b-a193-a6dc-51af3e5ff799]# xe vdi-import filename=CentOS_6.2_x64 uuid=cad7317c-258b-4ef7-b207-cdf0283a7923
    
  17. 找到这个VHD文件。它的名字是以VDI的UUID命名的。压缩并上床至你的web服务器。

    [root@xenhost a9c5b8c8-536b-a193-a6dc-51af3e5ff799]# bzip2 -c cad7317c-258b-4ef7-b207-cdf0283a7923.vhd > CentOS_6.2_x64.vhd.bz2
    [root@xenhost a9c5b8c8-536b-a193-a6dc-51af3e5ff799]# scp CentOS_6.2_x64.vhd.bz2 webserver:/var/www/html/templates/
    

将Hyper-V的VM转换为模板

要转换Hyper-V的VM到兼容XenServer的CloudStack模板,你需要一个独立的添加了NFS VHD SR的XenServer主机。无论使用CloudStack管理哪个版本XenServer,但必须是XenCenter 5.6 FP1或SP2(它向下兼容5.6)。另外,添加了NFS ISO SR是有帮助的。

对于Linux VMs,在尝试让VM在XenServer中工作之前你可能必须在Hyper-V做一些准备工作。如果你仍然想要在Hyper-V中使用这个VM的话,克隆这个VM然后在克隆的虚机上操作。卸载Hyper-V集成组件然后检查任何/etc/fstab中涉及的相关设备名称:

  1. 从 linux_ic/drivers/dist 目录中,运行make uninstall(“linux_ic” 是复制的Hyper-V集成组件的路径)。
  2. 从备份/boot/ 恢复原始的文件系统(备份名称为 *.backup0)。
  3. 从 /boot/grub/menu.lst移除 “hdX=noprobe” 。
  4. 通过名称从 /etc/fstab中检查任何挂载的分区。将这些条目(如果有)改成使用LABEL或者UUID挂载。你能通过 blkid命令获得这些信息。

下一步请确保Hyper-V中的这个VM没有运行,然后把VHD送至XenServer。有两个选择。

选项一:

  1. 使用XenCenter导入VHD。在XenCenter中,找到Tools>Virtual Appliance Tools>Disk Image Import。
  2. 选择VHD,然后点击下一步。
  3. 给VM起个名字,在Storage下选择 NFS VHD SR,启用”Run Operating System Fixups” 然后选择NFS ISO SR。
  4. 点击下一步 完成。完成虚拟机创建。

选项二:

  1. 运行 XenConvert ,选择 VHD,选择 XenServer,点击下一步。
  2. 选择VHD,然后点击下一步。
  3. 输入XenServer主机信息,点击下一步。
  4. 输入VM名称,点击“下一步”,点击“转换”。VM应该就创建了。

一旦你完成从hyper-v VHD到虚拟机的创建,准备使用以下步骤:

  1. 启动虚拟机,卸载Hyper-V集成服务,并重新启动。
  2. 安装XenServer Tools,然后重新启动。
  3. 按需要准备VM。例如在Windows VM上执行sysprep。请参阅 “创建Windows模板”

以上任一选项将在HVM模式下创建一个VM。对于Windows虚拟机来说这是很好的,但Linux的虚拟机可能无法达到最佳性能。要转换Linux虚拟机到PV模式,对于不同的发行版本将需要额外的步骤。

  1. 关闭虚拟机,从NFS存储拷贝VHD到一个web服务器;比如,在web服务器上挂载NFS共享然后拷贝它,或者是在XenServer主机上用sftp或scp将VHD上传到web服务器。
  2. 在 CloudStack中,使用以下值创建一个新的模板:
    • URL。给VHD指定URL。
    • OS类型。使用适当的OS。对于CentOS的PV模式来说,选择其他PV (32位)或其他PV(64位)。这个选项仅适用于XenServer。
    • Hypervisor。XenServer
    • 格式。VHD

模板就创建好了,然后你可以通过它创建实例。

给你的模板添加密码管理

CloudStack提供了可选的密码重置功能,该功能允许用户在CloudStack UI上设置临时的admin或root密码,也可以重置现有的admin或root密码。

为启用密码重置功能,您需要下载额外的脚本到模版上。当您之后在CloudStack中添加模版时,您可以指定该模版是否启用重置admin或root密码的功能。

密码管理功能总是在虚机启动时重置账号的密码。该脚本通过对虚拟路由器的HTTP调用,获取需要重置的账号密码。启动时,只要虚拟路由器可以访问,虚机就可以获得应该设置的账号密码。当用户请求密码重置时,管理服务器会生成新密码,并发送到虚拟路由器。因而,虚机需要重启新密码才能生效。

在虚机重启时,如果脚本不能连接到虚拟路由器,则密码不会被重置,但启动过程还会继续正常执行。

Linux系统安装

使用一下步骤开始Linux系统的安装:

  1. 下载cloud-set-guest-password脚本文件:

  2. Rename the file:

    mv cloud-set-guest-password.in cloud-set-guest-password
    
  3. 拷贝本文件到 /etc/init.d 。

    在某些linux发行版拷贝此文件到 /etc/rc.d/init.d

  4. 执行以下命令使脚本可执行:

    chmod +x /etc/init.d/cloud-set-guest-password
    
  5. 根据不同的Linux发行版,选择适当的步骤继续。

    在Fedora,CentOS/RHEL和Debian上运行:

    chkconfig --add cloud-set-guest-password
    
Windows OS 安装

从`下载页<http://sourceforge.net/projects/cloudstack/files/Password%20Management%20Scripts/CloudInstanceManager.msi/download>`_ 下载安装程序CloudInstanceManager.msi,并在新创建的Windows 虚拟机中运行安装程序。

删除模板

模板可以被删除。在一般情况下,当一个模板跨越多个区域,只有被选中的副本才会被删除,在其他区域相同的模板将不会被删除。CentOS的模板是一个例外。如果所提供的CentOS的模板被删除,它从所有区域都将被删除。

当删除模板时,从它们中产生的虚拟机实例将继续运行。然而,新的虚拟机不能在被删除模板的基础上创建。

使用主机

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

使用主机

添加主机

添加主机能为来宾VMs提供更多的性能。更多需求与说明请参阅 “添加主机”

主机的维护计划与维护模式

你可以使一台主机进入维护模式。当激活维护模式时,这台主机将不会接纳新的来宾VMs,同时上面的VMs会无缝地迁移到其他非维护模式的主机上。这个迁移使用在线迁移技术并且不会中断用户的操作。

vCenter与维护模式

要使vCenter主机进入维护模式,vCenter和CloudStack上都必须进行此操作。CloudStack和vCenter有各自的维护模式,他们需要紧密合作。

  1. 在CloudStack中,将主机进入”维护计划”模式。这个操作不会调用vCenter的维护模式,但是会将VMs迁离该主机。

    当CloudStack维护模式启用后,主机首先会进入准备维护状态。在这个阶段它不能运行新的来宾VMs。然后所有的VMs将会被迁离该主机。主机使用在线迁移来迁移VMs。这种方式能够使来宾VMs在迁移到其他主机的过程中不会中断用户的操作。

  2. 等”准备好维护”指示灯出现在UI中。

  3. 现在使用vCenter通过必要的步骤将主机进入维护模式。在此期间,主机不会运行新的VM。

  4. 当维护任务完成之后,按以下操作将主机退出维护模式:

    1. 首先通过vCenter退出vCenter维护模式。

      这么做是为了主机能够准备好以便CloudStack恢复它。

    2. 然后通过CloudStack的管理员UI来取消CloudStack维护模式

      当主机恢复正常,被迁移走的VMs可能需要手工迁移回来并且也能在主机上添加新的VMs了。

XenServer和维护模式

对于XenServer,你能够通过使用XenCenter中的维护模式功能将一台服务器临时的离线。当你使一台服务器进入维护模式,所有运行的VMs都会自动的迁移到同一个池中的其他主机上。如果此服务器是池master主机,那么此池会选举一个新的master主机。当一台服务器在维护模式下时,你不能在上面创建或启动任何VMs。

使一台服务器进入维护模式:

  1. 在资源面板,选择服务器,然后按下列步骤进行操作:
    • 右击,然后在弹出的快捷菜单中点击进入维护模式。
    • 在服务器菜单,点击进入维护模式。
  2. 点击进入维护模式。

当所有运行当中的VMs成功的迁离该主机后,在资源面板中会显示服务器的状态。

使服务器退出维护模式:

  1. 在资源面板,选择服务器,然后按下列步骤进行操作:
    • 右击,然后在弹出的快捷菜单中点击退出维护模式。
    • 在服务器菜单,点击提出维护模式。
  2. 点击退出维护模式。

禁用和启用Zones,Pods和Clusters

你可以启用或禁用一个zone,pod或者cluster而不用永久的从云中移除他们。这对于维护或者当云中一部分架构的可靠性有问题的时候很有用。禁用状态下的zone,pod或cluster不会接受新的分配,除非其状态变为启用。当一个zone,pod或cluster是初次添加到云中的,默认的情况下它是禁用的。

要禁用和启用一个zone,pod或者cluster:

  1. 使用管理员权限的账号登录到CloudStack
  2. 在左侧导航栏中,点击基础架构
  3. 点击区域中的查看更多。
  4. 如果你要禁用或启用一个zone,请在列表里找到zone的名称,然后点击启用/禁用按钮。button to enable or disable zone, pod, or cluster.
  5. 如果你要禁用或启用一个pod或者cluster,点击包含该pod或cluster的zone名称。
  6. 点击计算这个标签。
  7. 在示意图中的Pods或者Clusters节点,点击查看所有。
  8. 点击列表中的pod或者cluster名称。
  9. 点击启用/禁用按钮。button to enable or disable zone, pod, or cluster.

移除主机

主机在需要的时候可以被移除。这个过程取决于主机所使用的hypervisor类型。

移除XenServer和KVM主机

cluster中的主机只有进入维护模式才能被移除。这么做是为了确保其上所有的VMs被迁移至其他主机。要从云中移除一个主机:

  1. 将主机进入维护模式。

    请参考`“主机的维护计划与维护模式” <#scheduled-maintenance-and-maintenance-mode-for-hosts>`_.

  2. 对于KVM,停止cloud-agent服务。

  3. 使用UI选项来移除主机。

    然后你可以关掉主机,重用它的IP地址,重新安装系统,等等。

移除vSphere主机

要移除此类型的主机,首先按照 `“主机的维护计划与维护模式” <#scheduled-maintenance-and-maintenance-mode-for-hosts>`_中的描述将其进入维护模式。然后使用CloudStack来移除主机。使用CloudStack移除主机时,CloudStack不会直接操作主机。但是,主机可能仍然存留在vCenter群集中。

重新安装主机

你可以在将主机进入维护模式并移除它之后重新安装系统。如果主机是宕机状态而不能进入维护模式,在重装它之前仍然能被移除。

在主机上维护Hypervisors

当主机上运行了hypervisor软件,请确保安装了供应商提供的所有修补程序。请通过供应商跟踪虚拟化平台的补丁发布情况,一旦发布,请尽快打上补丁。CloudStack不会跟踪或通知您所需要的虚拟化平台补丁。您的主机及时打上最新虚拟化平台补丁是非常重要的。虚拟化平台厂商很可能会拒绝支持未打最新补丁的系统。

注解

缺乏最新补丁更新可能会导致数据和虚拟机丢失。

(XenServer)更多信息,请参考`CloudStack知识库中高度推荐的XenServer修补程序 <http://docs.cloudstack.org/Knowledge_Base/Possible_VM_corruption_if_XenServer_Hotfix_is_not_Applied/Highly_Recommended_Hotfixes_for_XenServer_5.6_SP2>`_.

更改主机密码

数据库中的XenServer主机,KVM主机或者vShpere主机密码可能会被变更。注意群集中的所有节点密码必须一致。

用户名和密码要更改一台主机的密码:

  1. 让群集中所有的主机状态保持一致。

  2. 更改群集中所有主机的密码。此刻主机上的密码与CloudStack已知的密码不一致。两个密码不一致的话会导致群集上的操作失败。

  3. if the password in the database is encrypted, it is (likely) necessary to encrypt the new password using the database key before adding it to the database.

    java -classpath /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar \
    org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \
    encrypt.sh input="newrootpassword" \
    password="databasekey" \
    verbose=false
    
  4. 获取群集中你更改了密码的主机ID列表。你必须访问数据库来获取这些ID。为每个你要更改密码的主机名(或者vSphere群集) “h”,执行:

    mysql> SELECT id FROM cloud.host WHERE name like '%h%';
    
  5. This should return a single ID. Record the set of such IDs for these hosts. Now retrieve the host_details row id for the host

    mysql> SELECT * FROM cloud.host_details WHERE name='password' AND host_id={previous step ID};
    
  6. Update the passwords for the host in the database. In this example, we change the passwords for hosts with host IDs 5 and 12 and host_details IDs 8 and 22 to “password”.

    mysql> UPDATE cloud.host_details SET value='password' WHERE id=8 OR id=22;
    

超配和服务方案限制

(支持XenServer、KVM和VMware)

CPU和内存(RAM)超配直接影响每个群集中主机上可以运行的VMs数量。这样可以帮助优化资源的使用。依靠增加超配比率,能使使资源更充分的被利用。如果比率设为1,那么表示没有使用超配。

管理员也可以在cpu.overprovisioning.factor和mem.overprovisioning.factor这两个全局配置变量中设置全局默认超配比率。默认的值是1:默认情况下超配是关闭的。

超配比率是由CloudStack的容量计算器动态调整的。比如:

容量=2GB 超配系数=2 超配后容量=4GB

按照这个配置,假设你部署了3个VMs,每个VM 1GB:

已使用=3GB 空闲=1GB

管理员可以在每个群集中指定一个内存超配比率,也可以同时指定CPU和内存超配比率。

在任何已有的云中,hypervisor、存储和硬件配置影响每个主机上VMs最佳数量。同一个云中的每个群集的这些配置可能都不同。单一的全局超配设置不能为云中所有的群集提供最佳效果。它只能作为一个基线。无论CloudStack使用哪种算法来放置一个VM,每个群集都提供了细颗粒度的设置以提供更好的资源效果。

超配设置和专用资源(对一个账号分配一个特定的群集)一起使用时能对不同用户有效的提供的不同服务级别。比如,一个账号购买了比较高级别的服务,那么分配给他一个超配比率为1的专用群集,购买低级别服务的账号分配一个比率为2的群集。

当一个新主机被添加到群集中,CloudStack假设配置了超配的群集中的主机能够提供CPU和RAM的超配能力。这个要靠管理员来决定主机是否真的能够提供设置的超配级别。

XenServer和KVM中超配的局限性
  • 在XenServer中,由于这个hypervisor的限制,超配系数不能超过4。
  • KVM hypervisor不能动态的管理分配给VMs的内存。CloudStack设置VM能够使用的内存最小和最大量。Hypervisor基于存储器争用技术在设定范围内调整内存。
存储超配的要求

为了让超配能够正常工作需要几个前提条件。此特性取决于OS类型,hypervisor功能和特定的脚本。管理员负责确认这些条件都符合。

Balloon驱动

所有VMs中都安装了balloon驱动。Hypervisor靠balloon驱动与VM通讯以释放内存和让内存变得可用。

XenServer

Balloon驱动是Xen pv或者PVHVM驱动的一部分。Linux kernels 2.6.36和以上版本中包含了Xen pvhvm驱动。

VMware

Balloon驱动是VMware tools的一部分。在一台超配群集中部署的所有的VMs都应该安装VMware tools。

KVM

所有VMs都需要支持virtio驱动。Linux kernel versions 2.6.25和更高版本中已经安装了这些驱动。管理员必须在virtio的配置文件中配置CONFIG_VIRTIO_BALLOON=y。

Hypervisor功能

Hypervisor必须能够使用内存ballooning。

XenServer

Hypervisor必须启用了DMC(动态内存控制)功能。只有XenServer高级版以及更高版本拥有这个功能。

VMware、KVM

默认支持内存ballooning。

设置存储超配系数

管理员有两种方法来设置CPU和RAM超配系数。第一,当新的群集被创建完成的时候全局配置中的cpu.overprovisioning.factor和mem.overprovisioning.factor将生效。第二,对于已存在的群集可以直接修改系数。

只有在变更之后部署VMs,设置才会生效。如果想让变更之前部署的VMs也能继承新的超配比率,你必须重启VMs。当此操作完成之后,CloudStack会重新计算或者调整已使用的资源,并且基于新的超配比率预留出容量,以保证CloudStack正确的掌握了剩余容量的情况。

注解

如果新的可用容量不足以满足新的VMs需求,那么当重新计算容量的过程中不去部署新的VMs是比较安全的。等新的已用/可用容量完全可用时,确认这空间对于你想创建的VMs足够用。

在已存在的群集中更改超配系数:

  1. 使用管理员登录到CloudStack管理界面。

  2. 在左侧导航栏中,点击基础架构

  3. 在群集页面,点击查看所有。

  4. 选择你要操作的群集,点击编辑按钮。

  5. 在CPU overcommit ratio和RAM overcommit ratio区域里填入你希望的超配系数。这里的初始值是从全局配置设置里继承而来的。

    注解

    在XenServer中,由于这个hypervisor的限制,超配系数不能超过4。

服务方案限制和超配

服务方案限制(比如1GHz,1 core)是受到core数严格限制的。比如,一个使用1 core服务方案的用户只能用 1core,无论这个主机多空闲。

GHz的服务方案限制只存在于CPU资源的争用中。比如,假设用户在一个有2GHz core的主机上创建了一个1 GHz的服务方案,并且该用户是这个主机上唯一一个用户。那么该用户有2 GHz可用性能。当多个用户尝试使用CPU,则由权重系数来调度CPU资源。这个权重基于服务方案中的时钟速度。用户分配到的CPU GHz与服务方案中一致。比如,用户从一个2GHz服务方案中创建的VM分配到的CPU是从1 GHz方案中分配到的2倍。CloudStack不能提供内存的超配。

VLAN供应

CloudStack能在主机上自动创建和销毁桥接至VLAN的网络接口。一般来说,管理员不需要介入此处理过程。

CloudStack根据hypervisor类型的不同,管理VLANs的方式也不同。对于XenServer或者KVM来说,只在使用VLANs的主机上创建VLANs,并且当所有使用VLANs的来宾虚机被销毁或者移动至其他主机的时候,这些VLANs就会被销毁。

vSphere上的VLANs是在群集中的所有主机上配置的,不管主机上有没有使用VLAN的来宾虚机在运行。这样允许管理员在vCenter中不需在目标主机上创建VLAN就可以执行在线迁移和其他功能。此外,当主机不再需要的时候VLANs也不会被移除。

你能够使用由不同的拥有二层网络结构的物理网络提供同样的VLANs,比如交换机。比如,在对高级zone中部署物理网络A和B的时候,你可以指定VLAN范围为500-1000。如果你的VLANs用尽了,这个功能允许你在不同的物理网卡上设置追加一个二层物理网络并且使用同样的VLANs设置。另一个优点是你可以在不同的物理网卡上为不同的客户使用同样的IPs设置,每个都有自己的路由器和来宾网络。

VLAN分配示例

公共和来宾流量要求使用VLAN,下面是一个VLAN分配的示例:

VLAN IDs 流量类型 范围
小于500 管理流量。 出于管理目的而预留的。CloudStack,hypervisors和系统虚机能访问它。
500-599 承载公共流量。 CloudStack账户。
600-799 承载来宾流量 CloudStack 账户。 从这个池中选择账户特定的VLAN。
800-899 承载来宾流量 CloudStack 账户。CloudStack管理员为账户指定特定的VLAN。
900-999 承载来宾流量 CloudStack 账户。可作为项目、域或所有账户的作用域。
大于1000 保留为将来使用  
添加不连续的VLAN范围

CloudStack能让你灵活的给你的网络添加不连续的VLAN范围。在创建一个zone的时候,管理员要么更新一个已存在的VLAN范围,要么添加多个不连续的VLAN范围。你同样可以使用UpdatephysicalNetwork API来扩展VLAN范围。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 确保VLAN范围没有被使用。

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

  4. 在Zones上,点击查看更多,然后点击你要进行操作的zone。

  5. 点击物理网络。

  6. 在图中的来宾节点上,点击配置

  7. 点击编辑|edit-icon.png|。

    现在VLAN范围区域是可编辑的了。

  8. 指定VLAN范围的起始和结束用逗号隔开。

    指定所有你想使用的VLANs,如果你添加新的范围到已有列表里,那么没有指定的VLANs将被移除。

  9. 点击应用

给隔离的网络指定VLAN。

CloudStack能够让你控制VLAN分配至隔离网络。作为一个Root管理员,当一个网络被创建后,你能为其分配一个VLAN ID,这个网络只能是共享网络。

同样被支持—当网络转换为运行状态是,VLAN是随机地通过物理网络的VNET范围分配给网络。当网络作为网络垃圾回收过程的一部分而关闭时,VLAN会被回收到VNET池。当网络再次启用的时候VLAN还能被其重用,或者其他网络使用。在每个新启用的网络中,都有一个新的VLAN被分配。

只有Root管理员能够分配VLANs,因为常规的用户和域管理员并不清楚物理网络拓扑。他们也不能查看哪个VLAN被分配给网络。

要把VLANs分配给隔离的网络,

  1. 使用下列指定的步骤创建一个网络方案:

    • 来宾网络类型:选择隔离的。
    • 指定VLAN:选择一个选项。

    更多信息,请参考CloudStack安装指导。

  2. 使用这个网络方案,创建一个网络。

    你可以创建一个VPC层或者一个隔离网络。

  3. 当你创建网络的时候指定VLAN。

    当VLAN被指定后,CIDR和网关就被分配给这个网络了,并且它的状态也变成Setup了。在这个状态下,网络不会被回收。

注解

一旦VLAN被分配给一个网络的话,你就不能更改它。VLAN将伴随着网络的整个生命周期。

Out-of-band Management

CloudStack provides Root admins the ability to configure and use supported out-of-band management interface (e.g. IPMI, iLO, DRAC, etc.) on a physical host to manage host power operations such as on, off, reset etc. By default, IPMI 2.0 baseboard controller are supported out of the box with IPMITOOL out-of-band management driver in CloudStack that uses ipmitool for performing IPMI 2.0 management operations.

Following are some global settings that control various aspects of this feature.

Global setting Default values Description
outofbandmanagement.action.timeout 60 The out of band management action timeout in seconds, configurable per cluster
outofbandmanagement.ipmitool.interface lanplus The out of band management IpmiTool driver interface to use. Valid values are: lan, lanplus etc
outofbandmanagement.ipmitool.path /usr/bin/ipmitool The out of band management ipmitool path used by the IpmiTool driver
outofbandmanagement.ipmitool.retries 1 The out of band management IpmiTool driver retries option -R
outofbandmanagement.sync.poolsize 50 The out of band management background sync thread pool size 50

A change in outofbandmanagement.sync.poolsize settings requires restarting of management server(s) as the thread pool and a background (power state) sync thread are configured during load time when CloudStack management server starts. Rest of the global settings can be changed without requiring restarting of management server(s).

The outofbandmanagement.sync.poolsize is the maximum number of ipmitool background power state scanners that can run at a time. Based on the maximum number of hosts you’ve, you can increase/decrease the value depending on how much stress your management server host can endure. It will take atmost number of total out-of-band-management enabled hosts in a round * outofbandmanagement.action.timeout / outofbandmanagement.sync.poolsize seconds to complete a background power-state sync scan in a single round.

In order to use this feature, the Root admin needs to first configure out-of-band management for a host using either the UI or the configureOutOfBandManagement API. Next, the Root admin needs to enable it. The feature can be enabled or disabled across a zone or a cluster or a host,

Once out-of-band management is configured and enabled for a host (and provided not disabled at zone or cluster level), Root admins would be able to issue power management actions such as on, off, reset, cycle, soft and status.

If a host is in maintenance mode, Root admins are still allowed to perform power management actions but in the UI a warning is displayed.

Security

Starting 4.11, CloudStack has an inbuilt certicate authority (CA) framework and a default ‘root’ CA provider which acts as a self-signed CA. The CA framework participates in certificate issuance, renewal, revocation, and propagation of certificates during setup of a host. This framework is primary used to secure communications between CloudStack management server(s), the KVM/LXC/SSVM/CPVM agent(s) and peer management server(s).

Following are some global settings that control various aspects of this feature.

Global setting Description
ca.framework.provider.plugin The configured CA provider plugin
ca.framework.cert.keysize The key size used for certificate generation
ca.framework.cert.signature.algorithm The certificate signature algorithm
ca.framework.cert.validity.period Certificate validity in days
ca.framework.cert.automatic.renewal Whether to auto-renew expiring certificate on hosts
ca.framework.background.task.delay The delay between each CA background task round in seconds
ca.framework.cert.expiry.alert.period The number of days to check and alert expiring certificates
ca.plugin.root.private.key (hidden/encrypted in database) Auto-generated CA private key
ca.plugin.root.public.key (hidden/encrypted in database) CA public key
ca.plugin.root.ca.certificate (hidden/encrypted in database) CA certificate
ca.plugin.root.issuer.dn The CA issue distinguished name used by the root CA provider
ca.plugin.root.auth.strictness Setting to enforce two-way SSL authentication and trust validation
ca.plugin.root.allow.expired.cert Setting to allow clients with expired certificates

A change in ca.framework.background.task.delay settings requires restarting of management server(s) as the thread pool and a background tasks are configured only when CloudStack management server(s) start.

After upgrade to CloudStack 4.11+, the CA framework will by default use the root CA provider. This CA provider will auto-generate its private/public keys and CA certificate on first boot post-upgrade. For freshly installed environments, the ca.plugin.root.auth.strictness setting will be true to enforce two-way SSL authentication and trust validation between client and server components, however, it will be false on upgraded environments to be backward compatible with legacy behaviour of trusting all clients and servers, and one-way SSL authentication. Upgraded/existing environments can use the provisionCertificate API to renew/setup certificates for already connected agents/hosts, and once all the agents/hosts are secured they may enforce authentication and validation strictness by setting ca.plugin.root.auth.strictness to true and restarting the management server(s).

Server Address Usage

Historically, when multiple management servers are used a tcp-LB is used on port 8250 (default) of the management servers and the VIP/LB-IP is used as the host setting to be used by various CloudStack agents such as the KVM, CPVM, SSVM agents, who connect to the host on port 8250. However, starting CloudStack 4.11+ the host setting can accept comma separated list of management server IPs to which new CloudStack hosts/agents will get a shuffled list of the same to which they can cycle reconnections in a round-robin way.

Securing Process

Agents while making connections/reconnections to management server will only validate server certificate and be able to present client certificate (issued to them) when cloud.jks is accessible to them. On older hosts that are setup prior to this feature the keystore won’t be available, however, they can still connect to management server(s) if ca.plugin.root.auth.strictness is set to false. Management server(s) will check and setup their own cloud.jks keystore on startup, this keystore will be used for connecting to peer management server(s).

When a new host is being setup, such as adding a KVM host or starting a systemvm host, the CA framework kicks in and uses ssh to execute keystore-setup to generate a new keystore file cloud.jks.new, save a random passphrase of the keystore in the agent’s properties file and a CSR cloud.csr file. The CSR is then used to issue certificate for that agent/host and ssh is used to execute keystore-cert-import to import the issued certificate along with the CA certificate(s), the keystore is that renamed as cloud.jks replacing an previous keystore in-use. During this process, keys and certificates files are also stored in cloud.key, cloud.crt, cloud.ca.crt in the agent’s configuration directory.

When hosts are added out-of-band, for example a KVM host that is setup first outside of CloudStack and added to a cluster, the keystore file will not be available however the keystore and security could be setup by using keystore utility scripts manually. The keystore-setup can be ran first to generate a keystore and a CSR, then CloudStack CA can be used to issue certificate by providing the CSR to the issueCertificate API, and finally issued certificate and CA certificate(s) can be imported to the keystore using keystore-cert-import script.

Following lists the usage of these scripts, when using these script use full paths, use the final keystore filename as cloud.jks, and the certificate/key content need to be encoded and provided such that newlines are replace with ^ and space are replaced with ~:

keystore-setup <properties file> <keystore file> <passphrase> <validity> <csr file>

keystore-cert-import <properties file> <keystore file> <mode: ssh|agent> <cert file> <cert content> <ca-cert file> <ca-cert content> <private-key file> <private key content:optional>

Starting 4.11.1, a KVM host is considered secured when it has its keystore and certificates setup for both the agent and libvirtd process. A secured host will only allow and initiate TLS enabled live VM migration. This requires libvirtd to listen on default port 16514, and the port to be allowed in the firewall rules. Certificate renewal (using the provisionCertificate API) will restart both the libvirtd process and agent after deploying new certificates.

使用存储

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

使用存储

存储概述

CloudStack定义了两种存储:主存储和辅助存储。主存储可以使用iSCSI或NFS协议。另外,直接附加存储可被用于主存储。辅助存储通常使用NFS协议。

CloudStack不支持临时存储。所有节点上的所有卷都是持久存储。

主存储

本章节讲述的是关于CloudStack的主存储概念和技术细节。更多关于如何通过CloudStack UI安装和配置主存储的信息,请参阅安装向导。

“关于主存储”

主存储的最佳实践
  • 主存储的速度会直接影响来宾虚机的性能。如果可能,为主存储选择选择容量小,转速高的硬盘或SSDs。

  • CloudStack用两种方式使用主存储:

    静态:CloudStack管理存储的传统方式。在这个模式下,要给CloudStack预先分配几个存储(比如一个SAN上的卷)。然后CloudStack在上面创建若干个卷(可以是root和/或者数据盘)。如果使用这种技术,确保存储上没有数据。给CloudStack添加存储会销毁已存在的所有数据。

    动态:这是一个比较新的CloudStack管理存储的方式。在这个模式中,给CloudStack使用的是一个存储系统(但不是预分配的存储)。CloudStack配合存储一起工作,动态的在存储系统上创建卷并且存储系统上的每个卷都映射到一个CloudStack卷。这样做非常有利于存储的QoS。目前数据磁盘(磁盘方案)支持这个特性。

Runtime Behaviour of Primary Storage

当创建虚拟机的时候,root卷也会自动的创建。在VM被销毁的时候root卷也会被删除。数据卷可以被创建并动态的挂载到VMs上。VMs销毁时并不会删除数据卷。

管理员可以监控主存储设备的容量和在需要时添加其他的主存储。强参阅高级安装指导。

管理员通过CloudStack创建存储池来给系统添加主存储。每个存储池对应一个群集或者区域。

对于数据磁盘,当一个用户执行一个磁盘方案来创建数据磁盘的时候,初始化信息就被写到了CloudStack的数据库中。根据第一次给VM附加数据磁盘的请求,CloudStack决定这个卷的位置和空间占用在哪个存储(预分配存储和存储系统(比如SAN)中的任意一种,这取决于CloudStack使用的哪种主存储)。

Hypervisor对主存储的支持

下表显示了针对不同Hypervisors的存储选项和参数。

存储媒介 \ hypervisor VMware vSphere Citrix XenServer KVM Hyper-V
磁盘、模板和快照的格式 VMDK VHD QCOW2 不支持VHD快照。
支持iSCSI VMFS 集群化的LVM 支持,通过Shared Mountpoint
支持FC VMFS 支持,通过已有的SR 支持,通过Shared Mountpoint
支持NFS
支持本地存储
存储超配 NFS 和 iSCSI NFS NFS
SMB/CIFS
Ceph/RBD

XenServer通过在iSCSI和FC卷上使用集群化的LVM系统来存储VM镜像,并且不支持存储超配。尽管存储本身支持自动精简配置。不过CloudStack仍然支持在有自动精简配置的存储卷上使用存储超配。

KVM支持 “Shared Mountpoint”存储。Shared Mountpoint是群集中每个服务器本地文件系统中的一个路径。群集所有主机中的该路径必须一致,比如/mnt/primary1。并假设Shared Mountpoint是一个集群文件系统如OCFS2。在这种情况下,CloudStack不会把它当做NFS存储去尝试挂载或卸载。CloudStack需要管理员确保该存储是可用的。

在NFS存储中,CloudStack管理超配。这种情况下,使用全局配置参数storage.overprovisioning.factor来控制超配的范围。且不受hyperviso类型约束。

在vSphere, XenServer和KVM中,本地存储是一个可选项。当选择了使用本地存储,所有主机会自动创建本地存储池。想要系统虚拟机 (例如虚拟路由器)使用本地存储,请设置全局配置参数system.vm.use.local.storage为true.

CloudStack支持在一个群集内有多个主存储池。比如,使用2个NFS服务器提供主存储。或原有的1个iSCSI LUN达到一定容量时再添加第二个iSCSI LUN。

存储标签

存储是可以被”标签”的。标签是与主存储、磁盘方案或服务方案关联的字符串属性。标签允许管理员给存储添加额外的信息。比如”SSD”或者”慢速”。CloudStack不负责解释标签。它不会匹配服务和磁盘方案的标签。CloudStack要求在主存储上分配root或数据磁盘之前,所有服务和磁盘方案的都已存在对应的标签。服务和磁盘方案的标签被用于识别方案对存储的要求。比如,高端服务方案可能需要它的root磁盘卷是”快速的”

标签,分配,跨集群或机架的卷复制之间的关系是很复杂的。简单的环境就是在一个机架内所有集群的主存储使用相同的标签。即使用这些标签表示不同设备,展现出来的标签组仍可以是一样的。

主存储的维护模式

主存储可以被设置成维护模式。这很有用,例如,替换存储设备中坏的RAM。对存储设备的维护模式将首先停止任何新的来自预处理的来宾虚机,然后停止所有有数据卷的来宾虚机。当所有来宾虚机被停止的时候,这个存储设备就进入维护模式了并且可以关机。当存储设备再次上线的时候,你可以对这个设备取消维护模式。CloudStack将返回在线状态并且试着启动所有曾在这个设备进入维护模式前运行的来宾机器。

辅助存储

本章节讲述的是关于CloudStack的辅助存储概念和技术细节。更多关于如何通过CloudStack UI安装和配置主存储的信息,请参阅高级安装向导。

“关于辅助存储”

使用磁盘卷

卷为来宾虚机提供存储。卷可以作为root分区或附加数据磁盘。CloudStack支持为来宾虚机添加卷。

不同的hypervisor创建的磁盘卷有所不同。当磁盘卷被附加到一种hypervisor的虚拟机(如:xenserver),就不能再被附加到其他类型的hypervisor,如:vmware、kvm的虚拟机中。因为它们所用的磁盘分区模式不同。

CloudStack定义一个卷作为来宾虚机的一个有效的存储单元。卷可能是root磁盘或者数据磁盘。root磁盘在文件系统中有 “/” 并且通常用于启动设备。数据磁盘提供额外的存储,比如:”/opt”或者”D:”。每个来宾VM都有一个root磁盘,VMs可能也还有数据磁盘。终端用可以给来宾VMs挂在多个数据磁盘。用户通过管理员创建的磁盘方案来选择数据磁盘。用户同样可以在卷上创建模板;这是标准私有模板的创建流程。针对不同的hypervisor卷也不同:一个hypervisor类型上的卷不能用于其它的hypervisor类型上的来宾虚机。

注解

CloudStack supports attaching up to

  • 13 data disks on XenServer hypervisor versions 6.0 and above, And all versions of VMware.
  • 64 data disks on Hyper-V.
  • 6 data disks on other hypervisor types.
创建新卷

你可以在符合你存储能力的情况下随时向来宾虚拟机添加多个数据卷。CloudStack的管理员和普通用户都可以向虚拟机实例中添加卷。当你创建了一个新卷,他以一个实体的形式存在于CloudStack中,但是在你将其附加到实例中之前他并不会被分配实际的物理空间。这个优化项允许CloudStack提供最接近来宾虚机的卷,并在第一个附加至虚机的时候使用它。

使用本地存储作为数据卷

您可以将数据盘创建在本地存储上(XenServer、KVM和VMware支持)。数据盘会存放在和所挂载的虚机相同的主机上。这些本地数据盘可以象其它类型的数据盘一样挂载到虚机、卸载、再挂载和删除。

在不需要持久化数据卷和HA的情况下,本地存储是个理想的选择。其优点包括降低磁盘I/O延迟、使用廉价的本地磁盘来降低费用等。

为了能使用本地磁盘,区域中必须启用该功能。

您可以为本地存储创建一个数据盘方案。当创建新虚机时,用户就能够选择该磁盘方案使数据盘存放到本地存储上。

你不能将使用了本地存储作为磁盘的虚机迁移到别的主机,也不能迁移磁盘本身到别的主机。若要将主机置于维护模式,您必须先将该主机上所有拥有本地数据卷的虚机关机。

创建新卷
  1. 使用用户或管理员登录到CloudStack用户界面。

  2. 在左侧导航栏点击存储。

  3. 在选择视图中选择卷。

  4. 点击添加卷来创建一个新卷,填写以下信息后点击确定。

    • 名字。给卷取个唯一的名字以便于你以后找到它。
    • 可用的资源域。你想让这个存储在哪个地方有效?这个应该接近要是用这个卷的VM。(就是说你要 在单个资源域内使用这个存储就选择单个资源域,如果此存储要在多个资源与内共享你就选所有资源域)
    • 磁盘方案。选择存储特性。

    新建的存储会在卷列表中显示为“已分配”状态。卷数据已经存储到CloudStack了,但是该卷还不能被使用。

  5. 通过附加卷来开始使用这个卷。

上传一个已存在的卷给虚拟机

已存在的数据现在可以被虚拟机存取。这个被称为上传一个卷到VM。例如,这对于从本地数据系统上传数据并将数据附加到VM是非常有用的。Root管理员、域管理员和终端用户都可以给VMs上传已存在的卷。

使用HTTP上传。上传的卷被存储在区域中的辅助存储中。

如果预配置的卷已经达到了上限的话,那么你就不能上传卷了。默认的限制在全局配置参数max.account.volumes中设置,但是管理员同样可以为每个用户域设置不同于全局默认的上限值。请参阅设置使用限制。

要上传一个卷:

  1. (可选项)为将要上传的磁盘镜像文件创建一个MD5哈希(校验)。再上传数据磁盘之后,CloudStack将使用这个校验值来检查这个磁盘文件再上传过程中没有出错。

  2. 用管理员或用户账号登录CloudStack UI

  3. 在左侧导航栏点击存储。

  4. 点击上传卷。

  5. 填写以下内容:

    • 名称和描述。你想要的任何名称和一个简洁的描述,这些都会显示在UI中。

    • 可用的区域:选择你想存储卷的区域。运行在该区域中的主机上的VMs都可以附加这个卷。

    • 格式。在下面所指出的卷的磁盘镜像格式中选择一种。

      Hypervisor 磁盘镜像格式
      XenServer VHD
      VMware OVA
      KVM QCOW2
    • URL。CloudStack用来访问你的磁盘的安全HTTP或HTTPS URL。URL对应的文件种类必须符合在格式中选择的。例如,格式为VHD,则URL必须像下面的:

      http://yourFileServerIP/userdata/myDataDisk.vhd

    • MD5校验。(可选项)使用在步骤1中创建的哈希。

  6. 等到卷的上传显示完成。点击实例-卷,找到你在步骤5中指定的名称,单后确保状态是已上传。

附加一个卷

你可以通过附加一个卷来提供虚拟机的额外磁盘存储。当你第一次创建新卷,或移动已存在的卷到另一台虚拟机,或实在从另一个存储池迁移过来一个卷的时候你才可以附加一个卷。

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 在左侧导航栏点击存储。
  3. 在选择视图中选择卷。
  4. 在卷列表中点击卷的名称,然后点击附加磁盘按钮 Attach Disk Button.
  5. 在弹出的实例界面,选择你打算附加卷的那台虚拟机。你只能看到允许你附加卷的实例;比如,普通用户只能看到他自己创建的实例,而管理员将会有更多的选择。
  6. 当卷被附加之后,你通过点击实例看到实例名和该实例所附加的卷。
卸载和移动卷

注解

这个过程不同于从一个存储池移动卷到其他的池。这些内容在 `“VM存储迁移” <#vm-storage-migration>`_中有描述。

卷可以从来宾虚机上卸载再附加到其他来宾虚机上。CloudStack管理员和用户都能从VMs上卸载卷再给其他VMs附加上。

如果两个VMs存在于不同的群集中,并且卷很大,那么卷移动至新的VM上可能要耗费比较长的时间。

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 在左侧的导航栏,点击存储,在选择视图中选择卷。或者,如果你知道卷要附加给哪个VM的话,你可以点击实例,再点击VM名称,然后点击查看卷。
  3. 点击你想卸载卷的名字,然后点击卸载磁盘按钮。 Detach Disk Button.
  4. 要移动卷至其他VM,按照`“附加卷” <#attaching-a-volume>`_中的步骤。
VM存储迁移

Supported in XenServer, VMware and KVM

注解

这个过程不同于从一个虚拟机移动磁盘卷到另外的虚拟机。这些内容在 “查看挂载和移动卷” <#detaching-and-moving-volumes>`_中有描述。

你可以从同一区域中的一个存储池迁移虚机的root磁盘卷或任何其他的数据磁盘卷到其他的池

你可以使用存储迁移功能完成一些常用的管理目标。如将它们从有问题的存储池中迁移出去以平衡存储池的负载和增加虚拟机的可靠性。

在XenServer和VMware上,由于CloudStack支持XenMotion和vMotion,VM存储的在线迁移是启用的。在线存储迁移允许没有在共享存储上的VMs从一台主机迁移到另一台主机上。它提供选项让VM的磁盘与VM本身一起在线迁移。它让XenServer资源池之间/VMware群集之间迁移VM,或者在本地存储运行的VM,甚至是存储库之间迁移VM的磁盘成为可能,而且迁移同时VM是正在运行的。

注解

由于VMware中的限制,仅当源和目标存储池都能被源主机访问时才允许VM存储的在线迁移;也就是说,当需要在线迁移操作时,源主机是运行VM的主机。

For KVM, live storage migration is available from the 4.11 release and currently only supports migration from NFS/CEPH to SolidFire Managed Storage.

将数据卷迁移到新的存储池

当你想迁移磁盘的时候可能有两种情况:

  • 将磁盘移动到新的存储,但是还将其附加在原来正在运行的VM上。
  • 从当前VM上卸载磁盘,然后将其移动至新的存储,再将其附加至新的VM。
Migrating Storage For a Running VM on XenServer and VMware
  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 在左侧的导航栏,点击实例,再点击VM名,接着点击查看卷。
  3. 点击你想迁移的卷。
  4. 从VM卸载磁盘。请参阅 “卸载和移动卷” 但是跳过最后的”重新附加”步骤。你会在迁移过后在新的存储上做这一步。
  5. 点击迁移卷按钮 button to migrate a volume. ,然后从下拉列表里面选择目标位置。
  6. 这期间,卷的状态会变成正在迁移,然后又变回已就绪。
Migrating Storage For a Running VM on KVM

KVM live storage migration is currently supported only from CEPH and NFS to SolidFire Managed Storage, and is currently only supported via API call (i.e. we can use CloudMonkey)

  1. Identify the VM UUID to be migrated.
  2. Identify the volume(s) UUID(s) which are attached to VM and needs to be migrated.
  3. Identify the SolidFire pool UUID to which you want to migrate VM’s volumes.
  4. Identify suitable KVM host UUID to which the VM will be live migrated.

Using CloudMonkey issue the command as in example given below:

migrateVirtualMachineWithVolume virtualmachineid=ec5d3a84-2eb8-4a37-83f3-007b5013e3d9
hostid=bee55404-68e9-4710-bb10-ab9f4a3d357d
migrateto[0].pool=67654174-e2b6-4734-813d-2a4f0b027c0d migrateto[0].volume=ea390749-0194-4088-860c-71717c4efabe
migrateto[1].pool=67654174-e2b6-4734-813d-2a4f0b027c0d migrateto[1].volume=3b37927b-2cd2-46d1-aeca-18d4af46bda2

In the command above, new volumes are being created on SolidFire Managed Storage, internal volume mirroring process is started via libvirt (from current storage NFS/CEPH to SolidFire) and at the end of the volume mirroring process, the VM live migration is done to the host defined above.

In the command above we have “pairing” of volume and the storage pool to which to migrate specific volume to. In example above, we are migrating 2 volumes to the same SolidFire Storage Cluster, but optionally you could migrate 2 volumes to 2 different SolidFire Storage Clusters.

Order of volumes, as attached to VM, is NOT relevant - i.e. first volume in the migration command ( migrateto[0].volume ) can be any DATA volume, while second volume ( migrateto[1].volume ) can be i.e. ROOT volume

You can migrate only some or all of the volumes (attached to specific VM) to a new Storage Pool.

Note, that depending on your configuration, you will need to change Compute/Data Disk Offerings, in case you have different storage tags set on CEPH/NFS versus tags on SolidFire (and in case your Compute/Data disk offerings reference these tags).

迁移存储和附加到不同的VM
  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 从VM卸载磁盘。请参阅 “卸载和移动卷” 但是跳过最后的”重新附加”步骤。你会在迁移过后在新的存储上做这一步。
  3. 点击迁移卷按钮 button to migrate a volume. ,然后从下拉列表里面选择目标位置。
  4. 观察卷的状态会变成正在迁移,然后又变回已就绪。你可以点击左侧导航条中的存储找到卷。在选择查看的下拉列表中,确保卷显示在窗口的顶部。
  5. 在新的存储服务器中给运行在同一群集中的任何想要的VM附加卷。请参阅 “附加卷”
迁移VM的Root卷到新的存储池

(XenServer、VMware)你可以在停止VM的情况下,使用在线迁移将VM的root磁盘从一个存储池移动到另外一个。

(KVM)当前已root磁盘卷的时候,VM必须关机,这时用户不能访问VM。在迁移完成之后,VM就能重启了。

  1. 使用用户或管理员登录到CloudStack用户界面。

  2. 在左侧的导航栏里,点击实例,然后点击VM名。

  3. (仅限于KVM)停止VM。

  4. 点击迁移按钮 button to migrate a volume. ,然后从下拉列表中选择目标位置。

    注解

    如果VM的存储与VM必须一起被迁移,这点会在主机列表中标注。CloudStack会为你自动的进行存储迁移。

  5. 观察卷的状态会变成迁移中,然后变回运行中(或者停止,在KVM中)。这过程会持续一段时间。

  6. (仅限于KVM)重启VM。

重新规划卷

CloudStack提供了调整数据盘大小的功能;CloudStack借助磁盘方案控制卷大小。这样提供了CloudStack管理员可以灵活地选择他们想要给终端用户多少可用空间。使用相同存储标签的磁盘方案中的卷可以重新划分。比如,如果你只想提供 10,50和100GB的方案,重新划分允许的极限就不会超过这些。也就是说,如果你定义了10GB,50GB和100GB的磁盘方案,用户可以从10GB升级到50GB,或者从50GB升级到100GB。如果你创建了自定义大小的磁盘方案,那么你可以重新规划卷的大小为更大的值。

另外,使用 resizeVolume API,数据卷可以从一个静态磁盘方案移动到指定大小的自定义磁盘方案。此功能允对特定容量或磁盘方案进行收费,同时可以灵活地更改磁盘大小。

KVM, XenServer和VMware主机支持这个功能。但是VMware主机不支持卷的收缩。

在你试图重新规划卷大小之前,请考虑以下几点:

  • 与卷关联的VMs是停止状态。
  • 与卷关联的数据磁盘已经移除了。
  • 当卷缩小的时候,上面的磁盘会被截断,这么做的话可能会丢失数据。因此,在缩小数据磁盘之前,重新规划任何分区或文件系统以便数据迁移出这个磁盘。

要重新规划卷容量:

  1. 使用用户或管理员登录到CloudStack用户界面。

  2. 在左侧导航栏点击存储。

  3. 在选择视图中选择卷。

  4. 在卷列表中选择卷名称,然后点击调整卷大小按钮 button to display the resize volume option.

  5. 在弹出的调整卷大小窗口中,为存储选择想要的方案。

    option to resize a volume.

    1. 如果你选择自定义磁盘,请指定一个自定义大小。

    2. 点击是否确实要缩小卷大小来确认你要缩小的容量。

      此参数避免了不小心的失误造成数据的丢失。你必须知道你在做什么。

  6. 点击确定。

在VM重启时重设VM的root盘

你可以指定你想要放弃的root磁盘和创建一个新的,并且无论何时在VM重启时都使用新的。每次启动时都是一个全新的VM并且桌面不需要保存它的状态,出于安全环境考虑这非常有用。VM的IP地址在这个操作期间不会改变。

要启用在VM重启时重置root磁盘:

当创建一个新的服务方案时,设置isVolatile这个参数为True。从这个服务方案创建的VMs一旦重启,它们的磁盘就会重置。请参阅 “创建新的计算方案”

卷的删除和回收

删除卷不会删除曾经对卷做的快照

当一个VM被销毁时,附加到该VM的数据磁盘卷不会被删除。

使用回收程序后,卷就永久的被销毁了。全局配置变量expunge.delay和expunge.interval决定了何时物理删除卷。

  • expunge.delay:决定在卷被销毁之前卷存在多长时间,以秒计算。
  • expunge.interval:决定回收检查运行频率。

管理员可以根据站点数据保留策略来调整这些值。

使用卷快照

(支持以下hypervisors:XenServer, VMware vSphereKVM)

CloudStack支持磁盘卷的快照。快照为虚拟机某一时间点的抓取。内存和CPU状态不会被抓取。如果你使用Oracle VM hypervisor,那么你不能做快照,因为OVM不支持。

卷,包括root和数据磁盘(使用Oracle VM hypervisor除外,因为OVM不支持快照)都可以做快照。管理员可以限制每个用户的快照数量。用户可以通过快照创建新的卷,用来恢复特定的文件,还可以通过快照创建模板来启动恢复的磁盘。

用户可以手动或者设置自动循环快照策略创建快照。用户也可以从快照创建附磁盘卷,并像其他磁盘卷一样附加到虚机上。root和数据磁盘支持快照。但是,CloudStack目前不支持通过恢复的root盘启动VM。从快照恢复的root盘会被认为是数据盘;恢复的磁盘可以附加到VM上以访问上面的数据。

完整快照慧聪主存储拷贝到附加存储,并会一直存储在里面知道删除或被新的快照覆盖。

如何给卷做快照
  1. 是用用户或者管理员登录CloudStack。
  2. 在左侧导航栏点击存储。
  3. 在选择视图,确认选择的是卷。
  4. 点击你要做快照的卷的名称。
  5. 点击快照按钮。 Snapshot Button.
创建和保留自动快照

(支持以下hypervisors:XenServer, VMware vSphereKVM)

用户可以设置循环快照策略来自动的为磁盘定期地创建多个快照。快照可以按小时,天,周或者月为周期。每个磁盘卷都可以设置快照策略。比如,用户可以设置每天的02:30做快照。

依靠每个快照计划,用户还可以指定计划快照的保留数量。超出保留期限的老快照会被自动的删除。用户定义的限制必须等于或小于CloudStack管理员设置的全局限制。请参阅 “全局配置的限制”.。限制只能应用给作为自动循环快照策略的一部分的快照。额外的手动快照能被创建和保留。

增量快照和备份

创建的快照保存在磁盘所在的主存储。在创建快照之后,它会立即被备份到辅助存储并在主存储上删除以节省主存储的空间。

CloudStack给一些 hypervisors做增量备份。当使用了增量备份,那么每N备份就是一个完全备份。

  VMware vSphere Citrix XenServer KVM
支持增量备份
卷状态

当快照操作是由一个循环快照策略所引发的时候,如果从其上次创建快照后,卷一直处于非活跃状态,快照被跳过。如果卷被分离或附加的虚拟机没有运行,那么它就被认为是非活跃的。CloudStack会确保从卷上一次变得不活跃后,至少创建了一个快照。

当手动创建了快照,不管改卷是不是活跃的,快照会一直被创建。

快照恢复

有两种方式恢复快照。用户能够从快照中创建一个卷。卷可以随后被挂载到虚拟机上并且文件根据需要被复原。另一种方式是,模板可以从一个root 盘的快照创建。用户能够从这个模板启动虚拟机从而实际上复原root盘。

快照工作调节

当虚拟机需要快照时,VM所在的主机上就会运行快照工作,或者在VM最后运行的主机上。如果在一台主机上的VMs需要很多快照,那么这会导致太多的快照工作进而占用过多的主机资源。

针对这种情况,云端的root管理员可以利用全局配置设置中的concurrent.snapshots.threshold.perhost调节有多少快照工作同时在主机上运行。借助这个设置,当太多快照请求发生时,管理员更好的确认快照工作不会超时并且hypervisor主机不会有性能问题。

给concurrent.snapshots.threshold.perhost设置一个你结合目前主机资源和在主机上运行的VMs数量的最佳值,这个值代表了在同一时刻有多少快照工作在hypervisor主机上执行。如果一个主机有比较多的快照请求,额外的请求就会被放在等待队列里。在当前执行 的快照工作数量下降至限制值之内,新的快照工作才会开始。

管理员也可以通过job.expire.minutes给快照请求等待队列的长度设置一个最大值。如果达到了这个限制,那么快照请求会失败并且返回一个错误消息。

VMware卷快照性能

当你为VMware中的数据卷或root卷做快照时,CloudStack使用一种高效率的存储技术来提高性能。

快照不会立即从vCenter导出OVA格式文件到挂载的NFS共享中。这个操作会消耗时间和资源。相反的,由vCenter提供的原始文件格式(比如VMDK)被保留。OVA文件只有在需要的时候被创建。CloudStack使用与原始快照数据存储在一起的属性文件(*.ova.meta)中的信息来生成OVA。

注解

对于旧版本升级的客户:这个过程只适用于在升级到CloudStack 4.2之后新创建的快照。已经做过快照并且使用OVA格式存储的将继续使用已有的格式,并且也能正常工作。

Disk caching (KVM)

This is for advanced user only, since may cause issues with improper DB changes.

Disk cache mode is the property of Compute Offering (ROOT disk) and Disk Offering (DATA disk). Currently, disk cache mode can only be set by editing “disk_offering” table inside “cloud” DB and can not be done via API/GUI (although there is “Write-cache Type” filed in the GUI on the “Add Disk Offering” wizard). Cache modes available are: write-back and write-through

Before proceeding with changing cache mode on disks (Offerings), please make sure that you understand the consequences and limitations it might bring.

  1. If the guest storage is hosted on a clustered file system (or is read-only or is marked shareable), then the cache mode is ignored when determining if VM live migration can be allowed.
  2. If guest storage is hosted on shared storage (NFS/CEPH) libvirt will not allow VM live migration unless the cache mode is set to “none”.
  3. This means that in case of NFS and CEPH, VM live migrations will not be possible, and this will also make it impossible to put host into maintenance mode (VMs being live migrated away from this host - will not work)

In order to set disk write-back or write-through cache mode, we need to edit it’s parent Compute Offering (for ROOT disk) or Disk Offering (for DATA disks). Please note that this means that all volumes/disks which are created from specific offering will inherit cache mode.

mysql> select id from disk_offering where name="8vCPU-64GB-HDD-STD-NFS";
+-----+
| id  |
+-----+
| 111 |
+-----+
1 row in set (0.00 sec)
mysql> select id from disk_offering where name="100GB-HDD-STD-NFS";
+-----+
| id  |
+-----+
| 114 |
+-----+
1 row in set (0.00 sec)
mysql> UPDATE disk_offering SET cache_mode='writeback' WHERE id in ('111','114');
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

In example above, we have set the write-back cache mode for a single Compute Offering and single Disk Offering. In order for KVM to actually pick-up the cache mode we have set, we need to stop VM and start VM. VM Reboot (“Reboot Instance” button) via GUI will not be enough.

After VM is started we can confirm that the both the ROOT and DATA disk of a VM have cache mode set to write-back:

root@ix1-c7-4:~# virsh dumpxml i-2-10-VM | grep cache -A2
   <driver name='qemu' type='qcow2' cache='writeback'/>
   <source file='/mnt/63a3ae7b-9ea9-3884-a772-1ea939ef6ec3/1b655159-ae10-41cf-8987-f1cfb47fe453'/>
   <target dev='vda' bus='virtio'/>
   ...
   <driver name='qemu' type='qcow2' cache='writeback'/>
   <source file='/mnt/63a3ae7b-9ea9-3884-a772-1ea939ef6ec3/09bdadcb-ec6e-4dda-b37b-17b1a749257f'/>
   <target dev='vdb' bus='virtio'/>

使用系统虚拟机

警告

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上。

使用服务

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

使用服务

使用服务器是CloudStack一个可选项,分别安装产品的一部分,提供了聚合使用记录您可以使用它来创建计费集成产品。使用服务器通过使用数据从事件日志和创建汇总使用记录,您可以访问使用listUsageRecords API调用。

使用记录显示数量的资源,比如虚拟机运行时间或模板存储空间,以被客人消耗为例。

使用服务器运行至少每天一次。它可以被配置为每天多次运行。

配置使用服务器

配置使用服务器

  1. 确定使用服务器已经被安装。它要求安装额外的CloudStack软件步骤。参见高级安装手册中的使用服务器(可选)。

  2. 作为管理员登录到CloudStack用户界面。

  3. 单击全局设置

  4. 在搜索栏输入 usage。找到no需要改变的配置参数。下表是这些参数的详细描述。

  5. 在操作栏点击编辑图标。

  6. 输入数值点击保存图标。

  7. 重新启动管理服务器(通常在改变了全局配置之后都要进行这步)并重启使用服务器。

    # service cloudstack-management restart
    # service cloudstack-usage restart
    

下表列出了全局配置中控制使用服务器的配置项。

参数名描述

enable.usage.server是否开启使用服务器。

usage.aggregation.timezone

记录使用信息所用的时区。如果使用记录和日程工作执行在不同的时区时进行设置。例如,进行下列设置,使用任务运行在PST 00:15和24小时内产生的从00:00:00GMT到23:59:59GMT的使用记录:

usage.stats.job.exec.time = 00:15
usage.execution.timezone = PST
usage.aggregation.timezone = GMT

时间域的有效值已经被具体化到 Appendix A, *Time Zones* 中

默认:GMT

usage.execution.timezone

域时间项usage.stats.job.exec.time。时间域的有效值被具体化在`Appendix A, Time Zones <http://docs.cloudstack.apache.org/en/latest/dev.html?highlight=time%20zones#time-zones>`_

默认时区是管理服务器的时区。

usage.sanity.check.interval

完整性检查时间间隔。设置此值来定期在生成用户账单之前检查出错误的数据。比如,他能检查虚拟机被销毁之后的使用记录和模板,卷等的类似记录。还会检查超过聚合时间的使用时间。如果发生了错误就会发送ALERT_TYPE_USAGE_SANITY_RESULT = 21 警告。

usage.stats.job.aggregation.range

使用服务器执行任务时间间隔(分钟为单位)。比如,如果你将此值设为1440,使用服务器将每天执行一次。如果你将此值设为600,则会10小时执行一次。一般情况下使用服务器执行任务时会继续在上次的使用统计基础上处理所有事件。

当值为1440(一天一次)时有点特殊。该情况下,用量服务器并不需要处理上次运行之后的所有事件。&PRODUCT;假定您要一天一次处理昨天的,完成每日记录。例如,如果今天是10月7号,会假定您要处理6号的记录,从0点到24点。CloudStack假定的0点到24点采用的时区为 usage.execution.timezone的值。

默认:1440

usage.stats.job.exec.time

使用服务器处理任务的启动时间。采用24小时格式 (HH:MM),时区为服务器的时区,应该为GMT。比如要在GMT时区10:30 启动用量任务,请输入“10:30”

如果同时设置了usage.stats.job.aggregation.range参数,并且该参数值不是1440,这个值将被添加到usage.stats.job.exec.time到时再次运行使用服务器任务。重复此过程,直到24小时已经过去,第二天到达 usage.stats.job.exec.time处理任务开始。

默认:00:15。

比如,假设你服务器时区是GMT,你的用户主要在美国东海岸,而你有打算在当地时间(EST)每天凌晨两点执行使用记录统计。选择这些选项:

  • enable.usage.server = true
  • usage.execution.timezone = America/New_York
  • usage.stats.job.exec.time = 07:00。这将会在东部时间2:00执行使用任务。注意考虑进出白昼保存时间在将时间迁移大U.S.东海岸。
  • usage.stats.job.aggregation.range = 1440

在这种配置下,使用任务 会在东部时间每天2 AM执行,同时会如定义的一样以东部时间(美国纽约时间)统计前一天的“午夜到午夜使用记录。”

注解

由于在usage.stats.job.aggregation.range中使用特殊值1440,用量服务器将忽略午夜到凌晨2:00之间的数据。这些数据将会包含在第二天的统计中。

设置使用限制

CloudStack提供多个管理员控制点以便控制用户资源使用。其中一些限制是全局配置参数。其他一些应用在root域,并且会覆盖每个账号的基本配置

全局配置限制

在一个域中,客户虚拟网络默认有24位CIDR.它限制了客户网络运行上线是254个实例。它可以根据需求调节,但必须在域中实例创建之前。例如,10.1.1.0/22 将提供 ~1000 地址。

下表列出了设置全局配置的限制:

参数名称 定义
max.account.public.ips 账户可拥有的公用IP地址个数
max.account.snapshots 快照的数量存在于一个记述中
max.account.templates 模板的数量可能存于一个记述中
max.account.user.vms 虚拟机实例的数量也可能存在于一个记述中
max.account.volumes 磁盘卷的数量也可能存于一个记述中
max.template.iso.size 下载的模板或ISO最大的单位是GB
max.volume.size.gb 卷的最大单位是GB
network.throttling.rate 默认的传输速率是允许用户按照Mb每秒(支持XenServer)
snapshot.max.hourly 最大的可再现时时性快照可以保存在卷中。如果数量的限制达到,早期的来自开始阶段的快照就会被删除以使新的快照可以被存储。这种限制方法不支持手工快照。若设为0,可再现性时时快照将没有保存。
snapshot.max.daily 最大的可再现时时性快照可以保存在卷中。如果数量的限制达到,早期的来自开始阶段的快照就会被删除以使新的快照可以被存储。这种限制方法不支持手工快照。若设为0,可再现性时时快照将没有保存。
snapshot.max.weekly 最大的可再现时时性快照可以保存在卷中。如果数量的限制达到,早期的来自开始阶段的快照就会被删除以使新的快照可以被存储。这种限制方法不支持手工快照。若设为0,可再现性时时快照将没有保存。
snapshot.max.monthly 最大的可再现时时性快照可以保存在卷中。如果数量的限制达到,早期的来自开始阶段的快照就会被删除以使新的快照可以被存储。这种限制方法不支持手工快照。若设为0,可再现性时时快照将没有保存。

使用CloudStack中的用户界面中的全局配置界面可以修改全局配置参数。

限制资源使用

CloudStack允许根据资源类型控制资源使用,例如CPU,RAM,主存储,辅助存储。一个新的资源类型集已经被添加到了已经存在的支持新通俗模型的资源池-基于需要使用,例如大型VM或者小型VM.新的资源类型被广泛分类在如CPU,RAM,主存储和辅助存储中。超级管理员能够利用下列资源的使用限制,例如域,项目或者账户。

  • CPUs
  • Memory (RAM)
  • 主存储(卷)
  • 辅助存储(快照,模板,ISOs)

为了控制该特征的行为,以下配置参数已经添加:

参数名称 描述
max.account.cpus 最大的可以被账户使用的CPU核心个数。默认是40.
max.account.ram (MB) 最大的可以被账户使用的RMA容量。默认值是40960。
max.account.primary.storage (GB) 最大的可以被账户使用的主存储个数。默认是200。
max.account.secondary.storage (GB) 最大的可被账户使用的辅助存储空间。默认是400。
max.project.cpus 最大的可以被账户使用的CPU核心个数。默认是40.
max.project.ram (MB) 最大的可以被账户使用的RMA容量。默认值是40960。
max.project.primary.storage (GB) 最大的可以被账户使用的主存储个数。默认是200。
max.project.secondary.storage (GB) 最大的可被账户使用的辅助存储空间。默认是400。
用户许可

超级管理员,域管理员和用户能够列出资源。确保合适的属性日至保存在 vmops.log``api.log``文件中。

  • 超级管理员将有列出和升级资源限制的特权。
  • 域管理员仅允许列出和改变在其拥有的域或者子域的子域和账户的资源限制。
  • 终端用户拥有改变列出资源限制的特权。使用listResourceLimits API.。
限制使用注意事项:
  • 主存储或者辅助存储空间参考启动的容器大小而不是物理容量,实际使用的物理空间要小于提供的空间。

  • 如果管理员为账户减少资源限制,并设置少于目前设定的资源数,已经存在的VM/模板/卷也不会破坏。限制仅在账户中的用户试图使用这些资源执行新的操作时表现出来。例如,在一个VM中倘若存在下列行为:

    • 迁移虚拟机:在账户中的用户试图迁移一个正在运行的VM到任何不面临限制问题的主机。
    • 恢复虚拟机:破坏的VM不能被修复。
  • 对于更多资源类型,如果一个域存在限制X,这个域的子域或者账户也能也有它们自身的限制。尽管如此,一个子域允许分配的资源总和或者域中账户在任何时间点都不能执行X限制。

    例如,当一个域有CPU的限制数量为40,其子域D1和账户A1可以有每个30的限制,但是任何时候分配给D1和A1的资源都不能超过限制40.

  • 如果一些操作需要通过两个或更多的资源限制核查,最少的两个限制将被执行,例如:如果一个账户有10个限制VM和20个限制CPU,用户在账户中申请每4个CPU5个VM。用户可以部署5个或更多的VM,因为VM的限制个数是10。尽管如此,用户不能部署任何实例,因为CPU的限制已经用尽。

在一个域中限制资源使用

CloudStack允许在一个域基础上配置限制。使用域限制的地点是所有的用户都有其账户的的限制。它们有额外的限制,例如群组,不能执行设置在它们域上的资源限制。域限制聚集了任何域中使用的账户和任何账户的所有域的子域。限制设定在根域层次应用于所有域的账户和子域使用的资源综合都低于根域的限制。

设定一个域限制:

  1. 登录到CloudStack的界面

  2. 在导航栏左侧树中,单击域。

  3. 选择你想修改的域。当前域限制将被显示出来。

    值为-1表明此处没有任何限制。

  4. 单击编辑按钮 edits the settings.

  5. 编辑下列每一条要求:

    • 参数名称

    • 描述

    • 实例限制:

      可以被用在域中的实例的个数

    • 公共IP限制

      可以被用在域中的公共IP地址的个数。

    • 卷限制

      可以被创建在雨中的磁盘卷的个数

    • 快照限制

      可以被创建在域中的快照个数

    • 模板限制

      可以在域中注册的模板数量

    • VPC限制

      可以被创建在域中的VPC的个数

    • CPU限制

      可以在域中使用的CPU核心数。

    • 内存限制(MB)

      可以在域中使用的RAM数量。

    • 主存储限制(GB)

      在域中可以使用的主存储空间大小。

    • 辅助存储限制(GB)

      在域中可使用的辅助存储空间大小。

  6. 点击应用

默认账户资源限制

你可以限制账户使用的资源。默认限制通过全局配置参数设置,它们影响在云中的所有账户。其相关参数开始于max.account,例如:max.account.snapshots。

对于覆盖一个默认限制的特殊账户,设置per-account资源限制。

  1. 登录到CloudStack的界面

  2. 在导航树左侧,单击账户。

  3. 选择你想修改的账户。当前限制将显示出来。

    值为-1表明此处没有任何限制。

  4. 单击编辑按钮。edits the settings.

  5. 编辑下列每一条要求:

    • 参数名称

    • 描述

    • 实例限制:

      在一个账户中可以适用的实例个数。

      默认是20个。

    • 公共IP限制

      在账户中可以使用的公共IP地址个数。

      默认是20个。

    • 卷限制

      在账户中可以创建的磁盘卷个数。

      默认是20个。

    • 快照限制

      在账户中可以创建的快照数量。

      默认是20个。

    • 模板限制

      在账户中可以注册的模板数量。

      默认是20个。

    • VPC限制

      在账户中可以创建的VPC数量。

      默认是20个。

    • CPU限制

      在账户中可以使用的CPU内核的个数。

      默认是40。

    • 内存限制(MB)

      在账户中可以使用的RAM数量。

      默认值是40960。

    • 主存储限制(GB)

      在账户中可以使用的主存储空间。

      默认是200。

    • 辅助存储限制(GB)

      在账户中可以使用的辅助存储空间。

      默认是400。

  6. 点击应用

使用记录格式

虚拟机使用记录格式

对运行或者已分配虚拟机使用,下列字段存在于使用记录中:

  • account–账户的名字
  • accountid–账户的ID
  • domainid –在此账户存在的域的 ID
  • zoneid – 使用资源域的ID号
  • description – 字符描述,用于追查使用量的记录
  • usage – 代表使用量的文字,包括使用量的单位(如 ‘Hrs’代表虚机运行时间)
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • virtualMachineId – 虚拟服务器的ID号
  • name - 虚机名称
  • offeringid - 计算方案的ID
  • templateid – 模版或父模版的ID。当模版是从磁盘卷创建时,此处会使用父模版的ID。
  • usageid – 虚拟机
  • type - 虚拟化平台
  • startdate, enddate –一定时间内的使用量总和; 参见 使用量记录中的日期
网络用量记录格式

网络用量(发送/接收字节数)记录中存在以下字段:

  • account–账户的名字
  • accountid–账户的ID
  • domainid –在此账户存在的域的 ID
  • zoneid – 使用资源域的ID号
  • description – 字符描述,用于追查使用量的记录
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • usageid - 设备ID(虚拟路由器ID或外部设备ID)
  • type - 设备类型(虚拟路由器、外部负载均衡等)
  • startdate, enddate –一定时间内的使用量总和; 参见 使用量记录中的日期
IP地址使用记录格式

对于IP地址使用下列字段存在于使用记录中。

  • account - 账户的名称
  • accountid-账户的ID
  • domainid-本账户具有的鱼的ID
  • zoneid-已经使用的域ID
  • description – 字符描述追查用量记录
  • usage – 代表使用量的字符串,包括使用量的单位
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • usageid-IP地址ID
  • startdate, enddate – 一定时间范围内的用量总和; 参见 用量记录中的日期
  • issourcenat - IP地址的NAT资源是否有效
  • iselastic - 如果IP地址是弹性的为True
磁盘用量记录格式

对于磁盘,用量记录存在下列字段。

  • account–账户的名字
  • accountid–账户的ID
  • domainid –在此账户存在的域的 ID
  • zoneid – 使用资源域的ID号
  • description – 字符描述,用于追查使用量的记录
  • usage – 代表使用量的文字,包括使用量的单位 (如 ‘Hrs’是小时)
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • usageid - 磁盘ID
  • offeringid - 磁盘方案的ID
  • type - 虚拟化平台
  • templateid - 根模版ID
  • size - 分配的存储大小
  • startdate, enddate –一定时间内的使用量总和; 参见 使用量记录中的日期
模版、ISO和快照用量记录格式
  • account–账户的名字
  • accountid–账户的ID
  • domainid –在此账户存在的域的 ID
  • zoneid – 使用资源域的ID号
  • description – 字符描述,用于追查使用量的记录
  • usage – 代表使用量的文字,包括使用量的单位 (如 ‘Hrs’是小时)
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • usageid - 模版、ISO或快照的ID
  • offeringid - 磁盘方案的ID
  • templateid – 仅模版(用量类型为7)时包括。源模版ID。
  • size - 模版、ISO或快照的大小
  • startdate, enddate –一定时间内的使用量总和; 参见 使用量记录中的日期
负载均衡策略或端口导向用量记录格式
  • account - 账户的名称
  • accountid-账户的ID
  • domainid-本账户具有的鱼的ID
  • zoneid-已经使用的域ID
  • description – 字符描述追查用量记录
  • usage – 代表使用量的字符串,包括使用量的单位 (如 ‘Hrs’是小时)
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • usageid -负载均衡或端口导向规则ID
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • startdate, enddate – 一定时间范围内的用量总和; 参见 用量记录中的日期
网络服务方案用量记录格式
  • account–账户的名字
  • accountid–账户的ID
  • domainid –在此账户存在的域的 ID
  • zoneid – 使用资源域的ID号
  • description – 字符描述,用于追查使用量的记录
  • usage – 代表使用量的文字,包括使用量的单位 (如 ‘Hrs’是小时)
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • usageid – 网络服务方案的ID
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • offeringid – 网络服务方案的ID
  • virtualMachineId – 虚拟服务器的ID号
  • virtualMachineId – 虚拟服务器的ID号
  • startdate, enddate –一定时间内的使用量总和; 参见 使用量记录中的日期
VPN用户用量记录格式
  • account–账户的名字
  • accountid–账户的ID
  • domainid –在此账户存在的域的 ID
  • zoneid – 使用资源域的ID号
  • description – 字符描述,用于追查使用量的记录
  • usage – 代表使用量的文字,包括使用量的单位 (如 ‘Hrs’是小时)
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • rawusage – 代表以小时为单位实时使用量的数字
  • usageid - VPN用户ID
  • usagetype – 代表使用量类型的数字 (参见使用量类型)
  • startdate, enddate –一定时间内的使用量总和; 参见 使用量记录中的日期

用量类型

下表显示了所有的用量类型。

类型ID 类型名称 描述
1 RUNNING_VM 追踪VM每个用量记录时期所有运行时间总和。如果VM在用量时期升级,你将会获得新升级后的VM单独的用量记录。
2 ALLOCATED_VM 追踪VM从创建到销毁的所有时间总和。这个用量类型也是在终止例如 Windows-based模板这样的具体模板用量上是有用的。
3 IP_ADDRESS 追踪拥有公共IP地址的账户
4 NETWORK_BYTES_SENT 追踪一个账户发送所有VM的比特的总时间。Cloud.com不仅追踪当前网络传输时的每个VM。
5 NETWORK_BYTES_RECEIVED 追踪一个账户接受所有VM的比特的总时间。Cloud.com不仅追踪当前网络传输时的每个VM。
6 VOLUME 追踪磁盘从创建到销毁的总时间。
7 TEMPLATE 追踪模板(包含从快照中创建的或是已经上传到云的)从创建到销毁的总时间。模板的大小也被返回。
8 ISO 追踪ISO在云中从上传到移除的总时间。ISO的大小也被返回。
9 SNAPSHOT 追踪快照从创建到销毁的总时间。
11 LOAD_BALANCER_POLICY 追踪负载均衡策略从创建到移除的总时间。Cloud.com不追踪VM是否已经分配到了的策略。
12 PORT_FORWARDING_RULE 追踪端口导向规则从创建到移除的时间。
13 NETWORK_OFFERING 从网络方案分配到VM到移除的时间。
14 VPN_USERS 计时从VPN用户创建时开始,移除时结束。

listUsageRecords指令的反应示例:

所有CloudStack API请求都是以HTTP GET/POST形式提交, 同时附上相关的命令和参数. 无论是HTTP或HTTPS, 一个请求都有以下内容组成:

<listusagerecordsresponse>
   <count>1816</count>
   <usagerecord>
      <account>user5</account>
      <accountid>10004</accountid>
      <domainid>1</domainid>
      <zoneid>1</zoneid>
      <description>i-3-4-WC running time (ServiceOffering: 1) (Template: 3)</description>
      <usage>2.95288 Hrs</usage>
      <usagetype>1</usagetype>
      <rawusage>2.95288</rawusage>
      <virtualmachineid>4</virtualmachineid>
      <name>i-3-4-WC</name>
      <offeringid>1</offeringid>
      <templateid>3</templateid>
      <usageid>245554</usageid>
      <type>XenServer</type>
      <startdate>2009-09-15T00:00:00-0700</startdate>
      <enddate>2009-09-18T16:14:26-0700</enddate>
   </usagerecord>

   … (1,815 more usage records)
</listusagerecordsresponse>

在使用记录中的数据

用量记录包含了开始日期和结束日期。这些日期定义了原始用量数字的统计时间阶段。如果每天统计被使用,开始日期是问题出现的的当天午夜,结束日期是问题(关于异常,参见本内容)出现的当天23:59:59。虚拟机可以被部署到当天正午,在次日6pm,然后在11pm重启。在用量统计的当天,将有7小时运行VM用量(用量类型1)和12个小时分配VM用量(用量类型2)。如果同一个VM完全运行到下一天,将会有24小时的运行VM用量(类型1)和已分配用量(类型2)。

注意:开始日期不是虚拟机启动时间,结束日期不是虚拟机停止时间。开始日期和结束日期在用量统计的给定范围内。

对于网络用量,开始日期和结束日期定义为一定数量的比特传输统计的时间范围。如果用户一天内下载10MB并上传1M,将会有两个记录,一个显示10MB接受和一个显示1MB发送。

当每日统计使用时,只有一种情况开始日期和结束日期不响应午夜到11:59:59。它仅发生在网络用量记录。当用量记录服务器有超过一天的未处理数据时,旧数据将被包含在统计区间内。用量记录中的开始日期将显示最早的事件的日期和时间。对于其它类型的用量,例如IP地址和VM,旧的未处理数据是不包含在每日统计中的。

网络和流量管理

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

网络和流量管理

在CLOUDSTACK中,客户虚拟机之间可以在共享构架下相互通讯,并且可以在一个私有LAN中实现安全和用户互通。CLOUDSTACK的虚拟路由器是实现客户网络功能的主要组件。

来宾流量

在同一个区域内,客户虚拟机之间可以互访,但在不同的区域内,客户虚拟机之间不可以通过(内网)IP地址互访,而只能通过公网IP路由才可以互连。

下图是一个典型的来宾流量设置:

Depicts a guest traffic setup

通常,管理服务会自动为每一个网络建立一个虚拟路由。一个虚拟路由实际上就是运行在物理主机上的一台特殊的虚拟机。每一台在一个独立网络中的虚拟路由有3个网口。如果使用多个公共 VLAN,相应的这台路由器就有多个公共的网口。 它的 eth0 网口是提供客户机通信的网关服务的,它的IP地址是 10.1.1.1。eth1 网口是为系统来配置这个虚拟路由而提供的。eth2 网口被赋予一个公共 IP 地址用来实现外部的公共通信。 同样如果使用了多个公共 VLAN 接入,这台路由器将会拥有多个公共的网口。

虚拟路由器提供DHCP功能,能自动的为每一个客户虚拟机在预先定义好的IP范围之内分配IP地址。用户也可以为虚拟机手工配置不同的IP地址。

Source NAT功能是在虚拟路由里自动配置好的,它可以转发所有来宾虚拟机的外出流量。

一个提供点里的网络

下图演示了一个单提供点的网络配置。主机均连接到提供点层级的交换机。每一个主机至少有一个物理网卡连接到交换机。当然,这种环境也支持网卡绑定。提供点层级的交换机由两个1000M冗余组成,它们通过10G线路上联。

diagram showing logical view of network in a pod.

服务器以如下形式连接:

  • 存储设备只与管理网络连接。
  • 主机同时与管理网络和公共网络连接。
  • 主机也与一个或多个来宾网络连接。

我们推荐用多个物理网卡以改进性能,也推荐用冗余的光纤交换机以改进网络可靠性。

一个区域里的网络

下图说明了一个单一区域内的网络设置。

Depicts network setup in a single zone.

用于管理通信的防火墙工作在NAT模式。通常是分配给网络中的IP地址192.168.0.0/16 B类私有地址空间。每个机柜(POD)分配的IP地址是192.168.*.0/24 C类私有地址空间。

每个区域都有自己的一套公网IP地址。来自不同区域的公网IP地址不重叠。

基本区域物理网络配置

在一个基本的网络中,物理网络的配置非常直接明了。你只需要配置一个客户网络(虚拟)以承载由客户虚拟机产生的流量。当你首次增加一个区域(Zone)到 CloudStack 中,你通过添加域(Add Zone)页面来设置客户网络(虚拟)。

高级区域物理网络的配置

在使用复杂网络的区域中,你需要告知管理服务器,为了实现隔离不同类型的通讯,物理网络是如何设置的。

在高级域中设置客户通信

下面的步骤假定你已经登录进入 CloudStack 的界面。设置基本的客户网络:

  1. 在左边的导航栏,选择基础架构。在区域界面点击查看全部,然后点击你要添加网络的区域。

  2. 点击网络选项卡。

  3. 点击 添加来宾网络。

    添加来宾网络窗口显示:

    Add Guest network setup in a single zone.

  4. 填写以下内容:

    • Name: The name of the network. This will be user-visible
    • Display Text:网络的描述。用户可见
    • Zone: 这里的区域是指你要配置客户网络的区域。
    • 网络提议: 如果管理员已经配置了多个网络方案,可以选择你需要的那个
    • Guest gateway:虚拟机需要使用的网关
    • Guest Netmask:客户虚拟机会使用的子网掩码
  5. 点击确定。

在高级区域中配置公共通信

在一个使用高级网络配置的区域中,你需要配置至少一个用于Internet通信的IP地址范围。

配置共享的客户网络
  1. 作为管理员登录到CloudStack用户界面。

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

  3. 在区域页面,点击查看全部。

  4. 选择要添加客户网络的那个区域。

  5. 点击物理网络标签卡。

  6. 选择您要操作的物理网络。

  7. 在客户节点界面,点击配置。

  8. 点击网络选项卡。

  9. 点击 添加来宾网络。

    现实添加客户网络窗口。

  10. 指定以下信息:

    • Name: 要建立的网络的名字。这个是用户可见的

    • 描述: 提供一个简短的方案描述。

    • VLAN ID: VLAN 的ID。

    • Isolated VLAN ID: 二级独立 VLAN 的 ID。

    • Scope: 可用的范围,包括域,帐户,项目和其他所以。

      • Domain: 域,指定客户网络范围的域。指定域中的网络相对其他域是隔离不可见的。如果指定子域访问,域中的客户网络将在所有的子域中可用。
      • Account: 这里的帐户是为建立客户网络所指定的。必须指定域中所属的帐户。
      • Project: 项目是客户网络所建立的项目。必须为这个项目指定域。
      • All: 选择它,会让客户网络对这个区域(Zone)中的所有域,帐户和项目都可用。
    • 网络提议: 如果管理员已经配置了多个网络方案,可以选择你需要的那个。

    • Guest gateway: 虚拟机需要使用的网关。

    • Netmask: 虚拟机子网要使用的网络掩码。

    • IP Range: 定义公网IP范围,这些IP用来访问公网或是从公网访问客户虚拟机。

      如果使用了网卡,这些IP应该在相同的IPv6的CIDR中。

    • IPv6 CIDR: 用于定义网络子网的网络前缀。

    • 网络域: 如果你想为客户虚机网络定义一个域名,在此处输入后缀名。

  11. 点击确定。

使用多个来宾网络

在使用高级网络的资源域里, 额外的来宾网络可以在初始安装后任何时间添加. 你还可以通过指定DNS后缀为每个网络自定义关联的域名.

一个虚机的网络在其创建时定义. 当一个虚机创建以后, 就不能对其网络添加删除, 即便用户可以进入客户虚机删除指定网卡的IP地址.

每一个虚机只有一个默认的网络. 在这个默认网络里, 虚拟路由器的DHCP响应将设置客户的默认网关. 除了单一,必须的默认网络, 多个非默认的网络也可以添加到客户虚机里. 管理员可以控制哪个网络作为默认的网络.

附加的网络可以给所有账户使用或者分配给特定的账户. 对所有账户都可用的网络在整个资源域有效. 任何可以访问这个资源域的用户都可以使用这个网络创建虚机. 这些资源域一级的网络基本不提供客户之间的隔离. 分配给特定帐户的网络提供强制隔离的功能.

增添一个虚拟机的网络
  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 地阿基添加来宾网络。提供以下信息:
    • Name:网络的名称。对于最终用户可见。
    • Display Text:网络的描述信息。对于最终用户可见。
    • Zone:此网络所应用到zone的名称。每个zone都是一个广播域,因此每个zone中的来宾网络都有不同的IP范围。管理员必须为每个zone配置IP范围。
    • Network offering: 如果管理员已经配置了多个网络,选择一个你想使用的。
    • Guest Gateway: 来宾网络的网关。
    • Guest Netmask: 来宾网络的子网掩码。
  4. 点击创建。
在VMs中重新配置网络

CloudStack能让你在不同网络间移动VMs和重新配置VM的网络。你可以从一个网络中移除一个VM,再将其移动到另一个网络。你同样可以修改虚拟机的默认我拿过来,使用这个功能,混合和传统的服务器负载可以被轻松缓解。

XenServer、VMware和KVM hypervisors支持这个特性。

先决条件

确保虚拟机上安装了vm-tools以便通过VMware hypervisor添加或移除网络。

添加网络
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航菜单中,点击实例。

  3. 选择你要处理的VM。

  4. 点击网络适配器标签。

  5. 将网络添加到 VM

    显示添加网络对话框。

  6. 在下拉列表里选择你要添加给VM的网络。

    这样就为这个网络添加了一个新网卡。你可以在网卡页面查看下列信息:

    • ID
    • 网络名称
    • 类型
    • IP地址
    • 网关
    • 子网掩码
    • 默认的
    • CIDR(IPv6)
移除网络
  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航菜单中,点击实例。
  3. 选择你要处理的VM。
  4. 点击网络适配器标签。
  5. 找到你要移除的网卡上。
  6. 点击移除网卡按钮。button to remove a NIC.
  7. 点击Yes确认。
选择默认网络
  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航菜单中,点击实例。
  3. 选择你要处理的VM。
  4. 点击网络适配器标签。
  5. 找到你想要的网卡。
  6. 点击设置为默认网卡按钮。 button to set a NIC as default one..
  7. 点击Yes确认。
在来宾网络上更改网络方案

用户或者管理员可以更改与之相关的来宾网络的网络方案。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 如果你将使用CloudStack虚拟路由的一个网络方案改成使用公共网络设备作为网络服务商,那么你必须先关掉该网络中的所有虚机。

  3. 在左侧的导航栏,选择网络。

  4. 点击你要修改的网络名称。

  5. 在 详细 页签,点击 编辑按钮。button to edit.

  6. 在网络方案中,选择新的网络方案,然后点击应用。

    这时会有一个提示问你是否保持已存在的CIDR不变。这是让你了解如果你改变网络了方案,那么CIDR会受到影响。

    如果你将虚拟路由升级到外网设备,在看到变更CIDR以继续时,请选择Yes。

  7. 等待更新完成。在网络变更完成之前不要试图重启虚拟机。

  8. 如果你停止了任何VMs,请重启他们。

隔离的来宾网络中的预留IP

在隔离的来宾网络中,来宾IP地址空间中的一部分可以被保留下来以供非CloudStack VMs或者物理服务器使用。要真么做,你应该在来宾网络应用状态时依靠指定CIDR来配置一个预留IP地址范围。如果你的客户希望在同一个网络中有非CloudStack控制的VMs或者物理服务器,它们可以共享一部分主要为来宾网络提供的IP地址空间。

在高级域中,定义一个网络时要给其赋予一个IP地址范围或CIDR。CloudStack虚拟路由器起着DHCP的作用,并通过CIDR来给客户虚拟机分配IP地址。如果为了预留CIDR不用于cloudstack,应当进行说明,即部分IP地址范围或CIDR仅能被DHCP服务分配给在cloudstack中创建的虚拟机。剩下的IP地址被称作预留IP地址范围。当预留的IP被配置时,管理员可以增加额外的虚拟机或并不属于cloudstack的物理服务器到同一个网络,可以将预留的IP地址指定给他们。cloudstack的客户虚拟机不能够从预留的IP地址中获得地址。

IP预留事项

在给非cloudstack内的机器预留IP地址时,要考虑以下几个方面:

  • IP预留仅在隔离网络内支持

  • 仅当网络在实施状态时,IP预留才能被应用。

  • 默认不做IP预留。

  • 指定客户的CIDR必须是网络CIDR的子网。

  • 指定一个有效的客户虚拟机CIDR。只有不活动的IP在客户虚拟机CIDR存在时,IP预留才能被应用。

    如果任一虚拟机被分配了客户虚拟机CIDR之外的IP地址时,IP预留将不能应用。

  • 为重置一个已存在的IP预留,通过在CIDR框指定CIDR值就可应用IP预留。

    例如,下表描述了客户网络创建的三种情形:

    案例 CIDR 网络CIDR 非cloudstack虚拟机的IP预留范围 描述
    1 10.1.1.0/24
    2 10.1.1.0/26 10.1.1.0/24 10.1.1.64-10.1.1.254 在界面的CIDR框内输入10.1.1.0/26或通过UpdateNetwork的API配置为guestvmcidr=10.1.1.0/26,进行IP预留配置
    3 10.1.1.0/24 在界面的CIDR框内输入10.1.1.0/24或通过UpdateNetwork API配置为guestvmcidr=10.1.1.0/24,进行IP预留清除
局限性
  • 如果在客户虚拟机CIDR外发现活动的IP地址,IP预留将不被支持。
  • 在IP预留中,引起CIDR变化的网络升级方案都将无效,如将无外部设备的方案升级到带有外部设备的方案。在新实施的网络中,要重新配置IP预留。
最佳实践

一旦网络状态变为实施,应尽快应用IP预留到客户网络。如果在第一台客户虚拟机部署后应用IP预留,则会在应用IP会有较少的冲突发生。

预留一个IP范围
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击你要修改的网络名称。

  4. In the Details tab, click Edit. button to edit.

    CIDR框将变为可编辑状态

  5. 在CIDR框,说明客户虚拟机的CIDR

  6. 点击应用

    等待更新完成。

为账户预留公共IP地址及VLANS

CloudStack可以让你能够独立的为账户预留一部分公共IP地址和VLANS。在创建区域阶段,你可以继续定义一部分VLANS以及多个公共IP范围。这种功能扩展特性可以让你能够为客户预留固定的一部分VLAN和客户IP地址

注意,如果一个账户使用了所有分配给他的VLAN和IP,这个账户可以从系统获得二个以上的资源。CloudStack为根管理员提供了二个参数可以进行控制,分别是use.system.public.ips和use.system.guest.vlans。当一个账户分配了资源并且这些资源已经被消耗掉时,这二个全局参数可以使根管理员拒绝此账户从公共IP和来宾VLAN获取资源。二个配置都能在帐户级别进行配置。

这些特性可提供以下的功能:

  • 从一个高级区域中预留一个VLAN范围和公共IP地址,并可以将其指定给一个账户。

  • 将一个VLAN和IP地址从一个账户解除联系。

  • 查看分配给帐户的公共IP地址。

  • 检查需要的范围是否可用并且要符合帐户限制。

    不能超过每个账户最大的IP限制数。

分配IP地址给一个账户
  1. 作为管理员登录到CloudStack用户界面。

  2. 在左侧导航栏中,点击基础架构

  3. 在区域中,点击查看全部

  4. 选择你要设置的区域。

  5. 点击物理网络标签卡。

  6. 在图的公共节点上,点击配置。

  7. 点击IP范围页签。

    或者指定一个已经的IP范围给帐户,或创建一个新的IP范围并指定给一个帐户。

  8. 要指定一个已有IP范围给帐户,按以下操作进行

    1. 确定需要分配的IP范围

    2. 点击添加帐户按钮。button to assign an IP range to an account.

      会弹出添加帐户对话框。

    3. 指定以下信息:

      • 帐户: 即需要指定IP地址范围的帐户
      • : 与帐户关联的域名

      要指定一个新的IP范围给帐户,按以下操作进行

      1. 指定以下信息:

        • 网关

        • 掩码

        • VLAN

        • 起始IP

        • 结束IP

        • 帐户: 按以下操作进行:

          1. 点击帐户

            会显示添加帐户页

          2. 指定以下信息:

            • Account: The account to which you want to assign an IP address range.
            • : 与帐户关联的域名
          3. 点击确定。

      2. 点击 添加

确定需要分配的IP范围
  1. 安装好CloudStack管理端后,使用管理员帐号登录CloudStack用户界面。

  2. 在左侧导航栏中,点击基础架构

  3. 在区域中,点击查看全部

  4. 选择你要设置的区域。

  5. 点击物理网络标签卡。

  6. 在图中的来宾节点上,点击配置

  7. 选择分配VLAN范围页签

  8. 点击分配VLAN范围

    会弹出分配VLAN对话框。

  9. 指定以下信息:

    • VLAN Range: The VLAN range that you want to assign to an account.
    • Account: The account to which you want to assign the selected VLAN range.
    • : 与帐户关联的域名

在单网卡配置多个IP地址

CloudStack能够让你给每个客户虚拟机网卡配置多个私有IP地址,除主IP地址外,你可以指定额外的IP地址到客户虚拟机网卡。在所有的网络配置中,如基础配置,高级配置,VPC,均支持这一功能。安全组,静态NAT及端口转发服务在额外的IP地址上也都被支持。

当然,你也可以从来宾子网中指定一个IP,如果没有指定,将会从来宾虚拟机子网中自动选择一个。可以从UI中查看每一个与来宾虚拟机网卡关联的IP地址。也可以在CloudStack界面中通过网络配置选项在那些额外的来宾虚拟机上应用NAT。但必须指明网卡与哪一个IP关联。

在XenServer,KVM和VMware虚拟机中,都支持这些功能。注意,VMware不支持基础区域的安全组。

使用案例

一些使用案例见以下描述

  • 网络设备,如防火墙或负责均衡设备,一般来讲,当他们在网络接口上接入更多的IP地址时,他们能够更好的工作。
  • 在接口和实例中迁移IP地址。绑定到特定IP地址的应用可以在实例中迁移。
  • 在单个实例上开启多个SSL网站。可以在单个实例上安装多个SSL认证,每一个认证都关联一个单独的IP地址。
指南

为防止IP冲突,当多个网络连接至同一个虚拟机时,要配置不同的子网。

指定额外的IP给虚拟机
  1. 登录到CloudStack的界面

  2. 在左侧导航栏,点击实例

  3. 点击拟配置的实例

  4. 在详细 页签,点击网卡

  5. 点击查看二级地址

  6. 点击获取新二级IP,在确认对话框点击确定。

    需要手动配置来宾虚拟机的网卡。在虚拟机上,CloudStack不会自动配置获取IP。确保在虚拟机重启IP地址配置仍有效。

    稍等一会,新的IP地址会出现,状态栏为会显示为分配。现在可以在端口转发或静态NAT规则中使用此IP地址了。

更改端口转发和静态NAT服务

因为每一个网卡都可关联至多IP,CloudStack可以允许为端口转发及静态NAT服务选择一个目标IP。默认为主IP。为开启此功能,另一个可选的配置参数 虚拟机来宾IP 需要被加至端口转发及静态NAT 的API中去(开启静态NAT,创建IP端口转发),以示IP地址NAT需要配置。如果虚拟机来宾IP 没有设置,NAT会配置在虚拟机的私有IP上,如果设置了,NAT会配置在虚拟机的主IP上。

关于多IP范围

注解

这些功能仅能在IPV4的地址是实现。

在基础区域以及高级区域的开启安全组,CloudStack能够让你从不同的子网添加来宾IP范围。对于高级区域的开启安全组,多个子网可被加至同一个VLAN。随着此功能的增加,当IP地址耗尽时,你能够从同一个子网或从不同的子网添加IP范围。这会允许你添加更多的子网,因此减少了了地址管理的问题。为支持这一特性,创建VLANIP范围的API被加以扩展,这样就能从不同的子网添加IP范围

确实在添加IP范围前,手动配置了子网的网关。注意,CloudStack仅支持一个子网有一个网关。不支持重叠的子网。

使用删除VLAN范围的API删除IP范围。如果拟删除的IP在被使用时,此操作会失败。如果删除的范围包含DHCP服务器拟分配的IP地址CloudStack会从同一个子网下获取新的IP。如果在子网内没有可供利用的IP时,删除操作会失败。

在KVM, xenServer以及VMware虚拟机中,都支持这项功能。

About Elastic IPs

弹性IP(EIP)地址是指与帐户关联的IP地址,能起到静态IP地址的作用。帐户所有者能完全控制隶属于此账户的弹性IP。作为帐户拥有者,你可以从你帐户的EIP池中选择一个IP分配给虚拟机。如果后续需要,你可以继续分配此IP地址给另一个虚拟机。在VM宕机时,此功能特别有用。此IP地址可以重新指定给一个新的虚拟机,而不是取代已经宕机的虚拟机。

与公共IP地址一样,弹性IP地址通过使用静态NAT关联至与之相关的私有IP地址。在起用了EIP的基础域中,EIP的服务与静态NAT的服务一一对应。默认的网络方案,默认共享EIP与负载均衡网络方案,在区域部署了NetScaler设备的前提下,能够提供EIP以及ELB网络服务。参见以下更详细的说明。

Elastic IP in a NetScaler-enabled Basic Zone.

在图中,NetScaler设备对CloudStack的实例而言是一个默认的入口或出口,防火墙是剩余数据中心的出口或入口。Netscaler对来宾网络提供负载均衡以及静态NAT的服务。在机架和管理服务器上,来宾流量是不同的子网或VLAN。在数据中心的核心交换机的基础路由策略是通过NetScaler转发公共流量,其他数据中心的流量则通过防火墙。

EIP的工作流如下:

  • 当部署一个用户虚拟机时,会从区域配置的IP中自动获得一个公共IP。这个IP为虚拟机帐户所拥有。

  • 每一个虚拟机都有自己的私有IP。当来客户虚拟机启动时,通过使用在公共IP和私有IP之间的入口网络地址转换(INAT)以及预留地址转换(RNAT),NetScaler设备可以提供静态NAT

    注解

    入口网络地址转换(INAT)是NetScaler支持的一类NAT类型,在此类型中,来自公共网络(如Internet)的数据包中的目标IP地址被私有网络中虚拟机的私有地址取代。预留地址转换(RNAT)也是NetScaler支持的一类NAT类型,私有网络中虚拟机产生的数据包中的源IP地址被公共IP地址取代。

  • 默认的公共IP在两种情况下会被释放:

    • 当虚拟机停止时。当虚拟机启动时,可以重新获取一个新的公共IP,并不必须是从公共IP地址池中最初分配的那一个。
    • 当用户获取公共IP(弹性IP)时。这些公共IP与帐户相关联,但不与任何私有IP相关。然而,用户可以开启静态NAT将帐户中虚拟机的私有IP与之关联。对应公共IP的静态NAT规则可随时取消。当静态NAT关闭时,会从地址池中分配的一个新的公共IP,并不必须是最初分配的那一个。

对部署而言,公共IP会受限于资源,可以灵活的选择默认不分配公共IP。可以在开启了EIP的基础区域中,通过关联公共IP选项来打开或关闭自动公共IP指定。如果在创建网络方案时,你关闭了自动公共IP指定,则在使用此网络方案部署时,仅会分配一个私有IP给虚拟机。此后,用户虚拟机可以获取一个IP,并可以开启静态NAT。

要了解更多关于关联公共IP的选项,请参考`”创建一个新的网络方案” <networking.html#creating-a-new-network-offering>`_.

注解

设计关联公共IP的功能,仅是为使用用户虚拟机。系统虚拟机仍然默认会获取公共IP和私有IP,与网络配置并不相关。

在基础区域中,使用默认具有EIP和ELB服务的网络方案来创建共享网络时,仍然会给每一个用户虚拟机分配公共IP。

端口IP

关于端口IP

在CloudStack中,端口IP是地域级的IP地址池,其天然具有弹性,亦即可以在地理隔离的区域中进行转发。作为管理员,可以在地域级提供IP地址池供用户使用。如果在用户所属的地域,其管理员提供了端口IP,用户就可以获取此类IP。在高级区域内,这些IP可用于任一服务。也可以在基础区域中为EIP服务使用端口IP。

端口IP的主要功能如下:

  • IP是静态分配的。
  • IP与网络无关。
  • IP关联是可以通过网络转发的。
  • IP可以在基础区域和高级区域中转发。
  • IP可通过VPC,非VPC隔离和共享网络进行转发。
  • 端口IP转发仅对静态NAT可用。
指南

在转发至另一网络前,确保没有网络规则(如防火墙,静态NAT,端口转发等等)不存在于端口IP。

配置端口IP
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧导航栏中,点击地域

  3. 选择拟修改的地域。

  4. 点击查看端口IP

  5. 点击端口IP范围

    会出现 添加端口IP范围的窗口

  6. 指定以下信息:

    • 起始IP/结束IP: 从Internet可以访问的一个IP地址范围,将会分配给客户虚拟机。输入起始IP以及结束IP,定义CloudStack指定给客户虚拟机的IP范围。
    • 网关: 配置端口IP地址所使用的网关。
    • 掩码: 与端口IP范围关联的掩码。
    • VLAN: 公共流量拟使用的VLAN。
  7. 点击确定。

获取端口IP。
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟修改的网络名称。

  4. 点击查看IP地址。

  5. 点击获取新IP。

    获取新IP的窗口会出现。

  6. 说明是否需要IP跨区。

  7. 在确认对话框中点击确定。

    稍等一会,新的IP地址会出现,状态栏为会显示为分配。现在可以在端口转发或静态NAT规则中使用此IP地址了。

便携式IP

IP要从一个网络转换至另一网络的话,只需启用静态NAT。但是,当一个portable IP对应一个网络的时候,你可以在网络中为任何服务使用它 。

要跨网络转换一个portable IP,执行下列API:

http://localhost:8096/client/api?command=enableStaticNat&response=json&ipaddressid=a4bc37b2-4b4e-461d-9a62-b66414618e36&virtualmachineid=a242c476-ef37-441e-9c7b-b303e2a9cb4f&networkid=6e7cd8d1-d1ba-4c35-bdaf-333354cbd49810

用正确的UUID替换此处的UUID。比如,如果你想转换一个portable IP至X网络和一个网络中的VM Y,请执行下列操作:

http://localhost:8096/client/api?command=enableStaticNat&response=json&ipaddressid=a4bc37b2-4b4e-461d-9a62-b66414618e36&virtualmachineid=Y&networkid=X

共享网络中的多子网

CloudStack为你提供了在基本zones和启用了安全组的高级zones不同的子网中灵活的添加来宾IP段功能 。在启用了安全组的高级zones中,这意味着多子网可以被添加到同一个VLAN。这个特性还意味着,当IP地址用尽的时候,你可以从同一个子网或从不同的子网添加IP地址范围。这将允许你使用更多的子网,降低地址管理工作量。你也可以删除已经添加的IP地址范围。

先决条件和指南
  • 这个特性只能被实现在:
    • IPv4地址
    • 如果虚拟路由是由DHCP提供的
    • 在KVM,XenServer和VMware hypervisors
  • 在添加IP范围之前,手动配置新子网的网关。
  • CloudStack只支持一个子网对应一个网关;交叉子网目前不支持。
给共享网络添加多子网
  1. 使用管理员或者终端用户账号登录CloudStack UI。

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

  3. 在Zones上,点击查看更多,然后点击你要进行操作的zone..

  4. 点击物理网络。

  5. 在图中的来宾节点上,点击配置

  6. 点击网络。

  7. 选择你想要操作的网络。

  8. 点击查看IP范围。

  9. 点击添加IP范围。

    显示的添加IP范围对话框如下:

    adding an IP range to a network.

  10. 指定以下信息:

    所有的区域必须填写的。

    • 网关:你创建网络层的网关。确保网关在你创建VPC时指定的超级CIDR范围内,并且不能与已存在VPC的任何网络层的CIDR重叠。

    • 子网掩码:你创建的网络层的子网掩码。

      比如,如果VPC CIDR是10.0.0.0/16并且该网络层CIDR是10.0.1.0/24,那么这个网络层的网关是10.0.1.1,子网掩码是255.255.255.0.

    • 起始/结束IP:从互联网获得的和将被分配给来宾VMsIP地址范围。输入第一个和最后一个IP地址,该地址范围定义的是CloudStack能分配给来宾VMs的范围。

  11. 点击确定。

使用Private VLAN隔离高级Zone中的网络

在共享网络中的隔离来宾流量能被Private VLAN(PVLAN)获取。PVLANs提供同一个VLAN里端口间的2层网络隔离。在启用了PVLAN的共享网络,一个用户VM不能到达其他用户VM,但是他们能与DHCP服务器和网关通讯,反过来这样能允许用户去控制网络内部的流量,并且帮助他们像阻止与其他用户VMs通讯一样的去部署无需通讯的多个应用程序。

  • 使用PVLAN在共享网络中隔离VMs。
  • 在KVM,XenServer和VMware hypervisors中支持
  • 启用了PVLAN的共享网络可以是来宾VM的多个网络的一部分。
关于Private VLAN

在以太网交换机中,VLAN是二层网络中的一个主机之间主机能建立直接通讯的广播域 。Private VLAN被设计成一个标准的VLAN的延伸,为了进一步细分逻辑广播域。一个规则的VLAN是单一广播域,但是一个 private VLAN将一个较大的VLAN广播域划分为较小的多个子域。子域表现为一对VLANs:一个主VLAN和一个辅助VLAN。被划分为较小组的原始VLAN叫主,这意味着所有的在private VLAN中的VLAN对共享着同一个主VLAN。所有的辅助VLANs存在与主VLAN中。每个辅助VLAN有一个特定的区别于其他子域VLAN ID。

在private VLAN中有三种端口类型,它们实质上决定了所包含的主机的流量走势。每组端口都有自己唯一的策略,它能控制配置同一个private VLAN域中连接到端口的主机与其他已连接主机的通讯。使用下面三种端口定义中的一种来配置每个PVLAN对中的主机:

  • 混杂模式(Promiscuous):混杂模式的端口能与所有的接口通讯,包括可通讯与隔离属于辅助VLANs的主机端口。在混杂模式中,主机被连接到混在模式端口并且能够直接与主VLAN和辅助VLAN中的资源。典型的连接到混杂模式端口的是路由器,DHCP服务器和其他受信任的设备。
  • 隔离(Isolated)VLANs: 隔离模式VLAN中的端口不能与其他二层网络中的端口通讯。连接隔离模式端口上的主机只能直接与混杂模式下的资源通讯。如果你的客户设备只访问网关路由器,请将其附加至隔离端口。
  • Community VLANs:中的端口能与其他端口和混杂模式下的端口通讯,但是他们不能与二层网络中的其他community VLAN中的端口通讯。在Community模式下,主机能与同一community中的主机和连接到混杂模式中的主VLAN的主机可以通讯。如果你的客户有两个设备需要与其他客户的设备隔离,但是他们之间又要通讯,请将他们部署至 community 端口。

延伸阅读:

先决条件
  • 在支持的交换机上使用PVLAN。

    更多信息,请参考 Private VLAN Catalyst Switch Support Matrix

  • 将所有能识别PVLAN的二层交换机之间互连,并且其中一个要连至一个路由器。主机连接到的所有端口需配置为trunk模式。打开VLAN管理,主VLAN(公共网络)和隔离的辅助VLAN端口。配置交换机连接到路由器的端口为PVLAN混杂trunk,这样可以为不识别PVLAN的路由器转换一个隔离的VLAN到主VLAN。

    注意只有Cisco Catalyst 4500有PVLAN混杂trunk模式,可以连接所有普通VLAN和PVLAN到不能识别PVLAN的交换机。其他支持PVLAN的Catalyst交换机,在PVALN对中的每个交换机上使用级联线连接到上联交换机。

  • 在你的物理交换机上使用带外管理配置private VLAN。

  • 在XenServer和KVM上使用PVALN之前,请启用Open vSwitch (OVS)。

    注解

    XenServer和KVM中的OVS不支持原生的PVLAN。因此,靠修改flow table,CloudStack为XenServer和KVM模拟OVS中的PVLAN。

配置一个启用了PVLAN的来宾网络
  1. 作为管理员登录到CloudStack用户界面。

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

  3. 在区域页面,点击查看全部。

  4. 选择要添加客户网络的那个区域。

  5. 点击物理网络标签卡。

  6. 选择您要操作的物理网络。

  7. 在客户节点界面,点击配置。

  8. 点击网络选项卡。

  9. 点击 添加来宾网络。

    现实添加客户网络窗口。

  10. 指定以下信息:

    • Name: 要建立的网络的名字。这个是用户可见的

    • 描述: 提供一个简短的方案描述。

    • VLAN ID: VLAN 的ID。

    • 辅助隔离VLAN ID:辅助隔离VLAN的唯一ID。

      更多关于辅助隔离VLAN的描述,请参考see 关于 Private VLAN”.

    • Scope: 可用的范围,包括域,帐户,项目和其他所以。

      • Domain: 域,指定客户网络范围的域。指定域中的网络相对其他域是隔离不可见的。如果指定子域访问,域中的客户网络将在所有的子域中可用。
      • Account: 这里的帐户是为建立客户网络所指定的。必须指定域中所属的帐户。
      • Project: 项目是客户网络所建立的项目。必须为这个项目指定域。
      • All: 选择它,会让客户网络对这个区域(Zone)中的所有域,帐户和项目都可用。
    • 网络提议: 如果管理员已经配置了多个网络方案,可以选择你需要的那个。

    • Guest gateway: 虚拟机需要使用的网关。

    • Netmask: 虚拟机子网要使用的网络掩码。

    • IP Range: 定义公网IP范围,这些IP用来访问公网或是从公网访问客户虚拟机。

    • 网络域: 如果你想为客户虚机网络定义一个域名,在此处输入后缀名。

  11. 点击确定。

安全组

关于安全组

安全组提供一种方法来隔离VMs流量。一个安全组是一组依照设置名为入口规则和出口规则来过滤他们进出流量的VMs,这些规则依靠与VM通讯的IP地址来过滤网络流量。安全组在使用基础网络的zones中尤为重要,因为这里只有一个来宾网络。在高级zones中,只有KVM hypervisor支持安全组。

注解

在一个使用高级网络的zone中,你可以改为定义多个来宾网络隔离流量至VMs。

每个CloudStack账号匹配一个拒绝所有入站流量和允许所有出口流量的默认安全组 。可以编辑默认的安全组以便所有新VMs的策略继承一些的想要的设置。

任何CloudStack用户可以增加任意数量的安全组。当一个新的VM运行起来的时候,它会被添加到默认安全组除非其他用户指定了其他安全组。一个VM可以是任何安全组的成员。一旦VM被添加到一个安全组,它会继承这个组的生命周期;你不能移动一台正在运行的VM到其他安全组。

你可以通过删除或添加任意的入口和出口策略来修改一个安全组。当你这么做的时候,新的策略会应用到组中的所有VMs,无论是运行的还是关机的。

如果没有指定入口规则,那么流量会被禁止,除了已经允许通过一个出口规则响应任何流量 。

添加一个安全组

一个用户或者管理员能定义一个新的安全组。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择安全组。

  4. 点击添加安全组。

  5. 提供一个名称和描述。

  6. 点击确定。

    新的安全组出现在安全组详细信息标签中。

  7. 要使安全组生效,继续给这个安全组添加入口和出口策略。

高级区域中的安全组(只针对KVM)

以KVM作为虚拟机时,在单共享广域的网络内,CloudStack可以通过安全组来隔离客户。通过使用安全组而不是多VLAN,可以在云中隔离客户时具有更高的灵活性

Setting for CentOS

To use security groups on CentOS/RHEL/Fedora please enable bridge based filtering, ensure that default sysctl configuration file usually at /usr/lib/sysctl.d/00-system.conf set to following and run ‘sysctl -p’:

注解

# Enable netfilter on bridges. net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-arptables = 1

局限性

下列不支持此功能:

  • 在开启了安全组的共享网络内,同一VLAN内具有不同网关或掩码的二个IP范围,
  • 在共享网络的特殊帐户内,同一VLAN内具有不同网关或掩码的二个IP范围
  • 在开启了安全组共享网络的多VLAN范围
  • 在共享网络的特殊帐户内,多个VLAN范围

为使用此特性,在区域内必须开启安全组

开启安全组

使用安全组功能之前,必须先在Zone中启用安全组功能。系统管理员可以在创建一个新的Zone时,通过选择带‘安全组’功能的网络方案进行启用。在高级安装指南的基本Zone配置中有该过程的详细描述。系统管理员不能对现有Zone启用安全组,只能在新建Zone时启用。

对安全组添加入口出口规则
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络

  3. In Select view, choose Security Groups, then click the security group you want.

  4. 为增加入口规则,点击入口规则并填写相应内容,以说明在此安全组内何种网络流量可以到达虚拟机实例。如果没有说明入口规则,则不会允许流量进入。也就只有出口规允许的流量了。

    • 通过CIDR帐户添加. 表明在CloudStack帐户中是否有CIDR定义的流量来源或是已存在的安全组。如果允许来自另一安全组的所有虚拟机的流量进入,则添加此帐户。
    • 协议. 发送源会使用网络协议来发送流量到安全组。TCP和UDP是典型的二种用来数据交换和终端用户交流的协议。ICMP则用来发送错误信息或网络监控数据
    • 开始端口,结束端口. (仅对TCP,UDP)。目的地为进入流量而设的监听端口范围。如果仅开放了单个端口,则在两者的区域中用同一端口。
    • ICMP类型,ICMP编码. (仅对ICMP)。接受的信息及错误码的类型。
    • CIDR. (仅通过CIDR添加)。为接受来来自特殊地址块的流量,输入一个CIDR,多个时用逗号隔开。CIDR是进入流量的基础IP地址。例如:192.168.0.0/22,为允许所有CIDR,请设为0.0.0.0/0
    • 帐户,安全组. (仅通过帐户添加)。为接受来自另一安全组的流量,输入一个CloudStack帐户和在此帐户中已经定义的安全组的名字。为允许你正在编辑的安全组内虚拟机之间的流量,输入你在第7步使用的相同的名字。

    下面这个例子允许内部任何地方的HTTP访问

    allows inbound HTTP access from anywhere.

  5. 为添加一个出口规则,点击出口规则并填写以下内容,以说明在此安全组内的虚拟机,被允许哪一类型的流量送出。如果出口规则没有说明,所以的流量都被允许出去一旦进行了说明,则以下流量可以允许出去:在出口规则中进行说明的,查询DNS和DHCP服务器的,响应来自入口规则允许进入的流量的

    • 通过CIDR帐户添加. 表明流量目的地是否已通过IP地址(CIDR)定义或是CloudStack帐户(Account)内存在的安全组。选择帐户,以允许流量到其安全组内所有虚拟机
    • 协议. 虚拟机发送流量需要的协议。TCP和UDP是典型的二种用来数据交换和终端用户交流的协议。ICMP则用来发送错误信息或网络监控数据
    • 开始端口,结束端口. (仅对TCP,UDP) 。目的地为进入流量而设的监听端口范围。如果仅开放了单个端口,则在两者的区域中用同一端口。
    • ICMP类型,ICMP编码. (仅对ICMP) 。信息及错误码的类型。
    • CIDR. (仅通过CIDR添加) 。为接受来来自特殊地址块的流量,输入一个CIDR,多个时用逗号隔开。CIDR是进入流量的基础IP地址。例如:192.168.0.0/22,为允许所有CIDR,请设为0.0.0.0/0
    • 帐户,安全组. (仅通过帐户添加) 。为接受来自另一安全组的流量,输入一个CloudStack帐户和在此帐户中已经定义的安全组的名字。为允许你正在编辑的安全组内虚拟机之间的流量,输入名字。
  6. 点击 添加

外部防火墙及负载均衡

CloudStack允许通过外部的Jniper SRX 设备和外部NetScaler设备或网关负载均衡设备和负载均衡服务。在此情形下,虚拟机使用SRX作为网关。

关于使用NetScaler负载均衡器

在区域中,或高级区域使用隔离网络时,CloudStack支持思杰的NetScaler作为外部网络设备元素作为负责均衡。拟通过其他方案提供负载均衡而不是CloudStack的虚拟路由器时,就可以建立一个外部负载均衡器

注解

在基础区域中,仅在弹性IP或弹性负载均衡服务开启时,才支持负载均衡服务

在基础域中使用NetScaler负载均衡提供EIP或ELB服务时,确保所有的客户虚拟机流量必须通过NetScaler设备进出。当入流量通过NetScaler设备时流量通过使用NAT协议被路由,此NAT协议依赖于公共IP到私有IP的配置。来自客户虚拟机的流量通常要经过3层路由器,为确保出流量通过提供EIP/ELB的NetScaler设备,3层路由器,必须具有基础策略。必有设立一个具有基础策略的路由器可保证所有客户机的流量都能转向NetScaler设备。这也需要确保客户虚拟机的出流量通过使用NAT被路由到公共IP。关于EIP的更多信息,参看`”关于EIP” <#about-elastic-ip>`_.

NetScaler可以设置成直通模式。它必须在区域中部署客户虚拟机负载均衡规则之前加入。

CloudStack中NetScaler的功能作用与CloudStack文档中说明的使用F5 外部负载均衡器的功能作用相同。一点差别就是,F5支持路由域名,而NetScaler无此功能。NetScaler也不可以用作防火墙。

为CLOUDSTACK管理端安装和启用外部负载均衡功能,参阅安装文档里的外部客户负载均衡。

The Citrix NetScaler comes in three varieties. The following summarizes how these variants are treated in CloudStack.

MPX

  • 物理应用。能够进行深度数据包检测。可作为防火墙和负载均衡应用。
  • 在高级区域中,完全支持负载均衡功能,没有限制。在基础区域中,也提供静态NAT,EIP,ELB功能。

VPX

  • 虚拟应用,可以运行在XenServer,ESXi以及Hyper-V上虚拟机上。与MPX功能相同。
  • 在ESXi和XenServer上支持。对MPX也支持一些功能。CloudStack将VPX和MPX作为同一类型的设备看待。

SDX

  • 物理应用。可以在单个应用上创建多个完全隔离的VPX实例,以支持多客户使用。
  • CloudStack会动态分配,配置,管理在SDX上的虚拟机实例的生命周期。分配的实例会自动加入到CloudStack,不需要管理员进行手动配置。一旦一个VPX实例加入到CloudStack,将会认为是ESXi主机上的一个VPX。
在RHEL服务器上配置SNMP社区字符串

SNMP社区字符串类似于用户ID或用户密码,用来登录网络设备,如路由器。这类字符串随着所有的SNMP请求发送。如果社区字符串正确,设备将反馈相应的字符串若不正确,设备将丢弃请求,不进行处理。

NetScaler设备使用SNMP与虚拟机进行通讯。为保证NetScaler设备与RHEL机器之间安全的通讯,必须安装并配置社区字符串。

  1. 确保在RedHat上安装了SNMP,如果没有,执行以下命令:

    yum install net-snmp-utils
    
  2. 编辑/etc/snmp/snmpd.conf 文件,以允许来自NetScaler设备的SNMP查询

    1. 映射社区名到一个安全的名字(本地,我的网络,依赖于其来源)

      注解

      编辑下表时,使用一个强密码

      #         sec.name   source        community
      com2sec   local      localhost     public
      com2sec   mynetwork  0.0.0.0       public
      

      注解

      设置0.0.0.0以允许所有的IP都可以查询NetScaler设备

    2. 映射一个安全名到组名

      #       group.name    sec.model  sec.name
      group   MyRWGroup     v1         local
      group   MyRWGroup     v2c        local
      group   MyROGroup     v1         mynetwork
      group   MyROGroup     v2c        mynetwork
      
    3. 创建一个视图,以允许组有权限执行:

      incl/excl subtree mask view all included .1
      
    4. 授权不同的写权限给二个组及你创建的视图

      # context     sec.model     sec.level      prefix     read     write    notif
        access      MyROGroup ""  any noauth     exact      all      none     none
        access      MyRWGroup ""  any noauth     exact      all      all      all
      
  3. 在iptalbes中解除对SNMP的锁定。

    iptables -A INPUT -p udp --dport 161 -j ACCEPT
    
  4. 开启SNMP服务:

    service snmpd start
    
  5. 确保在系统启动时,SNMP服务能够自动启动。

    chkconfig snmpd on
    
初始化安装外部防火墙和负载均衡

当为一个新帐户创建一个虚拟机时,CloudStack会设置程序以让外部防火墙和负载均衡与虚拟机共同工作。会在防火墙上创建以下对象:

  • 一个新的逻辑接口,用以连接帐户的私有VLAN。接口的IP通常是私有帐户私有子网的第一个IP。
  • 一个源NAT规则转发帐户从私有VLAN到公共网络的的出口流量,使用帐户的公共IP地址作为源地址。
  • 防火墙过滤计数器计量帐户出口流量的字节数

以下对象会在负载均衡上创建:

  • 匹配帐户区域VLAN的私有VLAN。
  • 一个VLAN的自有IP。经常是帐户私有子网的第二个IP。
继续配置外部防火墙和负载均衡

增加的用户行为(如设置端口转发)会引起防火墙和负载均衡的程序化。一个用户可以请求增加公共IP地址以及转发使用此公共IP地址的虚拟机接受到的流量。这是通过静态NAT功能完成的,静态NAT将一个公共IP地址映射给一个虚拟机,并指定一组特定协议,开放一组特定端口。当静态NAT建立好之后,CLOUDSTACK会在区域的外部防火墙上通过程序定制如下对象:

  • 一条静态NAT规则将虚拟机的私有IP地址映射到公共IP地址。
  • 一个安全策略可以允许说明的协议和端口范围内的流量通过。
  • 防火墙过滤计数器计量到达此公共IP的流量

通过源NAT,静态NAT以及负载均衡规则进出的字节数均被计量并保存在每一个外部设备中。按一定的规则对这些数据进行收集,并将其存储在CloudStack的数据库中。

负载均衡规则

一个CloudStack的用户或管理员可以创建负载均衡规则以平衡一个公共IP地址收到的针对一个或多个虚拟机的外部流量。一个用户可以创建一条规则,说明一个算法,并将其指定给一部分虚拟机。

注解

如果你创建了一个负载均衡规则且使用包括外部负载均衡设备的网络服务方案,如包括NetScaler,但随后将网络方案改成使用CloudStack的虚拟路由器,则你必须在虚拟路由器上创建一个防火墙规则,这些防火墙规则与已经设置的负载均衡规则一一对应,只有这样,才能使那些负载均衡规则继续起作用。

增加一条负载均衡规则
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟进行负载均衡的网络名称

  4. 点击查看IP地址。

  5. 点击你希望创建规则的IP地址,然后点击配置

  6. 在图的负载均衡节点点上,点击 查看全部。

    在基础区域中,在不需要或不选择IP的条件下,你可以创建一条负载均衡规则。当你创建负载均衡规则时,CloudStack会内部指定一个IP地址。当规则创建完成时,IP地址会在IP地址页列出来。

    为此,选择网络名称,点击 增加负载均衡。按#7继续进行配置。

  7. 填写以下内容:

    • 名称: 负载均衡规则的名称。
    • 公共端口: 这个端口接受到负载均衡的进入流量。
    • 私有端口: 虚拟机会使用此端口接收流量。
    • 算法: 选择让CloudStack使用的负载均衡算法。CloudStack各类已知的算法,如果不熟悉那些选项,通过goole搜索会发现大量信息。
    • 粘性: (可选) 点击配置,为粘性策略选择一个算法。可参见为负载均衡规则制定的粘性会话策略。
    • 自动缩放:点击配置完成自动缩放配置,在 :ref:`conf-autoscale`中有介绍。
    • 健康检查:(可选,只针对NetScaler的负载均衡设备)点击配置并填写健康检查特性,参见15.16.5.3 负载均衡规则的健康检查。参见 负载均衡规则的健康检查。.
      • ping 路径(可选): 需要发送健康检查的目的地顺序。默认:/ (all)。
      • 响应时间(可选): 从健康检查返回的响应时间(2-60秒),默认为5秒。
      • 间隔时间(可选): 健康检查的间隔时间(1秒-5分))。默认值在全局参数 lbrule_health check_time_interval
      • 健康阀值(可选): 在声明一个实例健康之前,连续健康检查成功的次数。默认为2.
      • 不健康阀值(可选): 在声音一个实例不健康之前连续健康检查失败的次数。默认为10。
  8. 点击添加虚拟机,选择拟分散进入流量的二个或多个虚拟机,点击应用。

    在列表中会出现新加的负载均衡规则。可以重复以上步骤以对此IP增加更多的负载均衡规则。

为负载均衡规则制定的粘性会话策略。

粘性会话应用于基于网页的应用中,以确保在用户的会话中,对用户的多种请求持续提供信息。例如,购物者正在向购物车中增加东西,则需要记住到目前为止已买的东西。粘性的概念也指持久发现或维护状态。

在CloudStack中定义的任何负载均衡规则,都可以具有粘性策略。策略有名字,粘性方法以及参数组成。参数是成对的值-名或标志,这些由负载均衡提供商进行定义。粘发现方法可以加载负载均衡设备产生的cookie,应用生产的cookie,或基于源产生的cookie。在基于源的方法中,源IP地址被用来区分用户和定位用户存储的数据。在其他方法中,则使用cookie。由负载均衡或应用产生的cookie,包含在请求或响应的url中,以产生持久性。cookie的名称可以有管理员指定或自动产生。提供了多种选择来准确控制cookie行为。诸如如何产生的以及是否进行缓存。

对于多数粘性方法变量列表,可以参看CloudStack UI或者调用网络列表,并检查粘性方法支持能力。

负载均衡规则的健康检查。

(仅对NetScaler负载均衡设备,需要NetScaler版本10.0以上。)

负载均衡应用中的健康检查,能够确保转发需求运行,服务可用。当创建一个负载均衡规则里,你可以指定一个健康检查策略。这是对粘性策略,算法,其他负载均衡设备规则的附加说明。可以为每一条负载均衡设备进行配置。

在CloudStackk中的NetScaler负载均衡设备定义的任一负载均衡规则都可以有一条健康检查策略。该策略有ping路径,定义健康或非健康状态的阀值,健康检查频率以及等待超时间隔。

当健康检查策略生效时,负载均衡被发现处于非健康状态时,会停止转发到源的任何请求。如果随后资源变为可用,周期性进行的健康检查就会发现,此资源就会再一次被添加至从负载均衡器收到的请求资源池里。任一时刻,最近的健康检查结果会显示在UI中。对绑定了负载均衡规则的虚拟机,且此规则配置了健康检查,依据最近的检查,状态会显示为正常或失败。

可以删除或修改存在的健康检查策略。

为配置默认的健康检查执行频率,通过全局配置参数 healthcheck.update.interval进行设备,默认值是600秒。可以根据需要进行设置此值。

如何通过UI进行健康检查策略的设置,可参看 增加一条负载均衡规则

配置自缩放

自缩放允许你能够根据定义的条件进行无缝且自动的增加或减少后端服务或应用虚拟机。当开启自缩放时,可以确保在需求增加时,无缝的增加正在使用虚拟机的数量。因此他会通过关闭未使用的虚拟机或者需要时开启新的虚拟机,从而节省你的计算成本。这些操作,都不需要手动干预。

NetScaler的自缩放定义为基于用户定义的条件,无缝的开启或关闭虚拟机。触发扩大或缩小行为的条件从监控服务器cpu的使用率的单一用例到监控服务器响应及cpu使用率的组合用例,各不相同。例如,你可以一个自缩放,能够在CPU使用超过80%持续15分钟时启动一个新的虚拟机,或CPU使用率低于20%持续30分钟时,移除一个虚拟机。

CloudStack使用NetScaler负载均衡器来监控系统健康的各方面,并与CloudStack共同工作以初始化扩大或缩小的行为。

注解

自缩放在NetScaler发布的10版本以上适用。(Build 74.4006.e 及以上)

先决条件

在配置自缩放前,需要考虑以下几点:

  • 确保在配置自缩放时有必需的模板。当使用模板部署虚拟机并使虚拟机启动时,应用能够起动并运行。

    注解

    如果应用没有运行,NetScaler设备会认为虚拟机无效并持续无条件的创建虚拟机,直到资源耗尽。

  • 部署准备好的模板。确保应用在第一次启动时能够开启并准备好接管流量。观察部署模板需要的时间。在配置自缩放时,要考虑这段时间。

  • The AutoScale feature supports the SNMP counters that can be used to define conditions for taking scale up or scale down actions. To monitor the SNMP-based counter, ensure that the SNMP agent is installed in the template used for creating the AutoScale VMs, and the SNMP operations work with the configured SNMP community and port by using standard SNMP managers. For example, see “Configuring SNMP Community String on a RHELServer” to configure SNMP on a RHEL machine.

  • 确保在全局配置中的结束点地址参数已设置为管理服务器的API地址。例如:http://10.102.102.22:8080/client/api。 在多管理节点的部署中,使用配置在负载均衡器上的虚拟IP地址作为管理服务器集群的IP地址。此外,确保NetScaler设备有读取为提供自缩放而配置的IP地址的权限。

    如果更新了endpointe.url,在系统自动负载均衡器规则里,先关闭自缩放功能随后再开启,以应用此更新。。更多信息,参见 更新自动扩展配置

  • 如果为自缩放用户生成了API值和秘钥,确保用户参与的负载均衡器的自缩放功能先关闭,再开启,以应用NetScaler配置的变化。

  • 在高级区域中,在配置带自缩放的负载均衡规则时,确保至少要有一个虚拟机。在网络中存在一个虚拟机,可保证在配置自缩放时,网络处于使用状态。

配置

指定以下信息:

Configuring AutoScale.

  • 模板: 模板由基本的操作系统镜像和应用组成。在自缩放动作中,模板用来提供一个应用的新的实例。当从模板部署虚拟机时,虚拟机在管理员不干预的情形下开始从负载均衡器那里接管流量。例如,如果虚拟机部署为WEB服务应用,则虚拟机上的WEB服务器应该在运行,并且连接了数据库,等等。

  • 计算方案: 一个预定义的虚拟硬件资源集,包括CPU速度,CPU数量,RAM,用户在创建虚拟时可以选择这些。选择一个计算方案作为提供虚拟机实例中自缩放行为的一部分。

  • 最小实例: 指定给负载均衡规则活动的虚拟机实例的最小数量,活动的虚拟机实例是开启的应用实例,并服务于流量和负载均衡。这个参数确保负载均衡规则拥有至少一个配置的活动虚拟机实例,并且能够服务于流量。

    注解

    如果一个应用程序,比如SAP,它运行在一个VM实例上,但是VM因为某些原因宕机了,那么这个VM没有被算成是Min实例的一部分,并且如果这些活动的VM实例是下面配置的数值,那么自动扩展功能启动一个扩展的动作。同样的,当应用程序实例从宕机的状态恢复了以后,这个应用程序实例会被算为活动实例计数的一部分,并且当活动实例计数超出Max实例数值的时候,自动扩展启动一个缩减动作。

  • 最大实例数:最大数量的**应该被指派到**一条负载均衡策略的活动VM实例。这个参数定义了能被指派到一条负载均衡策略的活动VM实例的上限。

    给最大量实例参数指定一个大的值可能引发大量VM实例的分发,这个过程会导致一个负载均衡策略耗尽账户或者域级别下VM实例指定的限制。

    注解

    如果一个应用程序,比如SAP,它运行在一个VM实例上,但是VM因为某些原因宕机了,那么这个VM没有被算成是Max实例的一部分。所以这个情况中为扩展动作分发的VMs数量可能会超过配置的MAX实例数值。一旦这个VMs中的应用程序实例从先前的宕机中恢复的时候,自动扩展功能就会校正Max实例的数值。

指定下列扩展和缩减的策略:

  • 持续:持续,以秒为单位,你必须指定条件为true以触发一个扩展动作。这个条件定义的是为了触发一个自动扩展动作,你指定的全部持续值应保持为true。
  • 计数器:性能计数器直接体现了被监视实例的状态。默认情况下,CloudStack提供了4个性能计数器:3个SNMP计数器和1个NetScaler计数器。SNMP计数器是Linux User CPU、Linux System CPU和Linux CPU Idle。NetScaler计数器是ResponseTime。root管理员能够使用CloudStack API给CloudStack添加额外的计数器。
  • 运算符:自动扩展功能支持下列5种关系型运算符:大于、小于、小于或等于、大于或等于和等于。
  • 阈值:阈值用于计数器。一旦上面计数器中定义的值超出阈值,自动扩展功能会启动扩展或者缩减动作。
  • 添加::点击添加来添加条件。

另外,如果你想配置高级设置,点击显示高级设置,接着指定下列参数:

  • 轮询间隔:组合计数器,运算和阈值这几个条件的频率在触发扩展和缩减动作之前都要被评估。默认的轮询间隔是30秒。
  • 平静期:这是自动扩展动作被触发之后的冷静期。这个时间包括完成从模板分发一个VM实例的时间和一个应用程序准备好提供服务的时间。平静期允许机群在发生任何动作之前进入稳定状态。默认值是300秒。
  • VM销毁宽限期:此宽限期以秒计算,在一个缩减动作运行之后,在VMs被视为缩减动作的一部分从而销毁之前的等待时间。它保证了能够彻底关闭任何服务于被标记为销毁的VM的挂起中的进程或者事务。默认值是120秒。
  • 安全组:安全组提供一种方法来隔离VMs流量。一个安全组是一组依照设置名为入口规则和出口规则来过滤他们进出流量的VMs,这些规则依靠与VM通讯的IP地址来过滤网络流量。
  • 磁盘方案:一组预定义的主数据存储磁盘大小。
  • SNMP 联系:SNMP 联系字符串被用于NetScaler设备从分发的VM实例中查询已配置的计数器的值。默认是public。
  • SNMP端口:运行在已分发的VMs上的SNMP代理端口号。默认的端口是161.
  • 用户:在云中NetScaler设备中用于发起扩展和缩减API调用的用户。如果没有指定选项,那么该用户被配置为自动扩展。指定其他用户名可以覆盖此配置。
  • 应用:点击应用创建自动扩展配置。
禁止和启用自动扩展配置

如果你想对一个自动扩展VM实例执行任何维护操作,请禁用自动扩展配置。当自动扩展配置被禁用,扩展和缩减动作不会执行。你可以利用停机时间进行维护活动。要禁用自动扩展配置,点击禁用自动扩展按钮 button to enable or disable AutoScale.

这个按钮是启用和禁止的切换开关,取决于当前是否启用了自动扩展。在执行完维护操作以后,你可以启用回自动扩展配置。要启用,请再次打开自动扩展配置页面,然后点击启用自动扩展按钮|EnableDisable.png|。

更新自动扩展配置

你可以更新各种参数和添加或者删除扩展或缩减策略中的条件。在你更新自动扩展配置之前,请确保你已经通过点击禁止自动扩展按钮禁止了自动扩展负载均衡策略。

在你修改了所需的自动扩展参数之后,点击应用。要应新的自动扩展策略,再次打开自动扩展配置页面,然后点击启用自动扩展按钮。

运行时注意事项
  • 管理员不应该分配VM到配置为AutoScale的负载均衡规则中。
  • 在分配虚拟机到一个负载均衡的规则配置完成前如果NetScaler被关闭或重启,则配置的虚拟机不能成为负载均衡规则的一部分。要解决此问题,重命名基于AutoScale配置的虚拟机名称或ID,以便在任何时间点负载平衡规则可以调节该虚拟机。
  • 在自动扩展上下文之外使用API调用,如destroyVM,那么自动扩展下的VM会处于负载均衡配置冲突状态中。虽然VM被负载均衡策略所销毁,但NetScaler仍然会把VM作为一个设备分配一条策略。

全局服务器负载均衡 支持

CLOUDSTACK支持全局服务器负载均衡 (GSLB) 功能以提供可持续的商业运营。GSLB可以在CLOUDSTACK环境中实现资源的无缝迁移。CLOUDSTACK通过集成NetScaler应用交付控制器 (ADC)来提供GSLB功能,ADC可以提供各种各样的GSLB能力,比如灾难恢复,负载均衡。CLOUDSTACK在实现GSLB功能进,使用了DNS重定向技术。

为了支持这个功能,引进了地域级别的服务和服务提供者。引进了一项新服务“GSLB”作为地域级别的服务。该GSLB服务提供者介绍将提供GSLB服务。目前,CloudStack中NetScaler可作为GSLB提供者。 GSLB功能工作在Active-Active数据中心环境。

关于全局服务器负载均衡

全局服务器负载均衡(GSLB)是负载均衡功能的扩展,为了高效的避免停机时间。基于部署的性质,GSLB代表一组技术的集合,用于各种用途,如负载均衡,灾难恢复,性能,和法定义务。使用GSLB,工作负载可以分布在位于不同地理位置的多个数据中心。 GSLB也可以用于在发生故障时访问资源的另一个备用位置,或对流量提供了简易的维护方式,或两者兼得。

GSLB服务组件

一个典型的GSLB环境由以下服务组件组成:

  • GSLB站点:在CloudStack专业术语中,GSLB站点表现为映射至数据中心的zones,每个GSLB有多个网络设备。每个GSLB站点由一个位于站点中的NetScaler设备管理。每个NetScaler设备将他管理的站点视为本地站点,并且由其他NetScaler设备管理的站点视为远程站点。在GSLB部署中它是一个中央实体,具体表现为一个名称和一个IP地址。
  • GSLB服务:GSLB服务表现为典型的负载均衡或者内容交换虚拟服务器。在一个GSLB环境中,你可以有本地及远程GSLB服务。本地GSLB服务表现为一个本地负载均衡或者内容交换虚拟服务器。远程GSLB服务是配置在GSLB设置中的其他站点。在每个站点中的GSLB设置里,你可以创建一个本地GSLB服务和任意数量的远程GSLB服务。
  • GSLB虚拟服务器:GSLB虚拟服务器指的是一个或多个GSLB服务和平衡跨越多个使用CloudStack功能的zones之间VMs的流量。它通过评估配置的GSLB方法或者算法来选择一个GSLB服务发送客户端请求。来自不同zone的一个或多个虚拟服务器被绑定到GSLB虚拟服务器上。GSLB虚拟服务器没有对应的公共IP,只有一个FQDN DNS名称。
  • 负载均衡或内容交换虚拟服务器:依照Citrix NetScaler的专业术语,一个负载均衡或者内容交换虚拟服务器表现为本地网络上的一个或多个服务器。客户端发送他们的请求至负载均衡或内容交换虚拟服务器IP(VIP)地址,并且由虚拟服务器平衡本地服务器之间的负载。在GSLB虚拟服务器选择了一个基于本地或者远程负载均衡或者内容交换虚拟服务器的GSLB服务之后,客户端发送请求至虚拟服务器的VIP地址。
  • DNS VIPs:DNS虚拟IP是一个在GSLB服务供应者上的DNS负载均衡虚拟服务器。在有GSLB服务提供者的域中的DNS请求会被发送至一个DNS VIP。
  • 权威DNS:ADNS(权威域名称服务器)是一个为DNS请求提供真实响应的服务,比如web站点IP地址。在GSLB环境中,一个ADNS服务只响应权威的GSLB服务提供者所在域的DNS请求。当配置了一个ADNS服务,该服务的提供者即拥有该服务IP并且广播它。当你创建一个ADNS服务的时候,NetScaler通过配置的ADNS服务IP和端口响应DNS请求。
在CloudStack中,GSLB的工作原理是什么?

全局服务器负载均衡-GSLB-用于在不同地域的不同独立区域之间管理WEB服务器的访问流量。以下是CLOUDSTACK中提供的GSLB功能图示:EXZTELCO这个组织用CLOUDSTACK在不同的数据中心部署一个公有云,此云环境包括两个区域,Zone-1 和Zone-2。XYZTELCO里有租户A需要部署一个高可用方案。为了达到此目标,他们分别在两个区域里部署了两个虚拟机实例:Zone-1中有VM1和VM2,Zone-2中有VM5和VM6。租户A在Zone-1中得到一个公网IP-IP-1,并且在VM1和VM2之间配置了负载均衡规则。CLOUDSTACK 编排系统在 Zone-1中LB服务上设置了一个虚拟服务器-Virtual server 1 。客户端对-IP-1的访问会到达Virtual server 1,此虚拟服务器再将流量转发到VM1和VM2上进行流量负载均衡。

租户A在Zone-2中得到一个公网IP-IP-2,并且在VM5和VM6之间配置了负载均衡规则。CLOUDSTACK 编排系统在 Zone-2中LB服务上设置了一个虚拟服务器-Virtual server 2 。客户端对-IP-2的访问会到达Virtual server 2,此虚拟服务器再将流量转发到VM5和VM6上进行流量负载均衡。此时,租户A在两个区域里都启用了服务,但是,无法在这种环境下部署灾难恢复计划,也无法更智能在区域内使用负载均衡。要解决这些问题,XYZTELCO云管理员可以在两个区域内启用GSLB服务,一个GSLB服务通常是一个具有ADNS(认证域名服务器)能力的ADC,并且具有监测本地和远程站点健康状况的手段。云管理员可以在ZONE 1和2中为租户启用GSLB服务。

GSLB architecture

租户- A希望利用由xyztelco cloud提供的GSLB服务。租户-A配置了一个GSLB规则对Zone-1中的虚拟服务器1和Zone-2中的虚拟服务器2提供流量负载均衡。假设域名是A.xyztelco.com 。CloudStack中协调设置GSLB服务提供者Zone-1中的GSLB虚拟服务器1。 CloudStack绑定Zone-1中的虚拟服务器1和Zone-2中的虚拟服务器2到GSLB虚拟服务器1。CloudStack也将协调设置GSLB服务提供者Zone-2中的GSLB虚拟服务器2.CloudStack绑定Zone-1中的虚拟服务器1和Zone-2中的虚拟服务器2到GSLB虚拟服务器2.GSLB虚拟服务器2配置为开始监视虚拟服务器1和2的健康。CloudStack中会绑定域名A.xyztelco.com到GSLB虚拟服务器1和2。在这一点上,租户-A的服务将在全球范围内可达于A.xyztelco.com。域名xyztelcom.com的专用DNS服务器,被管理员配置为外带管理,由两个区域的GSLB提供者对域名A.xyztelco.com提供解析。它将被配置为域名A.xyztelco.com的ADNS。当客户端请求解析A.xyztelcom.com域名时,将最终由DNS指派到GSLB提供者Zone 1 和Zone2。客户DNS请求将被GSLB提供者接获。GSLB提供者,根据需要解析的域名,将获得与域名关联的GSLB虚拟服务器。根据用于负载均衡的虚拟服务器的运行健康状况,域名DNS请求将被解析到所选择关联的虚拟服务器中。

配置GSLB

要配置GSLB的部署,您必须首先为每个区域配置一个标准的负载平衡设置。这使您能够在该地域中每个区域的不同服务器之间进行负载均衡。然后在NetScaler方面,配置您计划添加到每个区域作为权威DNS(ADNS)服务器的两个NetScaler应用。接下来,为每个区域创建GSLB站点、配置GSLB虚拟服务器、创建GSLB服务并绑定GSLB服务到GSLB虚拟服务器中。最后,绑定该域到GSLB虚拟服务器。两个应用的GSLB配置在两个不同区域中是完全相同的,尽管每个网站的负载均衡配置特定于该网站。

作为云管理员执行以下操作。按照上面给出的例子中,由管理员xyztelco设置GSLB:

  1. 在全局变量 cloud.dns.name中,为您租户云定义DNS名称并供GSLB服务使用。

  2. 在NetScaler方面,给出GSLB配置 `配置全局服务器负载均衡 (GSLB)<http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-con.html>`_:

    1. 配置一个标准的负载均衡设置。

    2. 配置权威DNS,如下解释 配置权威的DNS服务.

    3. 由域名详细信息配置一个GSLB站点和站点名称。

      由域名配置一个GSLB站点和站点名称。

      按照上面给出的例子,站点名称为 A.xyztelco.com 和 B.xyztelco.com

      更多信息,请参阅 配置基本的GSLB站点.

    4. 配置GSLB虚拟服务器。

      更多信息,请参阅 配置GSLB虚拟服务器.

    5. 为每个虚拟服务器配置GSLB服务。

      更多信息,请参阅 配置GSLB服务.

    6. 绑定GSLB服务到GSLB虚拟服务器。

      更多信息,请参阅 绑定GSLB服务到GSLB虚拟服务器.

    7. 绑定GSLB域名到GSLB虚拟服务器。从域的详细信息中获得域名。

      更多信息,请参阅 绑定GSLB域名到GSLB虚拟服务器.

  3. 在每个参与GSLB的区域内,添加启用GSLB功能的NetScaler设备。

    更多信息请参考 开启NetScaler的GSLB.

以域管理员/用户执行以下操作:

  1. 在两个站点中添加GSLB规则。

    参考”添加 GSLB规则”.

  2. 分配负载均衡规则。

    参考”为GSLB分配负载均衡规则”.

先决条件和指南
  • GSLB功能支持基本和高级区域。

  • GSLB是新添加的网络服务。

  • GSLB服务提供者可以被添加至区域中的物理网络。

  • 管理员允许开启或禁用地域级别的GSLB功能。

  • 管理员具有启用或配置区域为GSLB的能力

    只有在GSLB服务提供者提供的区域中,该区域才被视为有GSLB能力。

  • 当用户的VMs部署在启用GSLB功能的多个可用区域中时,他们可以使用GSLB功能在多个区域中将VM的流量进行负载均衡。

  • 如果管理员在地域中启用了GSLB,用户可以使用GSLB对地狱中的所有区域的VMs进行负载均衡。

  • 用户可以为同一个区域或不同地域间可用的区域流量进行负载均衡。

  • 管理员可以为整个云配置DNS名称。

  • 用户可以为云中的全局负载均衡服务指定一个唯一的名称。所提供名称的域名相当于云的DNS名称。

    用户提供的名称与管理员提供的DNS名称一起为用户的全局负载均衡服务产生一个全局解析的FQDN。例如,如果管理员已经配置xyztelco.com为云中的DNS名称,以及用户为GSLB虚拟服务器指定的名称为’foo’,那么GSLB虚拟服务器的FQDN名称是foo.xyztelco.com。

  • 设置GSLB时,用户可以为GSLB跨区域的一部分选择负载均衡方式,例如 round robin。

  • 用户应能设置区域级虚拟服务器的权重。负载均衡在分配流量时会考虑该权重。

  • 该GSLB功能必须支持会话持久性,特定域名的一系列客户端请求被发送到同一个区域中的虚拟服务器上。

    从每个GSLB虚拟服务器中收集统计数据。

开启NetScaler的GSLB

在每个区域中,添加启用GSLB的NetScaler设备提供负载均衡。

  1. 使用管理员登录到CloudStack管理界面。

  2. 在左侧导航栏中,点击基础架构

  3. 点击区域中的查看更多。

  4. 选择你要设置的区域。

  5. 点击物理网络选项卡,然后点击物理网络的名称。

  6. 点击示意图’网络服务提供程序’中的配置

    你可能需要向下滚动才能看到。

  7. 点击NetScaler.

  8. 点击添加NetScaler设备并提供如下信息:

    对于NetScaler:

    • IP地址: SDX的IP地址。
    • 用户名/密码. 访问此设备的认证许可。CloudStack使用这些认证信息访问此设备。
    • 类型:添加设备的类型。可以是F5 BigIP负载均衡器、NetScaler VPX、NetScaler MPX或 NetScaler SDX等设备。关于NetScaler的类型比较,请参阅CloudStack管理指南。
    • 公共接口: 配置为公共网络部分的设备接口。
    • 专用接口: 配置为专用网络部分的设备接口。
    • GSLB 服务:选择该选项。
    • GSLB 服务公共IP:在专用网络中,为GSLB服务提供NAT转换的公共IP地址。
    • GSLB 服务专用IP: GSLB服务的专用IP地址。
    • 重试次数 尝试控制设备失败时重试的次数,默认为2次。
    • 容量:该设备能处理的网络数量。
    • 专用: 当标记为专用后,这个设备只对单个帐号专用。该选项被勾选后,容量选项就没有了实际意义且值会被置为1。
  9. 点击确定。

添加 GSLB规则
  1. 使用管理员或者用户账号登录CloudStack UI。

  2. 在左边的导航栏里,点击区域(为文档翻译中地域的概念,英文为region,下同)

  3. 选择你想创建GSLB规则的地域。

  4. 在详细选项卡中,点击查看GSLB。

  5. 点击添加GSLB。

    添加GSLB页面显示如下:

    adding a gslb rule.

  6. 指定以下信息:

    • 名称: GSLB规则的名称。
    • 描述: (可选)为用户提供一个简短的GSLB规则描述。
    • GSLB 域名: 首选的域名服务。
    • 算法: (可选) 用于跨区域流量负载均衡的算法。可选项为 Round Robin, Least Connection, 和Proximity.
    • 服务类型: GSLB使用的传输协议。可选项为TCP和UDP。
    • : (可选) 你想要创建GSLB规则的域。
    • 账户: (可选) 应用GSLB规则的账户。
  7. 点击确定。

为GSLB分配负载均衡规则
  1. 使用管理员或者用户账号登录CloudStack UI。
  2. 在左边的导航栏里,点击区域(为文档翻译中地域的概念,英文为region,下同)
  3. 选择你想创建GSLB规则的地域。
  4. 在详细选项卡中,点击查看GSLB。
  5. 选择所需的GSLB。
  6. 点击已分配的负载均衡视图。
  7. 点击分配更多负载平衡
  8. 选择你将为区域创建的负载均衡规则。
  9. 点击确定。
已知的局限性

目前,CloudStack并不支持跨区域的服务编排。将引入服务的概念和地域服务提供者。

来宾IP范围

宾客网络流量的IP是由用户以帐号为基础设置的。这允许用户以在他们的宾客网络和他们的客户端之间开通VPN连接的方式配置他们的网络。

存在基本网络和启用安全组的高级网络中的共享网络,你可以灵活的在不同子网中添加多个来宾IP范围。你可以同时添加或移除IP范围。更多信息,请参阅 `章节 15.10, “关于多IP范围”<#about-multiple-ip-ranges>`_.

获得一个新的IP地址

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟修改的网络名称。

  4. 点击查看IP地址。

  5. 点击获取新IP。

    获取新IP的窗口会出现。

  6. 说明是否需要IP跨区。

    如果你想作为 Portable IP则在确认窗口中点击Yes,如果你想作为正常的公共IP则点击No。

    关于便携式IP的更多信息,查看 “便携式IP”.

    稍等一会,新的IP地址会出现,状态栏为会显示为分配。现在可以在端口转发或静态NAT规则中使用此IP地址了。

释放IP地址

当IP的最后一条规则删除后,您就能够释放该IP。然而,该IP仍属于VPC,无论如何,该IP可以再次被VPC中的来宾网络再次获取。

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 点击拟修改的网络名称。
  4. 点击查看IP地址。
  5. 点击要释放的IP地址。
  6. Click the Release IP button. button to release an IP

静态 NAT

A static NAT rule maps a public IP address to the private IP address of a VM in order to allow Internet traffic into the VM. The public IP address always remains the same, which is why it is called static NAT. This section tells how to enable or disable static NAT for a particular IP address.

启用或禁用静态NAT

如果该公网IP上已经有端口转发规则,则不允许再启用静态NAT。

如果用户VM存在多个网络,则静态NAT规则仅在默认网络上定义时生效。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟修改的网络名称。

  4. 点击查看IP地址。

  5. 点击你要修改的IP地址

  6. 点击静态NAT按钮。 button to enable/disable NAT.

    该按钮在启用和禁用之间切换,这取决于IP地址是否已经启用了静态NAT。

  7. 如果是启用静态NAT,会出现一个对话框让您选择目标VM然后点击应用。

IP转发及防火墙

默认情况下, 所有从公共IP进来的流量都会被拒绝. 所有在来宾网络出去的流量默认也被阻挡。

为了允许外出的流量,遵循:ref:`egress-fw-rules`中的操作步骤。

为了允许接收到的流量, 用户可以设置一些防火墙规则和/或端口转发规则. 例如, 你可以在公共IP地址上设定防火墙规则来打开一个端口范围, 比如从33到44端口. 然后使用端口转发将流量从这个特定的范围内的端口直接送到指定的用户虚机端口. 例如, 一个端口转发的规则可以将接收的流量从公共IP的33端口到用户虚机私有IP的100端口.

防火墙规则

默认情况下,防火墙拒绝所有流入公共IP的流量。要允许外部流量,你需要制定防火墙规则打开防火墙端口。你可以选择性的制定一个或多个CIDR来过滤来源IP。这在当你只需要允许特定IP请求时会很有用。

你不能使用防火墙规则打开弹性IP的端口。当弹性IP处在使用状态时,外部的通过请求将被安全组管理。参阅 “添加安全组”.

在高级Zone中,您也可以用虚拟路由器来创建流出的防火墙规则。更多信息,请查阅”高级区域中的出口防火墙规则”。

防火墙规则能在管理服务器的UI中防火墙选项卡里创建,CloudStac安装好以后,这个规则选项卡默认不显示,你需要以管理员身份修改全局变量 firewall.rule.ui.enabled为 “true”才能显示。

创建防火墙规则:

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 点击拟修改的网络名称。
  4. 点击查看IP地址。
  5. 点击你要修改的IP地址
  6. 点击设置选项卡 填入以下值:
    • Source CIDR: (Optional) To accept only traffic from IP addresses within a particular address block, enter a CIDR or a comma-separated list of CIDRs. Example: 192.168.0.0/22. Leave empty to allow all CIDRs.
    • Protocol: The communication protocol in use on the opened port(s).
    • Start Port and End Port: The port(s) you want to open on the firewall. If you are opening a single port, use the same number in both fields
    • ICMP Type and ICMP Code: Used only if Protocol is set to ICMP. Provide the type and code required by the ICMP protocol to fill out the ICMP header. Refer to ICMP documentation for more details if you are not sure what to enter
  7. 点击 添加
高级区域中的出口防火墙规则

出口流量起源于从专用网络访问公共网络,例如Internet。默认情况下,在默认网络方案中,出口流量被拒绝,所以没有从来宾网络到Internet的出口流量被允许。不过,你可以通过创建出口防火墙规则来控制高级网络中的出口流量。当出口防火墙规则被应用时,规则指定的流量被允许,其余的流量被阻止。当所有的防火墙规则从默认策略中移除,阻止策略再次被应用。

先决条件和指南

应用出口防火墙规则时请思考如下方案:

  • 出口防火墙规则在Jniper SRX和虚拟路由器中均支持。
  • 共享网络中不支持出口防火墙规则。
  • 允许特定源CIDR的出口流量。源CIDR是来宾网络CIDR的一部分。
  • 允许出口流量的协议为TCP,UDP,ICMP或ALL。
  • 允许出口流量协议和目标端口范围。端口范围需要指定TCP,UDP或ICMP类型和代码。
  • 新网络方案的默认策略是允许的,然而升级现有的网络方案后,防火墙服务提供商的出口策略默认将是拒绝。
配置出口防火墙规则
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择来宾网络,然后点击需要的来宾网络。

  4. 要添加出口策略,点击出口策略选项卡并填写以下字段指定哪种类型的流量在来宾网络中是被允许从VM中实例发送出的。

    adding an egress firewall rule.

    • CIDR:(仅通过CIDR添加)为接受来来自特殊地址块的流量,输入一个CIDR,多个时用逗号隔开。CIDR是进入流量的基础IP地址。例如:192.168.0.0/22,为允许所有CIDR,请设为0.0.0.0/0
    • 协议: 虚拟机发送流量所使用的网络协议。TCP和UDP通常用于数据交换和用户通讯。ICMP通常用于发送出错信息和网络监控数据。
    • 开始端口,结束端口: (仅对TCP,UDP)。目的地为进入流量而设的监听端口范围。如果仅开放了单个端口,则在两者的区域中用同一端口。
    • ICMP类型, ICMP代码 (ICMP only): 信息类型及发送错误的代码。
  5. 点击 添加

配置默认出口策略

通过网络方案配置隔离来宾网络的默认出口策略。通过创建网络方案选项决定来宾网络到公共网络的所有流量在默认策略中是允许或者拒绝。使用该网络方案创建网络。如果没有指定策略,你创建的来宾网络中的所有流量将被允许。

你有两个选择:允许和拒绝。

允许

如果你选择网络方案为允许,则默认出口流量被允许。无论如何,当配置了来宾网络的出口规则,规则被应用于阻止特定的流量和允许其他的 。如果网络中没有配置出口规则,则出口流量会被放行。

拒绝

如果你选择网络方案为拒绝,则来宾网络中的默认出口流量将被阻挡。无论如何,当配置了来宾网络的出口规则,规则被应用于允许特定的流量。当实施来宾网络时,CloudStack为来宾网络添加防火墙出口规则指定默认的出口策略。

该特定只支持虚拟路由器和Juniper SRX。

  1. 为合适的默认出口策略创建一个网络方案:

    1. 以管理员权限登录CloudStack用户界面。
    2. 在左侧导航栏中,点击 服务方案。
    3. 在选择方案中,选择网络方案。
    4. 点击添加网络方案。
    5. 在对话框中,填写必选项,包括防火墙提供者。
    6. 在默认出口策略选项中,指定行为。
    7. 点击确定。
  2. 使用网络方案创建隔离网络。

    根据你的选择,网络的出口公共流量将被拒绝或允许。

端口转发

一个端口转发服务是一系列转发转发规则的集合。一个端口转发服务随后可以应用于一个或多个来宾虚拟机。来宾虚拟机会根据端口转发规则作相关进入端口的管理。你可以定义一个或多个CIDR来过滤源IP地址。当你只希望特定的IP流量进入时是相当有用的。

一个客户VM可以在任意数量的端口转发服务中。端口转发服务可以不包含客户VM。如果客户VM在多个网络中,则端口转发仅在默认网络中定义时才生效。

您不能使用端口转发打开弹性IP地址的端口。当使用弹性IP时,外部访问是由安全组控制的。参见安全组。

设置端口转发:

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 如果还没有,请在 CloudStack中为Zone添加公网IP段。参阅 安装指南中的添加Zone和Pod。
  3. 在 CloudStack中创建1台或更多VM。
  4. 在左边导航栏,点击网络。
  5. 点击需要操作VM所在的网络名称。
  6. 选择一个已有的IP或者获取一个新的IP地址。参阅 “获取一个新的IP”.。 点击列表中IP地址的名称。
  7. 点击配置选项卡。
  8. 在图表的端口转发节点,点击查看所有。
  9. 填写以下内容:
    • 公用端口: 你在前面操作所获取的供公共流量使用的公用IP地址的端口。
    • 私有端口: 虚拟机实例将被转发到公共流量的监听端口。
    • Protocol: The communication protocol in use between the two ports
  10. 点击 添加

IP负载均衡

用户可以选择关联同一个公网IP到多个虚拟机。 CloudStack实现了TCP级别的负载平衡器,有以下策略。

  • 轮询
  • 最少连接数
  • 源IP

这类似于端口转发,但目标可能会有多个IP地址。

DNS和DHCP

虚拟路由器为来宾提供DNS和DHCP服务。它将DNS请求代理到在可用区域中配置的DNS服务器。

远程访问VPN

CloudStack account owners can create virtual private networks (VPN) to access their virtual machines. If the guest network is instantiated from a network offering that offers the Remote Access VPN service, the virtual router (based on the System VM) is used to provide the service. CloudStack provides a L2TP-over-IPsec-based remote access VPN service to guest virtual networks. Since each network gets its own virtual router, VPNs are not shared across the networks. VPN clients native to Windows, Mac OS X and iOS can be used to connect to the guest networks. The account owner can create and manage users for their VPN. CloudStack does not use its account database for this purpose but uses a separate table. The VPN user database is shared across all the VPNs created by the account owner. All VPN users get access to all VPNs created by the account owner.

注解

确保不是所有的网络流量走VPN。也就是说,用于配置VPN的route不是唯一用于该guest network,也不承担全部的网络流量。

  • 公路勇士/远程访问. .用户希望可以安全地从家里或者办公室连接到云里的一个 私有网络。特别是连接的客户端的IP地址是动态决定的,不能预先配置到VPN 服务器上。
  • Site to Site 站点到站点。在这个场景中,两个私有子网通过公共互联网上的一个安全VPN隧道互联。云用户的子网 (例如:办公室的网络)通过一个网关连接到云中的网络。用户的网关地址必须被预先配置到云的VPN服务器上。注意:通过 L2TP-over-IPsec 协议可以用来配置站点到站点的 VPN,虽然这不是该特性的最初目标。更多信息,参考”配置站点到站点的VPN连接”。
配置远程访问VPN

为云设置VPN:

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧导航栏,点击 全局设置
  3. 设置以下全局配置参数。
    • remote.access.vpn.client.ip.range – 分配给远程访问VPN客户端的IP地址范围。第一个IP被VPN服务器使用。
    • remote.access.vpn.psk.length – IPsec密钥长度。
    • remote.access.vpn.user.limit – 单个账户的最大VPN用户数量。

为特定的网络启用VPN:

  1. 使用用户或管理员身份登录到CloudStack用户界面。

  2. 在左边导航栏,点击网络。

  3. 选择你要操作的网络名称

  4. 点击查看IP地址。

  5. 点击一个显示的IP地址名称。

  6. 点击启用VPN按钮。button to enable VPN.

    IPsec密钥将显示在弹出的窗口中。

为VPC配置远程访问VPN

在VPC中启用远程访问VPN,任何VPC以外的VPN客户端都可以使用远程VPN连接访问VPC中的VM。VPN客户端可以在除了用户启用了远程访问VPN服务的VPC中的任何位置。

为VPC开启VPN:

  1. 使用用户或管理员身份登录到CloudStack用户界面。

  2. 在左边导航栏,点击网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击VPC的配置按钮。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击源NAT IP地址。

  7. 点击启用VPN按钮。button to enable VPN.

    点击OK确认。IPsec密钥将显示在弹出的窗口中。

现在,需要添加VPN用户。

  1. 点击源NAT IP。
  2. 选择VPN选项卡。
  3. 为你要创建的用户添加用户名和对应的密码。
  4. 点击 添加
  5. 重复相同的步骤添加VPN用户。
配置站点到站点的VPN连接

一个站点到站点的VPN连接可以帮助你建立从云基础架构到企业内部数据中心的安全连接.这就允许一个账户从企业内部数据中心的设备连接到此账户启用VPN连接的虚拟路由器上, 从而通过VPN连接到该账户的虚拟机.你也可以在两个VPC之间或是高可用区域之间建立VPC以加强安全。这样一来,就不需要在虚拟机之间建立VPN连接的必要了。

与Remote VPN不同,Site-to-site VPNs是将两个网络相互连接。比如,将一个分支办公室的网络与总公司网络互联,Site-to-site VPN的两个主机不需要VPN客户端软件,它们通过VPN网关收发普通的TCP/IP数据包流量 。

目前支持的数据中心的终端设备是:

  • Cisco ISR IOS 12.4或更新
  • Juniper J-系统 路由器 JunOS 9.5 或更新版本
  • CloudStack虚拟路由器。

注解

除了上述指定的Cisco和Juniper设备, 所期望的是任何Cisco或Juniper的设备在支持的操作系统上都可以建立VPN连接.

为了建立站点到站点的VPN连接, 需要执行以下步骤:

  1. 创建一个虚拟私有云(VPC).

    参考”配置一个虚拟私有云(VPC)”.

  2. 创建一个VPN客户网关.

  3. 为你创建的VPC设定一个VPN网关.

  4. 从VPC的VPN网关到客户的VPN网关建立VPN连接.

创建和更新一个VPN客户网关.

注解

一个VPN客户网关在同一时间只能连接一个VPN网关。

添加 VPN 客户网关

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图里,选择VPN客户网关。

  4. 点击添加 VPN 客户网关。

    adding a customer gateway.

    填写以下内容:

    • 名称: 你添加的VPN客户网关的一个唯一的名称。

    • IP地址: 远端网关的IP地址。

    • CIDR列表: 远端客户子网的CIDR。输入一个CIDR或是以逗号分隔的多个CIDR。在确认客户的CIDR和VPC的CIDR或是另一个客户的CIDR不重叠冲突。CIDR的格式必须符合 RFC1918标准。

    • IPsec Preshared Key: Preshared keying is a method where the endpoints of the VPN share a secret key. This key value is used to authenticate the customer gateway and the VPC VPN gateway to each other. The sequence cannot contain a newline or double-quote.

      注解

      Internet密钥交换协议(IKE)匹配点 ( VPN 端点 ) 通过计算并发送包含预共享密钥的哈希键值来进行相互验证。如果收接点通过自己的预共享密钥算出同一个键值的话,这就说明两个点是用的同一个密钥,相互之间认证通过,形成匹配。

    • IKE 加密: Internet密钥交换协议(IKE)第一阶段(phase-1)策略。支持的加密算法包括 AES128, AES192, AES256和3DES.。认证通过预共享密钥完成。

      注解

      phase-1是IKE过程的第一阶段。在这个开始的协商阶段,两个VPN端点在将底层IP流量加密安全的方法上取得一致。第一阶段认证通过的条件是:两个VPN网关之间使用的是同一个预定义密钥。

    • IKE 哈希: IKE第一阶段( phase-1)哈希散列使用的算法。支持SHA1 和 MD5.

    • IKE DH(Diffie-Hellman组): IKE的DH加密协议,可以在不安全的连接上确保共享KEY的安全。1536位的DH组用在IKE中用来建立会话KEYS。在这里,支持的选项是 None, Group-5 (1536-bit) 和 Group-2 (1024-bit).

    • ESP 加密: 封装安全有效负荷(Encapsulating Security Payload,ESP)算法是发生在第二阶段(phase-2)。其支持的加密算法包括 AES128, AES192, AES256, 和 3DES。

      注解

      phase-2是IKE过程的第二阶段,其目标是协助IPSec安全关联 (SA) 以建立IPSec通道。在 phase-2阶段,会利用 phase-1阶段建立好的DH安全协议方法来交换新的密钥。

    • ESP哈希散列:phase-2支持的封装安全有效负荷(Encapsulating Security Payload,ESP)哈希算法包括:SHA1 和MD5.

    • **Perfect forward secrecy(完全正向保密,PFS) **: PFS的性质是确保来自一组的长期的公共密钥和私人密钥之间的会话密钥不会妥协失效。PFS会促使一组新的DH KEY发生交换。这组新KEY具有更长的生命周期因此可以抵制更强大的功击。DH的可用选项是 None, Group-5 (1536-bit)和 Group-2 (1024-bit). 当新KEY交换之后,DH组会变得更大。

      注解

      当PFS打开后,两个网关之间的新的phase-2 SA协商都会产生新的phase-1的一组KEY,这就会导致增加一个额外的层。这个层的作用是保证即使phase-2 SA失效过期,其KEY也不会由phase-1生成。

    • IKE 存活期(秒): SA的phase-1的存活期。默认是86400 秒 (1 天).当这个时间过了之后,会发生一次新的 phase-1 KEY交换。

    • ESP存活期 (秒):SA的 phase-2存活期。默认为 3600 秒(1 小时). 当过了这个时间之后,会有一个新的KEY初始化,用来加密和认证 IPsec的会话KEY。

    • 死亡匹配点检测:这是一种检测不可用IKE节点的方法。如果你希望虚拟路由器随时测试IKE节点的存活情况,选择了这个选项。 一般来说,最好在VPN连接的两端都同时配置DPD(Dead Peer Detectio).

  5. 点击确定。

更新和删除一个VPN客户网关.

你可以更新一个客户网关:即可以从无到有新建一个VPN,或是将有错误提示的VPN改正。

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 在选择视图里,选择VPN客户网关。
  4. 选择您要操作的客户VPN连接。
  5. To modify the required parameters, click the Edit VPN Customer Gateway button button to edit.
  6. 删除一个客户VPN网关,点击删除客户VPN网关按钮。 button to remove a VPN customer gateway.
  7. 点击确定。
为VPC创建一个VPN网关
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择点对点VPN

    如果您是第一次创建VPN网关,选择点对点VPN会提示您创建一个VPN网关。

  6. 在信息确认对话框,点击“是”。

    过一会儿,VPN网关就创建出来了。系统会提示您查看VPN网关的详细信息,请点击“是”。

    VPN网关页面会显示以下详细信息:

    • IP地址
    • 帐号
    • 域名
新建vpn连接

注解

CloudStack最多支持建立8个VPN连接。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    页面上列出了该账号下所有的VPC。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 点击设置图标。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  6. 选择点对点VPN

    系统会显示点对点VPN页面。

  7. 在选择视图下拉框,请确保选择VPN连接。

  8. 选择创建vpn连接按钮

    系统会显示创建VPN连接对话框:

    creating a VPN connection to the customer gateway.

  9. 选择想要的用户网关。

  10. 如果你希望在两个VPC虚拟路由器之间建立连接,选择被动模式。

    如果你希望在两个VPC虚拟路由器之间建立连接,需要等待另一个虚拟路由器来初始化连接,则只有其中一个虚拟器上选择被动模式。在这种情况下,不要在初始化连接的虚拟路由器上选择被动模式。

  11. 点击确定。

    过一会儿,系统会显示该VPN连接。

    VPN连接信息

    • IP地址
    • 网关
    • 状态
    • IPSec 预共享密钥
    • IKE策略
    • ESP策略
在VPC网络之间的站点的VPN连接

CloudStack可以在虚拟路由器之间部署站点到站点的VPN连接,这需要添加一个被动模式的站点到站点VPN。有了这个功能之后,用户就可以在多个区域或VPC之间通过安全的VPN通道互联。

这个特性支持所有类型的HYPERVISOR.

  1. 创建两个VPC。比如,VPC A和VPC B。

    更多信息,参考”配置一个虚拟私有云(VPC)”.

  2. 在创建的VPC两边都添加VPN网关。

    更多信息,参考 “为VPC创建VPN网关”.

  3. 在VPC两边都创建VPN客户网关。

    更多信息,参考`”创建和更新VPN客户网关” <#creating-and-updating-a-vpn-customer-gateway>`_.

  4. 在VPC A这边启用VPN的被动连接模式。

    更多信息,请参阅 “创建VPN连接”

    确保客户网关指向VPC B。这个VPN当前显示的是未连接状态。

  5. 在VPC B上启用VPN连接。

    确保客户网关指向VPC A。在这个示例里,因为VPC A的虚拟路由器是处于被动模式且等待着VPC B进行初始化连接,所以VPC B的虚拟路由器不要设置为被动模式。

    VPN连接当前显示为未连接状态。

    VPC两边的VPN会进行初始化连接。默认为30秒之后,两边VPN都会显示为已连接状态。

VPN连接的重启和删除
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 点击设置图标。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  6. 选择点对点VPN

    系统会显示点对点VPN页面。

  7. 在选择视图下拉框,请确保选择VPN连接。

    系统会显示创建VPN连接对话框:

  8. 选择您要操作的VPN连接。

    系统显示详细信息页。

  9. 删除一个VPN连接,点击删除VPN连接按钮。 button to remove a VPN connection

    要重启VPN连接,请点击详细信息页的重置VPN连接按钮。 button to reset a VPN connection

关于vlan间路由(多层应用)

vlan间路由(多层应用)提供了在vlan间通过流量路由的功能。这个特性使你能够j建立私有云(vpc),独立分割的云,可容纳多层应用程序。这些层被部署在不同的VLAN,可以互相沟通。您提供的VLAN层的创建和部署虚拟机可以在不同的层上。VLAN连接到一个虚拟路由器,这有利于虚拟机之间的通信。实际上,你可以通过不同定义的vlan来分割你的虚拟机到不同网络,以便承担多层应用,如Web,应用程序或数据库的虚拟机。通过VLAN的逻辑上独立的应用程序的虚拟具有较高的安全性和较低的广播,同时任然物理连接到同一设备。

在 XenServer ,KVM和 VMware hypervisors支持这个特性

主要的优势为:

  • 管理可以部署一个vlans集,同时运行用户部署虚拟机在这些vlan上。从预先指定的vlan集中随机的为租户分配一个来宾vlan.租户处于同一层的所有vm处于分配给这个租户的来宾vlan.

    注解

    一个租户分配到的vlan不能被多个租户共享

  • 管理员允许所有用户创建自己的vpc,并部署应用。这个场景中,租户的虚拟机被部署到改租户的分配到的vlan中

  • 管理员和用户都可以创建多个vpcs.当第一个虚拟机被部署到该层时候,一个来宾网络nic插入到这个vpc虚拟路由器上

  • 管理员创建网关用接受和发送来自vm的流量:

    • VPN网关:更多信息,参考 “为VPC创建VPN网关”.
    • 公网网关:当为vpc创建一个虚拟路由器时,这个vpc的公共网关就添加到虚拟路由器当中。公共网关还没有暴露到最终用户。你不允许其列出,也不允许建立任何静态路由。
    • 私有网关: 更多信息,参考 “在一个VPC里加入私有网关。”.
  • 管理员和用户可以创建各种可能的目的地的网关组合。但是,在部署中每种类型只能有一个网关。

    例如:

    • VLAN和公网网关: 比如,在云中部署了一个应用,并且这个web应用所在的虚拟机要和因特网通信。
    • VLANs, VPN网关和公网网关: 比如, 云中部署了一个应用;部署这个web应用的虚拟机要和因特网通信; 并且数据库虚拟要个先前提到的设备通信
  • 管理员可以在虚拟路由器定义一个访问控制列表(ACL)用于过滤vlan或者因特网和vlan直接的流量。你可定义基于CIDR,端口范围,协议,类型代码(如果选用ICPM协议)和进出流量的acl

下图显示了可能的部署一个VLAN间的场景设置的:

a multi-tier setup.

要建立一个多层次的跨VLAN部署,请参考”配置一个虚拟私有云(VPC)”.

配置一个虚拟私有云(VPC)

关于虚拟私有云(VPC)

CloudStackVPC是CloudStack云中私有并隔离的部分。一个VPC可以使用自己的虚拟网络拓扑来组建传统物理网络。在这个虚拟网络中,您创建的虚机的私网地址可以由您自主选择IP范围,例如10.0.0.0/16。您可以在VPC网络范围内定义多个网络层,这些层可以让你将类似的虚机按IP地址范围分组。

例如:一个VPC的私有地址范围是10.0.0.0/16,其中的用户网络的地址范围可以分别是10.0.1.0/24、10.0.2.0/24、10.0.3.0/24等等。

Major Components of a VPC

VPC主要由以下网络组件构成:

  • VPC:一个VPC是多个隔离网络的容器,隔离网络间可以通过VPC的虚拟路由器互通。
  • 网络层:每个层是一个拥有各自VLAN和CIDR的隔离网络。您可以在层内放置VM等各种资源组。层与层之间通过VLAN方式隔离。VPC虚拟路由器在每个层中的网卡是该层的网关。
  • 虚拟路由器:创建VPC时会自动创建并启动一个虚拟路由器。该虚拟路由器连接了各层,并负责各层与公网网关、VPN网关和NAT实例间的网络流量。对于每个层,该虚拟路由器都会有对应的网卡和IP,并通过该IP提供DNS和DHCP服务。
  • 公网网关:VPC进出互联网的流量会走公网网关。VPC中的公网网关不暴露给最终用户,因此公网网关上不支持静态路由。
  • 私有网关:VPC进出某个私有网络的流量通过私有网关。更多信息,请查阅 “在一个VPC里加入私有网关。”.
  • VPN 网关:VPN连接的VPC端。
  • 点对点VPN连接:您的VPC和您的数据中心、家庭网络、主机托管设施之间基于硬件的VPN连接。更多信息,请参考”配置站点到站点的VPN连接”.
  • 客户网关:客户这边的VPN连接。更多信息,请参考 “创建和更新VPN客户网关”.
  • NAT实例:在用户虚机通过公网网关访问公网时,提供端口地址转换的实例。关于更多信息,请参考 “VPC中启用或禁用静态NAT”.
  • 网络ACL: 网络ACL是一组网络访问控制列表。这些列表就是一个按顺序编号的规则,执行的时候,从最小的编号开始。这些规则决定了与此ACL关联的各个层的进出流量会被允许或阻止。更多信息,请参考 “配置网络访问控制列表”.
VPC的网络架构

VPC有以下四个基本的网络架构:

  • 只有一个公网网关的VPC
  • VPC的公有和私有网关
  • VPC的公有和私有网关以及site-to-site VPN访问
  • 只有私有网关的VPC以及site-to-site VPN访问
VPC的连接选择

你可以连接你的VPC:

  • 通过公有网关连接到Internet.
  • 通过site-to-siteVPN网关连接到相邻数据中心。
  • 通过公有和私有VPN网关同时连接到Internet和相邻数据中心。
VPC网络的考虑事项

在创建VPC之前,确认以下事项:

  • 在创建好VPC之后,其默认处于启用状态。
  • 只能在高级区域中创建VPC,并且VPC只能属于一个区域。
  • 默认VPC的数量是20个。如果你需要更多的VPC的话,可以通过修改max.account.vpcs这个全局参数。这个参数是控制创建VPC的最大数量的。
  • 默认一个用户能创建VPC的层数是三层。也可以通过vpc.max.networks这个参数修改。
  • VPC中每一层都需要是唯一的CIDR,并且这个CIDR是在VPC的CIDR的范围之内。
  • 每一层只能属于一个VPC。
  • VPC中所有网络层都应属于同一个帐号。
  • 当VPC创建好之后,默认会分配好SourceNAT IP。当此VPC删除之后,SourceNAT IP也会被释放。
  • 一个公网IP只能用一个用途。如果此IP用于SourceNAT作用的话,就不能同时再用作StaticNAT 或端口转发。
  • 一个实例只能有一个私有IP地址,为了访问Internet,你可以为VPC里的此实例启用NAT功能。
  • 只有新的网络才能加入VPC。每一个VPC的最大网络数量由参数vpc.max.networks指定。其默认值为3.
  • VPC中只有一层支持负载均衡服务。
  • 如果一个IP地址被赋予一个网络层:
    • 那么这个IP就不能在VPC里被另外的层所使用。比如:如果你有A层和B层以及一个公网IP地址,则你可以为A或B创建一个端口转发规则,但不能同时在A和B上创建。
    • 那个IP也不能在VPC的其它的客户网络里用作StaticNAT,负载均衡,端口转发规则。
  • VPC网络不支持Remote access VPN。
添加一个VPC

当创建VPC时,你只需要提供区域名和VPC要使用的一组IP地址。这组IP地址是以CIDR块的形式提供。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

  4. 点击添加VPC按钮。页面呈现以下:

    adding a vpc.

    填写以下内容:

    • 名称: 要创建的VPC的名称。
    • 描述: 关于此VPC的简短描述.
    • 区域: 你希望将此VPN应用在哪个区域中。
    • 客户网络超级CIDR: 定义一个VPC内所有层(客户网络)的CIDR范围。当你新创建一个层时,这个层的CIDR必须在这个超级CIDR范围之内。CIDR的格式定义必须符合RFC1918。
    • 客户网络的DNS域名: 如果你需要一个域名,则需要在此指定域名后缀。这个参数会应用到VPC中所有的层中。这表示,VPC中所有的层都属于同一个域。如果没有指定域名,则域名会由系统随机产生。
    • 公共负载均衡提供者: 有两个选项:VPC虚拟路由器和 Netscaler。
  5. 点击确定。

添加层

层在VPC里起来隔离网络的作用,默认规则是层之间不能互访。不同VLAN之间的层可以通过虚拟机实现连接。层在VPC内部提供一种廉价,低延迟的网络连接。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

    注解

    最终用户能看到他们自己的VPC,系统管理用户和域管理员可以看到所有被授权查看的VPC。

  4. 在你希望设置层的VPC里,点击配置按钮。

  5. 点击新建网络。

    然后,添加层的对话界面就会出现。如下:

    adding a tier to a vpc.

    如果你已添加层,VPC界面就会出现。点击添加层可以增加一个新的层。

  6. 指定以下信息:

    所有的区域必须填写的。

    • 名称: 你添加的层的一个唯一的层名。

    • 网络方案: 默认有以下几种网络方案: Internal LB, DefaultIsolatedNetworkOfferingForVpcNetworksNoLB, DefaultIsolatedNetworkOfferingForVpcNetworks

      在一个VPC中,用LB-enabled network offering只能创建一个层。

    • 网关:你创建网络层的网关。确保网关在你创建VPC时指定的超级CIDR范围内,并且不能与已存在VPC的任何网络层的CIDR重叠。

    • VLAN: 指定系统管理员创建的层的VLAN ID号。

      这个选项只在你选择的方案在VLAN-enabled的情况下才会显示出来。

      如需要更多信息,请参考”为隔离网络分配VLAN” <hosts.html#assigning-vlans-to-isolated-networks>`_.节。

    • 子网掩码:你创建的网络层的子网掩码。

      比如,如果VPC CIDR是10.0.0.0/16并且该网络层CIDR是10.0.1.0/24,那么这个网络层的网关是10.0.1.1,子网掩码是255.255.255.0.

  7. 点击确定。

  8. 继续为层配置访问控制列表。

配置网络访问控制列表

定义网络访问控制列表(ACL),用以在VPC的层之间,或是层与互联网之间控制进出流量。默认情况下,客户网络的所有进入流量被阻止,所有外出流量被允许。一旦在外出流量方向添加了ACL,则只有ACL规则允许的流量可以被允许,其余的外出流量会被阻止。如果要开放其它端口,则需要在新的ACL中明确定义。只有在支持NetworkACL服务的条件下,只能创建层的ACL。

关于ACL列表

在CloudStack术语中,ACL指的是一组针对网络条目。其按条目规则顺序执行,从最小值开始。这些规则决定了与此ACL关联的层的进出流量是被允许还是阻止。操作的方法是添加一个ACL,然后将这个ACL与层关联。ACL在整个VPC中使用,它可以被关系到一个VPC当中多个层中。一个层能及只能关联到一个ACL中。

当没有ACL明确关联时,会有一个默认的ACL起作用。默认规则是层中所有进入流量被阻止,所有外出流量被允许默认的ACL不能被删除或修改。默认ACL的内容如下:

规则 协议 流量类型 动作 CIDR
1 所有 进入流量 拒绝 0.0.0.0/0
2 所有 外出流量 拒绝 0.0.0.0/0
创建ACL列表
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击VPC的配置按钮。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择网络ACL列表。

    在ACL页面,下面默认规则将会显示出来:default_allow, default_deny.

  6. 点击添加ACL列表,指定以下配置:

    • ACL列表名称: 为ACL列表命名。
    • 描述: ACL列表的简短描述。
创建一个ACL规则
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击VPC的配置按钮。

  5. 选择网络ACL列表。

    除了创建的你自定义的ACL列表之后,以下默认ACL规则也会显示在页面中:default_allow, default_deny.

  6. 选择需要的ACL列表。

  7. 选择ACL规则栏

    为了创建ACL规则,需要在VPC中定义下面哪些网络流量是允许的。

    • 规则序号: 规则被执行的顺序。
    • CIDR: 对于进入的规则,CIDR对源地址起作用,对于外出的规则,CIDR对目标地址起作用。如果要定义多个可接受进出流量的特定地址段,需要以逗号分隔各个CIDR。CIDR是进入流量的基IP地址。比如, 192.168.0.0/22. 如要对所有CIDR允许流量, 设置为 0.0.0.0/0.
    • 操作: 定义要进行的操作,允许或阻止。
    • 协议: 发送到层的源地址的网络协议。最终用户的访问和数据交换通常是用TCP和UDP协议。ICMP协议通常用来发送错误信息或网络监控。ALL表示支持所有协议流量,其它选项是协议编号。
    • 起始端口, 结束端口 (TCP, UDP only):对进入流量,这些端口是指需要监听的目标地址的端口范围。如果你只开放一个端口,则在起始和结束端口里填写同一个端口。
    • 协议编号: 协议编号是与IPV4或IPV6相关联的。更多信息,请参考 协议号.
    • ICMP类型, ICMP代码 (ICMP only): 信息类型及发送错误的代码。
    • 流量类型: 进出流量的类型。
  8. 点击添加。这个ACL规则就添加好了。

    你可以重新编辑ACL标签,或是删除ACL。点击详细信息里的appropriate按钮。

创建一个具有自定义ACL列表的层。
  1. 创建一个VPC。

  2. 创建一个自定义ACL列表。

  3. 将ACL规则加入ACL列表。

  4. 在VPC里创建一个层。

    在创建层的过程中选择需要的ACL列表。

  5. 点击确定。

将一个自定义的ACL关联到一个层。
  1. 创建一个VPC。

  2. 在VPC里创建一个层。

  3. 将默认的ACL规则关联到层。

  4. 创建一个自定义ACL列表。

  5. 将ACL规则加入ACL列表。

  6. 选中你希望赋予自定义ACL的层。

  7. 点击替换ACL图标。button to replace an ACL list

    替换ACL的对话界面将会弹出来。

  8. 选择需要的ACL列表。

  9. 点击确定。

在一个VPC里加入私有网关。

A private gateway can be added by the root admin only. The VPC private network has 1:1 relationship with the NIC of the physical network. You can configure multiple private gateways to a single VPC. No gateways with duplicated VLAN and IP are allowed in the same data center (but you can use different VLANs for different gateways, but with same IP ranges/networks)

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. Click the Configure button of the VPC for which you want to configure private gateway

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 点击设置图标。

    下面这些选项就会出现。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  6. 选择私有网关。

    网关对话框就会显示出来。

  7. 点击添加新网关:

    adding a private gateway for the VPC.

  8. 指定以下信息:

    • Physical Network: The physical network you have created in the zone - this is the network which caries GUEST TRAFFIC

      See “GUEST TRAFFIC for Private Gateway”.

    • IP地址: 关联VPC网关的IP地址。

    • 网关: 定义进出VPC流量的网关。

    • Netmask: VPC网关的子网掩码。

    • VLAN: VPC网关的VLAN。

    • Source NAT: 这个选项会启用VPC私有网关的source NAT服务。

      参考”私有网关的Source NAT”.

    • ACL: 控制VPC私有网关的进出流量,默认情况下,所有流量被阻止。

      参考”私有网关的ACL”.

    新的网关就会出现在列表中。你可以重复这些步骤为VPC增加更多的网关。

GUEST TRAFFIC for Private Gateway

When you provision Private Gateway with i.e. vlan id 1500, CloudStack will try to provision vlan interface with that vlan id on top of the physical interface which is defined for the selected physical network - i.e. if you defined “bond0” as the “traffic label” for the selected Physical Network, this means CloudStack will try to create “bond0.1500” vlan interface, and this will work just fine.

But in some cases, you might not be able to use current Guest Physical Network - i.e. if you are already running VXLAN as isolation method with i.e. bond0.150 being used as Traffic Label (vlan 150 caries all VXLAN tunnels) then CloudStack would try to provision “bond0.150.1500” interface, which will not work. In similar fashion, if you are using cloudbrX as Traffic Label for your Guest network (VLAN used as isolation method), this means CloudStack will try to provision “cloudbrX.1500” interface, which will also not work.

In cases described above, you would perhaps want to create additional Guest Physical Network, and specify bond0 as the Traffic Label (to comply with example values given above) - and here CloudStack will provision “bond0.1500” interface, which will work as expected.

In cases where you have 2 (or more) Guest Physical Networks, and you want one of them to be used for regular Guest Traffic (vlans, or vxlan tunnels), but you want another Guest Physical Network to be used for Private Gateway functionality (solution to the problem described above), then we need to make sure that we properly TAG both Guest Physical Networks and the needed Network Offerings - both the regular Network Offerings and also the hidden network offering that is used for Private Gateways (visible only inside DB), named “System-Private-Gateway-Network-Offering”.

For instruction on how to use tags with Physical networks and Network Offerings, please see “Tagging Guest Physical Network and Network Offerings”.

私有网关的Source NAT

你可能希望在同一个超级CIDR和客户层CIDR中部署多个VPC。因此,在一个数据中心,不同VPC中的虚拟机通过私有网络可以拥有相同的IP地址。在这种情况下,就需要在私有网关里配置Source NAT服务以避免IP冲突。如果Source NAT服务启用,VPC中的客户虚拟机使用私有网关IP地址与数据中心其它机器交流。

Source NAT服务是添加私有网关时启用。如果删除了私有网关,关联到此私有网关的Source NAT规则也会被删除。

如要有已有私有网关中启用Source NAT,需要先删除(私有网关),然后再建一个启用Source NAT的私有网关。

私有网关的ACL

VPC私有网关的进出流量是被ACL规则控制的。ACL均包含允许和阻止的规则。在每一条规则中,所有进出私有网关接口的流量是被阻止的。

你可以在创建私有网关时,改变这个默认的行为。或者,你也可以按如下方式操作:

  1. 在VPC中,验证你想操作的私有网关。

  2. 在私有网关页面,按如下步骤操作:

    • 使用快速查看视图,参考3.
    • 使用详细查看栏。参考4。
  3. 在所选择的私有网关的快速查看视图里,点击替换ACL,选中ACL规则,然后点击OK按钮。

  4. 点击你需要操作的私有网关的IP地址。

  5. 在详细查看栏。点击替换ACL按钮。button to replace an ACL list

    替换ACL的对话框就会出现。

  6. 选择ACL规则,然后点击OK按钮。

    稍等片刻。你就会看到新的ACL规则出现在详细页面里了。

创建一个静态静由。

CloudStack可以让你指定你创建的VPN链接的路由。你可以输入一个或CIDR地址来指定路由返回到网关的具体流量。

  1. 在VPC中,验证你想操作的私有网关。

  2. 在私有网关页面,点击你需要的私有网关的IP地址。

  3. 选择静态路由栏。

  4. 指定目标网络的CIDR。

  5. 点击 添加

    稍等片刻,新的路由就创建好了。

路由黑名单

CloudStack允许你定义一个路由黑名单,这样它们就不能关联到任何VPC私有网关。你需要在全局参数blacklisted.routes里定义。要注意,此参数只在新路由创建时才会生效。如果你在黑名单里加入了已存在的静态路由,则此静态路由还是会继续起作用。你不能把在路由黑名单里的路由加入到静态路由当中去。

将虚拟机部署到层。
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    所有创建好的层都会有VPC页面里列出来。

  5. 指向你想添加虚拟机的层,点击虚拟机栏。

    adding a VM to a vpc.

    添加实例的页面就会出现。

    按照屏幕所指示的操作加入实例。至于如何添加实例,参照安装指南文档。

在VPC层中部署虚拟,共享网络。

CloudStack允许你在VPC层中部署虚拟机和共享网络。有了这个功能,分布在多层当中的虚拟机可以通过共享网络接收到监控服务。

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

  2. 在左边的导航栏里,选择实例。

  3. 点击添加实例。

  4. 选择一个区域。

  5. 选择一个模板或ISO,按向导步骤操作。

  6. 请确认你的硬件支持所选择的服务方案。

  7. 在网络导航栏,选择你希望虚拟机所在的网络。

    你可以将虚拟机部署在一个拥有多个共享网络的VPC层中。

    adding a VM to a VPC tier and shared network.

  8. 点击下一步,审看已配置信息,然后点击启动。

    你的这个虚拟机就已被部署到所选择的VPC层和共享网络中。

VPC获取新的IP地址。

当获取IP地址时,所有的IP地址会被分配到该VPC,而不是VPC中的用户网络。只有当在IP或用户网络上创建第一个网络规则(端口映射、负载均衡、静态NAT)时,该IP才会关联到用户网络。一个IP不能同时关联一个以上的网络。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    下面这些选项就会出现。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择IP地址。

    公网IP地址页面就显示出来。

  6. 点击获得一个新IP, 并且在确认的对话框中点击确定.

    因为通常IP地址是有限资源,系统会提示您确认。 在稍等片刻之后,新的IP地址将会出现并且状态是已分配。现在您就可以使用这个IP地址做端口转发、负载均衡或静态NAT。

Releasing an IP Address Allocated to a VPC

IP地址是有限资源。如果您不再需要某个IP,请解除该IP和VPC的关联,使其返回到可用地址池中。只有当IP上所有的网络规则(端口映射、负载均衡、静态NAT)都删除后,该IP才能从所属层释放。释放的IP仍属于该VPC。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要释放IP的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    下面这些选项就会出现。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择公网IP地址。

    系统显示IP地址页面。

  6. 点击要释放的IP地址。

  7. 在详细查看栏,点击释放IP按钮。 button to release an IP.

VPC中启用或禁用静态NAT

静态NAT规则是将公网IP映射到VPC中虚机的私网IP,以便允许互联网流量访问该虚机。本节描述如何在VPC中启用或禁用某个公网IP地址的静态NAT。

如果该公网IP上已经有端口转发规则,则不允许再启用静态NAT。

如果用户VM存在多个网络,则静态NAT规则仅在默认网络上定义时生效。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击您要操作的IP。

  7. 在“详细信息”页,点击静态NAT按钮|enable-disable.png| 。该按钮会根据公网IP的静态NAT当前状态,在启用和禁用间切换。

  8. 如果是启用静态NAT,会显示如下对话框:

    selecting a tier to apply staticNAT.

  9. 选择层和目标虚机,然后点击“应用”。

VPC中添加负载均衡规则

在VPC中,你可以配置外部或内部负载均衡。外部负载均衡就是将VPC虚拟路由器接收到的公网流量进行转发的规则。这个流量如何在层里进行均衡取决于你的配置。Citrix NetScaler 和 VPC virtual router都支持外部负载均衡。内部均衡是在层内的虚拟之间进行均衡。比如,到达WEB层请求的流量可以转发到此层另外的虚拟机。外部负载均衡设备不支持内部均衡。内部负载均衡的服务是由目标层的内部虚拟机配置后提供支持服务的。

在层内进行负载均衡(外部负载均衡)

A CloudStack user or administrator may create load balancing rules that balance traffic received at a public IP to one or more VMs that belong to a network tier that provides load balancing service in a VPC. A user creates a rule, specifies an algorithm, and assigns the rule to a set of VMs within a tier.

在VPC层中启用基于NetScaler的负载均衡
  1. 添加并启用 Netscaler VPX独立模块。

    Netscaler只能在独立模块的形式下应用于VPC环境中。

  2. 创建启用持久化选项的网络方案。请参考”创建一个外部负载均衡网络方案”.

  3. 在VPC中创建一个基于Netscaler的公用负载均衡。

    更多信息,请参考 “添加一个VPC”.

  4. 在VPC中获取一个IP地址。

  5. 创建并应用一个外部负载均衡规则。请参考:ref:create-ext-lb-rule.

创建一个外部负载均衡网络方案

要在VPC中启用外部负载均衡支持,依如下操作建立网络方案:

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 下拉选择方案,选择网络方案:
  3. 点击添加网络方案。
  4. 在对话框中,选择如下操作:
    • 名称: 任何网络方案的名称。
    • 描述: 提供一个简短的方案描述。
    • 网络速度: 允许的数据传输速度(MB/秒)。
    • 流量类型: 允许承载的网络流量类型。
    • 来宾类型: 选择来宾网络为隔离或共享网络。
    • 持续性: 表明来宾网络是否支持持续性。无需提供任何VM部署的网络,称之为持续性网络。
    • VPC: 此选项表明是否在来宾网络中启用VPC。 CloudStack中的虚拟专用云(VPC)是专用、隔离的。 一个VPC可以有一个类似于传统物理网络的虚拟网络拓扑结构。有关的VPC的详细信息,请参考`”关于VPC” <#about-virtual-private-clouds>`_.
    • 指定: (仅隔离的来宾网络) 表明在使用这个网络方案时,是否指定VLAN。
    • 支持服务:选择负载均衡,使用Netscaler 或 VpcVirtualRouter.
    • 负载均衡类型:从下拉列表里选择公用负载均衡。
    • 负载均衡隔离: 如果使用Netscale作为外部负载均衡,选择此项进行隔离。
    • 系统方案: 选择你想在这个网络中使用的虚拟路由器的系统服务方案。
    • 保护模式: 表明是否使用保护模式。在这个模式中,只有网络中第一个虚拟机启动时才分配网络资源。
  5. 点击OK按钮,网络方案就创建好了。
创建一个外部负载均衡规则
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要配置负载均衡规则的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击你希望创建规则的IP地址,然后点击配置

  7. 在图的负载均衡节点点上,点击 查看全部。

  8. 选择应用规则的层。

  9. 指定以下信息:

    • 名称: 负载均衡规则的名称。
    • 公网端口: 接收待负载均衡的流入流量的端口。
    • 私有端口: 虚拟机会使用此端口接收流量。
    • 算法。选择您希望CloudStack 使用的负载均衡算法。CloudStack 支持下列知名的算法:
      • 轮询
      • 最少连接
      • 源IP
    • 粘性. (可选)点击配置,选择粘性策略使用的算法。参见负载均衡规则的粘性会话策略。
    • 点击添加VM,选择两个或更多的VM分担流入的流量,然后点击应用。

新的负载均衡策略会显示在列表中。您可以重复以上步骤为该IP地址添加更多的负载均衡策略。

跨越层的负载均衡

CloudStack支持在VPC内不同层之间共享工作负载。这需要先在你的环境里设置好多个层,比如WEB层,应用层。每一个层的流量通过VPC虚拟路由机进行负载均衡。关于这方面的内容, “在VPC里添加负载均衡规则”. 如果你想将WEB层发向应用层的流量进行负载均衡,需要使用Cloudstack的内部负载均衡功能。

在VPC中,内部负载均衡是如何工作的呢?

在这个图中,公网负载均衡规则是这样创建的:公网IP为IP 72.52.125.10,外网端口为80,内网端口为81。VPC的虚拟路由机创建的负载均衡规则将互联网的流量分配到WEB层的各个虚拟机上。在应用层创建了两个内部负载均衡规则。其中一个规则是:客户IP为10.10.10.4的将端口23进行负载分发,实例VM和InternalLBVM1的端口25进行了负载。另一条规则是:客户IP为10.10.10.4的将端口45进行负载分发,实例VM和InternalLBVM1的端口46进行了负载。另一条规则是:客户IP为10.10.10.6的将端口23进行负载分发,实例VM和InternalLBVM1的端口25进行了负载。(两条规则还是三条规则?原文如此,希望图示能明解)

Configuring internal LB for VPC

指南
  • 内部和公网负载均衡在一个层里往往是互斥的。如果一个层已应用了公网负载均衡之后,此层就不能再应用内部负载均衡。
  • 在 CloudStack 4.2版本中,只有VPC网络支持内部负载均衡。
  • 在CloudStack 4.2 版本中,只有Internal LB VM才能作内部负载均衡的提供方。
  • 将网络方案由内部负载均衡更改为公网负载均衡是不可行的。
  • 在VPC中,多层可以应用内部负载均衡。
  • 在VPC中,只有一层只支持公网负载均衡。
在VPC层上启用内部负载均衡功能
  1. 创建一个新的网络方案,请参考:ref:creating-net-offering-internal-lb.
  2. 创建并应用一个内部负载均衡规则。参考:ref:create-int-lb-rule.
创建一个内部负载均衡网络方案

要在VPC当中使用内部负载均衡,可以使用默认的DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB,或按如下操作新建一个网络方案:

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 下拉选择方案,选择网络方案:
  3. 点击添加网络方案。
  4. 在对话框中,选择如下操作:
    • 名称: 任何网络方案的名称。
    • 描述: 提供一个简短的方案描述。
    • 网络速度: 允许的数据传输速度(MB/秒)。
    • 流量类型: 允许承载的网络流量类型。
    • 来宾类型: 选择来宾网络为隔离或共享网络。
    • 持续性: 表明来宾网络是否支持持续性。无需提供任何VM部署的网络,称之为持续性网络。
    • VPC: 此选项表明是否在来宾网络中启用VPC。 CloudStack中的虚拟专用云(VPC)是专用、隔离的。 一个VPC可以有一个类似于传统物理网络的虚拟网络拓扑结构。有关的VPC的详细信息,请参考`”关于VPC” <#about-virtual-private-clouds>`_.
    • 指定: (仅隔离的来宾网络) 表明在使用这个网络方案时,是否指定VLAN。
    • 支持服务: 选择负载均衡,从待提供的下拉列表里选择`InternalLbVM。
    • 负载均衡类型: 从下拉列表里选择内部负载均衡。
    • 系统方案: 选择你想在这个网络中使用的虚拟路由器的系统服务方案。
    • 保护模式: 表明是否使用保护模式。在这个模式中,只有网络中第一个虚拟机启动时才分配网络资源。
  5. 点击OK按钮,网络方案就创建好了。
创建一个内部负载均衡规则

当你创建好一个内部负载均衡规则,并将之用于一个虚拟之后,一个内部负载均衡的应用就建立起来了。

你可以在实例页面中查看创建的内部LB VM 按如下导航 基础构架 > 区域 > <zone_ name> > <physical_network_name> > 网络服务提供 > 内部负载均衡虚拟机,你就可以看到已创建了内部负载均衡的实例上。也可以在此进行内部负载均衡的管理。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要配置内部负载均衡规则的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 指向你想配置内部负载均衡的层,点击内部负载均衡。

    在 Internal LB页面里,点击添加 Internal LB。

  6. 在对话框里,定义以下内容:

    • 名称: 负载均衡规则的名称。

    • 描述: 提供一个简短的规则描述。

    • 源IP地址: (可选) 是指产生流量的源IP地址。这个地址是从你创建内部负载均衡的层中的CIDR中获取的。如果没有指定,则系统会自动从CIDR中分配。

      对于每一个源IP地址,都可以建立一个针对它的内部负载均衡。

    • 源端口: 与源IP地址关联的端口,此端口上的流量是基于负载均衡的。

    • 实例端口: 内部负载均衡虚拟机的端口。

    • 算法。选择您希望CloudStack 使用的负载均衡算法。CloudStack 支持下列知名的算法:

      • 轮询
      • 最少连接
      • 源IP
在VPC里添加一个端口转发规则。
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击你希望创建规则的IP地址,然后点击配置

  7. 在图表的端口转发节点,点击查看所有。

  8. 选择应用规则的层。

  9. 指定以下信息:

    • 公用端口: 你在前面操作所获取的供公共流量使用的公用IP地址的端口。

    • 私有端口: 虚拟机实例将被转发到公共流量的监听端口。

    • Protocol: 两个端口之间所用的互联协议。

      • TCP
      • UDP
    • Add VM: 点击增加虚拟机,选择你想将此规则应用上的虚拟机,点击应用。

      你可以通过SSH连接实例来测试此规则。

删除层

你可以从一个VPC中删除一个层。一个被删除的层是不能被擦除的。当一个层被删除后,只有层的资源被删去。所有的网络规则(端口转发,负载均衡,静态NAT)还有关联到此层的IP地址都会删除。但这些IP地址仍然属于这个VPC。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 在你希望设置层的VPC里,点击配置按钮。

    配置VPC的页面显示出来了。指向你需要操作的层。

  5. 选择你想删除的层。

  6. 在网络详细栏,点击删除网络按钮。button to remove a tier

    点击YES按钮。稍等片片刻,层就会被删除了。

编辑,重启,删除VPC。

注解

在删除VPC前,需要先删除所有的层。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 选择你需要的VPC。

  5. 在详细栏,点击删除VPC按钮。button to remove a VPC

    你也可以在快速查看视图里点击删除按钮进行VPC的删除。

    You can edit the name and description of a VPC. To do that, select the VPC, then click the Edit button. button to edit.

    如果要重启一个VPC,点击重启按钮。button to restart a VPC

Tagging Guest Physical Network and Network Offerings

In cases you have more than one Guest Physical Network, you might choose to use them for different purposes - i.e. to carry all “regular” VPC Guest Traffic (vlans/vxlans) on one Guest Physical Network, but use another Guest Physical Network for VPC Private Gateway (networks which are created as part of Private Gateway).

Example above would be accomplished by assigning different tags on these two Guest Physical Networks, and then tag proper Guest Network offerings in certain way, as explained later.

To edit tags in existing zone, for Guest Physical Networks, please do the following:

  1. 用系统管理员登陆到CloudStack UI界面。
  2. Click on Infrastructure, then Zones, then particular Zone, then click on Physical Network tab, and from there select the correct Guest Network by clicking it, and again by clicking on “Guest / Configure” button.
  1. In the presented screen, click on Edit button, and then you will be able to define tag for this particular Physical Network - set it to i.e. “guestvxlan”.
  1. Repeat this step for second (and any additional) Guest Physical Networks, and make sure to use different tag for each of networks (as needed). Here we set it to “guestprivgtw”.
  1. In this example above, we are setting tag “guestvxlan” for Guest Physical Network (bond0.150) that continues to carry VXLAN tunnels for VPCs, and we set tag “guestprivgtw” for Guest Physical Network (bond0) that will carry Private Gateway guest networks.

Next, we need to edit tags on existing Guest Network Offerings. Depending on CloudStack versions, you will need to edit database records directly.

General SQL query would look like following, but please use your own judgement to reflect your environment.
mysql> update network_offerings set tags="guestvxlan" where traffic_type="Guest";

This would set tag for all existing Guest Network Offers.

Now we want to put different tag on the hidden Network Offering that is used to provision Guest networks for Private Gateways.

mysql> update network_offerings set tags="guestprivgtw" where name="System-Private-Gateway-Network-Offering";

From now one, whenever you provision regular Guest Network (private tiers, part of VPC), these networks will be created on Guest Physical Network with tag “guestvxlan”, while Private Gateway Guest networks will be created on Guest Physical Network with tag “guestprivgtw”.

持久化网络

在不部署任何VM的情况下就初始化好的网络称为持久化网络。持久化网络可以是VPC的一部分,也可以不是。

在您创建其它类型的网络时,在网络中第一台VM创建之前,该网络仅是数据库的一条记录。当第一个VM创建时,网络会指定一个VLAN ID并初始化。同样,当网络中最后一个VM销毁后,VLAN ID会被释放,这样该网络就不再可用。通过使用持久化网络,您就有能力在不部署VM的情况下在&PRODUCT;中创建一个网络用来部署物理设备。而且,您可以在该网络中部署物理设备。

使用持久化网络的一个优点是您可以创建具有一个只包含物理设备的层的VPC。例如,您可以为一个三层应用创建一个VPC,在Web层和应用层部署VM,在数据库层使用物理机器。另一个使用场景为如果您使用物理硬件提供网络服务,您可以定义网络为持久化的。这样即便网络中所有VM都销毁了,服务还可以继续提供。

持久化网络的考虑事项
  • Persistent网络是为隔离网络而设计的。
  • 所有默认网络方案都不是持久化的。
  • 网络方案的持久化选项不可编辑。因为修改该选项会影响使用该网络方案创建的已有网络的行为。
  • 当您创建客户网络时,您选择的网络方案定义了该网络的持久化。反过来,这依赖于选择的网络方案是否启用持久化网络。
  • 通过修改使用的网络方案为启用持久化的方案,现有网络可以变为持久化。在设置该属性时,即便网络中没有运行的VM,该网络也会初始化。
  • 通过修改使用的网络方案为禁用持久化的方案,现有网络可以变为非持久化。如果网络中没有运行的VM,在下次网络垃圾回收运行时,该网络会被关闭。
  • 当网络中最后一台VM销毁时,网络垃圾回收器会检查该网络的网络方案是否为持久化,若不是持久化,则会关闭网络。
创建一个Persistent客户网络

要创建一个Persistent网络,请按如下操作:

  1. 创建一个Persistent选项启用的网络方案。

    请参考`”创建一个新的网络方案” <networking.html#creating-a-new-network-offering>`_.

  2. 从左边的导航栏里选择网络。

  3. 选择你希望提供此网络方案服务的客户网络。

  4. 点击编辑按钮。

  5. 在网络方案下拉列表里,选择你刚才创建的persistent网络方案。

  6. 点击确定。

Setup a Palo Alto Networks Firewall

Functionality Provided

This implementation enables the orchestration of a Palo Alto Networks Firewall from within CloudStack UI and API.

The following features are supported:

  • List/Add/Delete Palo Alto Networks service provider
  • List/Add/Delete Palo Alto Networks network service offering
  • List/Add/Delete Palo Alto Networks network using the above service offering
  • Add an instance to a Palo Alto Networks network
  • Source NAT management on network create and delete
  • List/Add/Delete Ingress Firewall rule
  • List/Add/Delete Egress Firewall rule (both ‘Allow’ and ‘Deny’ default rules supported)
  • List/Add/Delete Port Forwarding rule
  • List/Add/Delete Static NAT rule
  • Apply a Threat Profile to all firewall rules (more details in the Additional Features section)
  • Apply a Log Forwarding profile to all firewall rules (more details in the Additional Features section)
Initial Palo Alto Networks Firewall Configuration
Anatomy of the Palo Alto Networks Firewall
  • In ‘Network > Interfaces’ there is a list of physical interfaces as well as aggregated physical interfaces which are used for managing traffic in and out of the Palo Alto Networks Firewall device.
  • In ‘Network > Zones’ there is a list of the different configuration zones. This implementation will use two zones; a public (defaults to ‘untrust’) and private (defaults to ‘trust’) zone.
  • In ‘Network > Virtual Routers’ there is a list of VRs which handle traffic routing for the Palo Alto Firewall. We only use a single Virtual Router on the firewall and it is used to handle all the routing to the next network hop.
  • In ‘Objects > Security Profile Groups’ there is a list of profiles which can be applied to firewall rules. These profiles are used to better understand the types of traffic that is flowing through your network. Configured when you add the firewall provider to CloudStack.
  • In ‘Objects > Log Forwarding’ there is a list of profiles which can be applied to firewall rules. These profiles are used to better track the logs generated by the firewall. Configured when you add the firewall provider to CloudStack.
  • In ‘Policies > Security’ there is a list of firewall rules that are currently configured. You will not need to modify this section because it will be completely automated by CloudStack, but you can review the firewall rules which have been created here.
  • In ‘Policies > NAT’ there is a list of the different NAT rules. You will not need to modify this section because it will be completely automated by CloudStack, but you can review the different NAT rules that have been created here. Source NAT, Static NAT and Destination NAT (Port Forwarding) rules will show up in this list.
Configure the Public / Private Zones on the firewall

No manual configuration is required to setup these zones because CloudStack will configure them automatically when you add the Palo Alto Networks firewall device to CloudStack as a service provider. This implementation depends on two zones, one for the public side and one for the private side of the firewall.

  • The public zone (defaults to ‘untrust’) will contain all of the public interfaces and public IPs.
  • The private zone (defaults to ‘trust’) will contain all of the private interfaces and guest network gateways.

The NAT and firewall rules will be configured between these zones.

Configure the Public / Private Interfaces on the firewall

This implementation supports standard physical interfaces as well as grouped physical interfaces called aggregated interfaces. Both standard interfaces and aggregated interfaces are treated the same, so they can be used interchangeably. For this document, we will assume that we are using ‘ethernet1/1’ as the public interface and ‘ethernet1/2’ as the private interface. If aggregated interfaces where used, you would use something like ‘ae1’ and ‘ae2’ as the interfaces.

This implementation requires that the ‘Interface Type’ be set to ‘Layer3’ for both the public and private interfaces. If you want to be able to use the ‘Untagged’ VLAN tag for public traffic in CloudStack, you will need to enable support for it in the public ‘ethernet1/1’ interface (details below).

Steps to configure the Public Interface:

  1. Log into Palo Alto Networks Firewall
  2. Navigate to ‘Network > Interfaces’
  3. Click on ‘ethernet1/1’ (for aggregated ethernet, it will probably be called ‘ae1’)
  4. Select ‘Layer3’ from the ‘Interface Type’ list
  5. Click ‘Advanced’
  6. Check the ‘Untagged Subinterface’ check-box
  7. Click ‘OK’

Steps to configure the Private Interface:

  1. Click on ‘ethernet1/2’ (for aggregated ethernet, it will probably be called ‘ae2’)
  2. Select ‘Layer3’ from the ‘Interface Type’ list
  3. Click ‘OK’
Configure a Virtual Router on the firewall

The Virtual Router on the Palo Alto Networks Firewall is not to be confused with the Virtual Routers that CloudStack provisions. For this implementation, the Virtual Router on the Palo Alto Networks Firewall will ONLY handle the upstream routing from the Firewall to the next hop.

Steps to configure the Virtual Router:

  1. Log into Palo Alto Networks Firewall
  2. Navigate to ‘Network > Virtual Routers’
  3. Select the ‘default’ Virtual Router or Add a new Virtual Router if there are none in the list
    • If you added a new Virtual Router, you will need to give it a ‘Name’
  4. Navigate to ‘Static Routes > IPv4’
  5. ‘Add’ a new static route
    • Name: next_hop (you can name it anything you want)
    • Destination: 0.0.0.0/0 (send all traffic to this route)
    • Interface: ethernet1/1 (or whatever you set your public interface as)
    • Next Hop: (specify the gateway IP for the next hop in your network)
    • Click ‘OK’
  6. Click ‘OK’
Configure the default Public Subinterface

The current implementation of the Palo Alto Networks firewall integration uses CIDRs in the form of ‘w.x.y.z/32’ for the public IP addresses that CloudStack provisions. Because no broadcast or gateway IPs are in this single IP range, there is no way for the firewall to route the traffic for these IPs. To route the traffic for these IPs, we create a single subinterface on the public interface with an IP and a CIDR which encapsulates the CloudStack public IP range. This IP will need to be inside the subnet defined by the CloudStack public range netmask, but outside the CloudStack public IP range. The CIDR should reflect the same subnet defined by the CloudStack public range netmask. The name of the subinterface is determined by the VLAN configured for the public range in CloudStack.

To clarify this concept, we will use the following example.

Example CloudStack Public Range Configuration:

  • Gateway: 172.30.0.1
  • Netmask: 255.255.255.0
  • IP Range: 172.30.0.100 - 172.30.0.199
  • VLAN: Untagged

Configure the Public Subinterface:

  1. Log into Palo Alto Networks Firewall
  2. Navigate to ‘Network > Interfaces’
  3. Select the ‘ethernet1/1’ line (not clicking on the name)
  4. Click ‘Add Subinterface’ at the bottom of the window
  5. Enter ‘Interface Name’: ‘ethernet1/1’ . ‘9999’
    • 9999 is used if the CloudStack public range VLAN is ‘Untagged’
    • If the CloudStack public range VLAN is tagged (eg: 333), then the name will reflect that tag
  6. The ‘Tag’ is the VLAN tag that the traffic is sent to the next hop with, so set it accordingly. If you are passing ‘Untagged’ traffic from CloudStack to your next hop, leave it blank. If you want to pass tagged traffic from CloudStack, specify the tag.
  7. Select ‘default’ from the ‘Config > Virtual Router’ drop-down (assuming that is what your virtual router is called)
  8. Click the ‘IPv4’ tab
  9. Select ‘Static’ from the ‘Type’ radio options
  10. Click ‘Add’ in the ‘IP’ section
  11. Enter ‘172.30.0.254/24’ in the new line
    • The IP can be any IP outside the CloudStack public IP range, but inside the CloudStack public range netmask (it can NOT be the gateway IP)
    • The subnet defined by the CIDR should match the CloudStack public range netmask
  12. Click ‘OK’
Commit configuration on the Palo Alto Networks Firewall

In order for all the changes we just made to take effect, we need to commit the changes.

  1. Click the ‘Commit’ link in the top right corner of the window
  2. Click ‘OK’ in the commit window overlay
  3. Click ‘Close’ to the resulting commit status window after the commit finishes
Setup the Palo Alto Networks Firewall in CloudStack
Add the Palo Alto Networks Firewall as a Service Provider
  1. Navigate to ‘Infrastructure > Zones > ZONE_NAME > Physical Network > NETWORK_NAME (guest) > Configure; Network Service Providers’
  2. Click on ‘Palo Alto’ in the list
  3. Click ‘View Devices’
  4. Click ‘Add Palo Alto Device’
  5. Enter your configuration in the overlay. This example will reflect the details previously used in this guide.
    • IP Address: (the IP of the Palo Alto Networks Firewall)
    • Username: (the admin username for the firewall)
    • Password: (the admin password for the firewall)
    • Type: Palo Alto Firewall
    • Public Interface: ethernet1/1 (use what you setup earlier as the public interface if it is different from my examples)
    • Private Interface: ethernet1/2 (use what you setup earlier as the private interface if it is different from my examples)
    • Number of Retries: 2 (the default is fine)
    • Timeout: 300 (the default is fine)
    • Public Network: untrust (this is the public zone on the firewall and did not need to be configured)
    • Private Network: trust (this is the private zone on the firewall and did not need to be configured)
    • Virtual Router: default (this is the name of the Virtual Router we setup on the firewall)
    • Palo Alto Threat Profile: (not required. name of the ‘Security Profile Groups’ to apply. more details in the ‘Additional Features’ section)
    • Palo Alto Log Profile: (not required. name of the ‘Log Forwarding’ profile to apply. more details in the ‘Additional Features’ section)
    • Capacity: (not required)
    • Dedicated: (not required)
  6. Click ‘OK’
  7. Click on ‘Palo Alto’ in the breadcrumbs to go back one screen.
  8. Click on ‘Enable Provider’ button to enable or disable feature.
Add a Network Service Offering to use the new Provider

There are 6 ‘Supported Services’ that need to be configured in the network service offering for this functionality. They are DHCP, DNS, Firewall, Source NAT, Static NAT and Port Forwarding. For the other settings, there are probably additional configurations which will work, but I will just document a common case.

  1. Navigate to ‘Service Offerings’
  2. In the drop-down at the top, select ‘Network Offerings’
  3. Click ‘Add Network Offering’
    • Name: (name it whatever you want)
    • Description: (again, can be whatever you want)
    • Guest Type: Isolated
    • Supported Services:
      • DHCP: Provided by ‘VirtualRouter’
      • DNS: Provided by ‘VirtualRouter’
      • Firewall: Provided by ‘PaloAlto’
      • Source NAT: Provided by ‘PaloAlto’
      • Static NAT: Provided by ‘PaloAlto’
      • Port Forwarding: Provided by ‘PaloAlto’
    • System Offering for Router: System Offering For Software Router
    • Supported Source NAT Type: Per account (this is the only supported option)
    • Default egress policy: (both ‘Allow’ and ‘Deny’ are supported)
  4. Click ‘OK’
  5. Click on the newly created service offering
  6. Click ‘Enable network offering’ button to enable or disable feature.

When adding networks in CloudStack, select this network offering to use the Palo Alto Networks firewall.

Additional Features

In addition to the standard functionality exposed by CloudStack, we have added a couple additional features to this implementation. We did not add any new screens to CloudStack, but we have added a couple fields to the ‘Add Palo Alto Service Provider’ screen which will add functionality globally for the device.

Palo Alto Networks Threat Profile

This feature allows you to specify a ‘Security Profile Group’ to be applied to all of the firewall rules which are created on the Palo Alto Networks firewall device.

To create a ‘Security Profile Group’ on the Palo Alto Networks firewall, do the following:

  1. Log into the Palo Alto Networks firewall
  2. Navigate to ‘Objects > Security Profile Groups’
  3. Click ‘Add’ at the bottom of the page to add a new group
  4. Give the group a Name and specify the profiles you would like to include in the group
  5. Click ‘OK’
  6. Click the ‘Commit’ link in the top right of the screen and follow the on screen instructions

Once you have created a profile, you can reference it by Name in the ‘Palo Alto Threat Profile’ field in the ‘Add the Palo Alto Networks Firewall as a Service Provider’ step.

Palo Alto Networks Log Forwarding Profile

This feature allows you to specify a ‘Log Forwarding’ profile to better manage where the firewall logs are sent to. This is helpful for keeping track of issues that can arise on the firewall.

To create a ‘Log Forwarding’ profile on the Palo Alto Networks Firewall, do the following:

  1. Log into the Palo Alto Networks firewall
  2. Navigate to ‘Objects > Log Forwarding’
  3. Click ‘Add’ at the bottom of the page to add a new profile
  4. Give the profile a Name and specify the details you want for the traffic and threat settings
  5. Click ‘OK’
  6. Click the ‘Commit’ link in the top right of the screen and follow the on screen instructions

Once you have created a profile, you can reference it by Name in the ‘Palo Alto Log Profile’ field in the ‘Add the Palo Alto Networks Firewall as a Service Provider’ step.

局限性
  • The implementation currently only supports a single public IP range in CloudStack
  • Usage tracking is not yet implemented

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

Using Remote Access VPN

Remote Access VPN connection to VPC or Guest Network to access Instances and applications. This section consider you have enable Remonte acccess VPN, refer to: 远程访问VPN.

When connected to a VPC via VPN, the client have access to all Tiers.

Following information is required to confiture VPN client:

  • Public IP: source NAT with VPN enabled.
  • IPsec pre-shared key: Provide at the VPN activation.
  • Username VPN account username.
  • Password VPN account password.

Mac OSX

Mac OSX provide native IPsec VPN client.

  1. Into System Preferences -> Network

  2. Click “+” button and add a VPN:

    • Interface: VPN
    • VPN Type: L2TP over IPSec
    • Service Name: (ex: test-vpc1)
    _images/osxvpn_netconf.png
  3. Configure L2TP over IPsec

    _images/osxvpn_form1.png _images/osxvpn_form2.png
  4. Inside Authentication Settings…

    _images/osxvpn_form3.png
  5. Connect into VPN

    1. Click Apply to apply Network configuration changes.

    2. Click Connect to initiate VPN connection.

      _images/osxvpn_connected.png

Microsoft Windows

Following instruction have been perform using Windows 8.1 using Native VPN client.

  1. Create network VPN connection

    _images/win1.png _images/win2.png _images/win3.png _images/win4.png _images/win5.png _images/win6.png
  2. Configure VPN settings

    _images/win7.png _images/win8.png _images/win9.png _images/win10.png _images/win11.png
  3. Initiate VPN connection

    _images/win12.png _images/win13.png _images/win14.png

Ubuntu

Following instruction have been perform using Ubuntu 17.10 using the network-manager-l2tp-gnome.

  1. Add VPN connection using network manager:

    _images/ubuntu1.png
  2. Configure VPN settings:

    _images/ubuntu2.png _images/ubuntu3.png
  3. Add routing as required:

    _images/ubuntu4.png
  4. Initiate VPN connection

    _images/ubuntu5.png

管理云

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

管理云

在云中使用Tags来组织资源。

标签是一类存储云中资源元数据的键值对。其主要用来分类资源,例如,可以将一个用户的虚拟机打上标签,以表明用户所在的城市。在这个例子中,键就是城市,而值可能是Toronto或是Tokyo。可以让cloudstack发现所有打上标签的资源。例如,发现指定城市里用户的虚拟机。

可以给用户虚拟机,磁盘卷,快照,来宾网络,模板,ISO镜像,防火墙规则,端口转发规则,公共IP地址,安全组,负载均衡规则,项目,VPC,网络访问列表或者静态路由器等等,都打上标签。但不能给远程登录VPN打上标签。

可以通过CloudStack的界面或者API来创建标签,删除标签或者列出标签。也可以为每一个资源定义多个标签。没有数量的限制。并且,每个标签可以达到255个字符的长度。用户可以定义自己拥有的资源的标签,而管理员可以定义云中所有资源的标签。

一个可选的输入参数,标签,存在于多个API中。下面的例子展示了如何应用这个新参数来查找带有 地域=加拿大或城市=多伦多 标签的所有磁盘卷。

command=listVolumes
   &listAll=true
   &tags[0].key=region
   &tags[0].value=canada
   &tags[1].key=city
   &tags[1].value=Toronto

下面的API命令具有以下输入参数:

  • listVirtualMachines
  • listVolumes
  • listSnapshots
  • listNetworks
  • listTemplates
  • listIsos
  • listFirewallRules
  • listPortForwardingRules
  • listPublicIpAddresses
  • listSecurityGroups
  • listLoadBalancerRules
  • listProjects
  • listVPCs
  • listNetworkACLs
  • listStaticRoutes

CPU Sockets报表

CloudStack manages different types of hosts that contains one or more physical CPU sockets. CPU socket is considered as a unit of measure used for licensing and billing cloud infrastructure. CloudStack provides both UI and API support to collect the CPU socket statistics for billing purpose. The Infrastructure tab has a new tab for CPU sockets. You can view the statistics for CPU sockets managed by CloudStack, which in turn reflects the size of the cloud. The CPU Socket page will give you the number of hosts and sockets used for each host type.

  1. Log in to the CloudStack UI.

  2. 在左侧导航栏中,点击基础架构

  3. 在CPU Sockets中,点击查看全部。

    显示CPU插槽页。此页会显示主机数量以及基于虚拟机类型的CPU插槽数量。

更改数据库配置

CloudStack管理服务器存储了数据库配置信息(如主机名,端口,凭证),这些信息在/etc/cloudstack/management/db.properties文件中,为使更改生效,编辑每个管理服务器上的此文件,然后重启管理服务器

更改数据库密码

可能会需要更改CloudStack使用的mysql账户密码。如果要更改,需要在MySQL中更改密码,同时要将加密的密码加入到/etc/cloudstack/management/db.properties文件中。

  1. 在更改密码之前,需要停止CloudStack管理服务器,如果部署了使用引擎,也需要关闭使用引擎。

    # service cloudstack-management stop
    # service cloudstack-usage stop
    
  2. 接下来,你将在MySQL服务器上更新CloudStack的用户密码。

    # mysql -u root -p
    

    在MySQL命令行下,你将更改密码并且刷新权限:

    update mysql.user set password=PASSWORD("newpassword123") where User='cloud';
    flush privileges;
    quit;
    
  3. 下一步是加密密码然后拷贝加密后的密码到CloudStack的数据库配置中(/etc/cloudstack/management/db.properties)。

    # java -classpath /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar \ org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI encrypt.sh \ input="newpassword123" password="`cat /etc/cloudstack/management/key`" \ verbose=false
    

文件加密类型

请注意这是给文件加密类型准备的。如果你使用web加密类型,那么你要使用password=”management_server_secret_key”
  1. 现在,你会在 /etc/cloudstack/management/db.properties 中更新心的密文。使用文本编辑器打开``/etc/cloudstack/management/db.properties`` ,然后更新这些参数:

    db.cloud.password=ENC(encrypted_password_from_above)
    db.usage.password=ENC(encrypted_password_from_above)
    
  2. 在复制新的密码过去之后,你可以启动CloudStack了(如果需要的话,还有用量引擎)。

    # service cloudstack-management start
    # service cloud-usage start
    

管理员告警信息

系统提供告警和事件用以帮助云的管理。告警通知管理员,一般用邮件发送,提醒管理员云中有错误发生。告警的行为可以进行配置。

事件会追踪云中所有用户和管理员的操作事件。比如,每个客户虚拟机的启动会建立一个对应的事件。每个时间都存储在管理节点的数据库中。

在以下情况,系统会发送邮件给管理员:

  • 管理节点集群中CPU,内存或者存储资源的可用量低。
  • 管理节点和主机之间的心跳检查丢失超过3分钟。
  • 主机集群中CPU,内存或者存储资源的可用量低。
将警告发送给外部的SNMP和Syslog管理器

除了在CloudStack UI中的仪表板上给管理员显示警告和发送电子邮件之外,CloudStack还可以发送同样的警告给外部的SNMP或者Syslog管理软件。如果你更愿意使用SNMP或者Syslog管理器来监视你的云的话,那这么做很有用。

可以发送的警告有:

以下是告警类型的列表。当前告警可以通过调用listAlerts得知。

MEMORY = 0 // Available Memory below configured threshold
CPU = 1 // Unallocated CPU below configured threshold
STORAGE =2 // Available Storage below configured threshold
STORAGE_ALLOCATED = 3 // Remaining unallocated Storage is below configured threshold
PUBLIC_IP = 4 // Number of unallocated virtual network public IPs is below configured threshold
PRIVATE_IP = 5 // Number of unallocated private IPs is below configured threshold
SECONDARY_STORAGE = 6 //  Available Secondary Storage in availability zone is below configured threshold
HOST = 7 // Host related alerts like host disconnected
USERVM = 8 // User VM stopped unexpectedly
DOMAIN_ROUTER = 9 // Domain Router VM stopped unexpectedly
CONSOLE_PROXY = 10 // Console Proxy VM stopped unexpectedly
ROUTING = 11 // Lost connection to default route (to the gateway)
STORAGE_MISC = 12 // Storage issue in system VMs
USAGE_SERVER = 13 // No usage server process running
MANAGMENT_NODE = 14 // Management network CIDR is not configured originally
DOMAIN_ROUTER_MIGRATE = 15 // Domain Router VM Migration was unsuccessful
CONSOLE_PROXY_MIGRATE = 16 // Console Proxy VM Migration was unsuccessful
USERVM_MIGRATE = 17 // User VM Migration was unsuccessful
VLAN = 18 // Number of unallocated VLANs is below configured threshold in availability zone
SSVM = 19 // SSVM stopped unexpectedly
USAGE_SERVER_RESULT = 20 // Usage job failed
STORAGE_DELETE = 21 // Failed to delete storage pool
UPDATE_RESOURCE_COUNT = 22 // Failed to update the resource count
USAGE_SANITY_RESULT = 23 // Usage Sanity Check failed
DIRECT_ATTACHED_PUBLIC_IP = 24 // Number of unallocated shared network IPs is low in availability zone
LOCAL_STORAGE = 25 // Remaining unallocated Local Storage is below configured threshold
RESOURCE_LIMIT_EXCEEDED = 26 //Generated when the resource limit exceeds the limit. Currently used for recurring snapshots only

通过调用API命令 listAlerts,你还可以显示最新的列表。

SNMP警告详情

支持SNMP v2。

每个SNMP陷阱报错以下信息:message、podId、dataCenterId、clusterId和generationTime。

Syslog警报详情

CloudStack为每个警告生成一个syslog信息。每个syslog信息包含下列格式的字段alertType、message、podId、dataCenterId和clusterId。如果任何字段没有有效值的话,它将不会包含在内。

Date severity_level Management_Server_IP_Address/Name  alertType:: value dataCenterId:: value  podId:: value  clusterId:: value  message:: value

例如:

Mar  4 10:13:47    WARN    localhost    alertType:: managementNode message:: Management server node 127.0.0.1 is up
配置SNMP和Syslog日志管理

要配置一个或多个SNMP管理器或者Syslog管理器来接收来自CloudStack 的警告:

  1. 对于SNMP管理器,一个安装在你的SNMP管理系统上安装的CloudStack MIB文件。它映射SNMP OIDs到陷阱类型,目的让用户更容易阅读。这个文件必须是公开的。关于如何安装这个文件的更多信息,参阅SNMP管理器提供的文档。

  2. 编辑 /etc/cloudstack/management/log4j-cloud.xml文件。

    # vi /etc/cloudstack/management/log4j-cloud.xml
    
  3. 使用下面给出的语法添加一个条目。选择你是要添加一个SNMP管理器还是一个Syslog管理器,然后按照适当的示例操作。要指定多个外部管理器,使用逗号(,)将IP地址和其他配置值隔开。

    注解

    SNMP或Syslog管理器推荐的最大值是20。

    下面的例子展示了如果配置两个IP分别为10.1.1.1和10.1.1.2的SNMP管理器。在实际使用中请替换成你的IP、ports和communities。不要改变其他值(name、threshold、class和layout值)。

    <appender name="SNMP" class="org.apache.cloudstack.alert.snmp.SnmpTrapAppender">
      <param name="Threshold" value="WARN"/>  <!-- Do not edit. The alert feature assumes WARN. -->
      <param name="SnmpManagerIpAddresses" value="10.1.1.1,10.1.1.2"/>
      <param name="SnmpManagerPorts" value="162,162"/>
      <param name="SnmpManagerCommunities" value="public,public"/>
      <layout class="org.apache.cloudstack.alert.snmp.SnmpEnhancedPatternLayout"> <!-- Do not edit -->
        <param name="PairDelimeter" value="//"/>
        <param name="KeyValueDelimeter" value="::"/>
      </layout>
    </appender>
    

    下面的例子展示了如果配置两个IP分别为10.1.1.1和10.1.1.2的Syslog管理器。在实际是使用中请替换成你的IP。你可以设置Facility为任何syslog-defined的值,如 LOCAL0 - LOCAL7。不要改变其他的值。

    <appender name="ALERTSYSLOG">
      <param name="Threshold" value="WARN"/>
      <param name="SyslogHosts" value="10.1.1.1,10.1.1.2"/>
      <param name="Facility" value="LOCAL6"/>
      <layout>
        <param name="ConversionPattern" value=""/>
      </layout>
    </appender>
    
  4. 如果你的云有多个管理服务器节点,在编辑每个节点中log4j-cloud.xml的时候,重复这些步骤。

  5. 当管理服务器正在运行的时候,你做了这些变更,等待一会让变更生效。

**排错:**如果一段之后,在配置的SNMP或者Syslog管理器中没有警告出现,那么log4j-cloud.xml中<appender>的语法可能有错误。检查并确定格式和设置都是正确的。

删除SNMP或Syslog日志管理

要移除一个外部SNMP管理器或者Syslog管理器以便它不再接收来自CloudStack 的警告,请删除``/etc/cloudstack/management/log4j-cloud.xml``文件中对应的条目。

自定义网络域名

根管理员在网络, 帐户,域, 资源域以及整个CloudStack级别可选择设置DNS后缀,域管理员可以在自己的域做这样的设置。要自定义域名并使其有效, 请按照下面的步骤操作。

  1. 在所需的范围内设置DNS后缀
    • 在网络级别中, DNS后缀可以通过UI在创建新的网络时设置, 这些在 “添加额外的来宾网络” 或CloudStack API的updateNetwork命令中都有描述.
    • 在帐户、域或者区域级别,DNS后缀可以由以下CloudStack API命令:createAccount、editAccount、createDomain、editDomain、createZone或editZone指定。
    • 在全局级别中,使用配置参数guest.domain.suffix。你也可以使用CloudStack API命令updateConfiguration。当更改了这个全局配置后,重启管理服务器的服务以便新的设置有效。
  2. 为了使你的新DNS后缀对已经存在的网络有效,你需要调用CloudStack API命令updateNetwork。对于DNS后缀已经更改后新建的网络这一步不是必需的。

你使用的网络域的源取决于下面的一些规则。

  • 对于所有的网络,如果网络域作为这个网络自己配置的一部分,那这个网络域的值会被使用。
  • 对于账户指定的网络,为这个账户指定的网域会被使用。如果没有指定,系统会按照域,区域和全局配置的顺序查找网域的值。
  • 对于域指定的网络, 为这个域指定的网络域名会被使用. 如果没有指定, 系统会区域和全局配置中按顺序查找网络域名的值.
  • 对于区域指定的网络, 为这个域指定的网络域名会被使用. 如果没有指定, 系统会在全局配置里查找网络域名的值.

停止和重启管理服务

超级管理员需要经常性的关闭和重启管理服务。

例如,修改全局配置参数之后,要求重启管理服务器。如果您有多个管理服务器节点,请全部重启,以便使新参数值在整个云中生效。

要停止管理服务,在管理服务节点所在的操作系统中运行如下命令:

# service cloudstack-management stop

启动管理服务:

# service cloudstack-management start

系统可靠性和可用性

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

系统可靠性与高可用性

管理服务器的HA

CloudStack管理服务器可以部署为多节点的配置,使得它不容易受到单个服务器故障影响。管理服务器(不同于MySQL数据库)本身是无状态的,可以被部署在负载均衡设备后面。

停止的所有管理服务不会影响主机的正常操作。所有来宾VM将继续工作。

当管理主机下线后,不能创建新的VMs、最终用户,管理UI、API、动态负载以及HA都将停止工作。

管理服务器负载均衡

CloudStack可以使用负载均衡器为多管理服务器提供一个虚拟IP。管理员负责创建管理服务器的负载均衡规则。应用程序需要跨多个持久性或stickiness的会话。下表列出了需要进行负载平衡的端口和是否有持久性要求。

即使不需要持久性,也使它是允许的。

源端口 目标端口 协议 持续请求
80或者443 8080 (或者 20400 with AJP) HTTP (或者AJP)
8250 8250 TCP
8096 8096 HTTP

除了上面的设置,管理员还负责设置‘host’全局配置值,由管理服务器IP地址更改为负载均衡虚拟IP地址。如果‘host’值未设置为VIP的8250端口并且一台管理服务器崩溃时,用户界面依旧可用,但系统虚拟机将无法与管理服务器联系。

启用了HA的虚拟机

用户可以给指定的虚拟机开启高可用特性。默认情况下所有的虚拟路由虚拟机和弹性负载均衡虚拟机自动开启了高可用特性。当CloudStack检测到开启了高可用特性的虚拟机崩溃时将会在相同的可用资源与中自动重新启动该虚拟机。高可用特性不会跨资源域执行。CloudStack采用比较保守的方式重启虚拟机,以确使不会同时运行两个相同的实例。管理服务器会尝试在本集群的另一台主机上开启该虚拟机。

高可用特性只在使用iSCSI和NFS做主存储的时候才可以使用。不支持使用本地存储作为主存储的高可用。

主机的HA

用户可以给指定的虚拟机开启高可用特性。默认情况下所有的虚拟路由虚拟机和弹性负载均衡虚拟机自动开启了高可用特性。当CloudStack检测到开启了高可用特性的虚拟机崩溃时将会在相同的可用资源与中自动重新启动该虚拟机。高可用特性不会跨资源域执行。CloudStack采用比较保守的方式重启虚拟机,以确使不会同时运行两个相同的实例。管理服务器会尝试在本集群的另一台主机上开启该虚拟机。

高可用特性只在使用iSCSI和NFS做主存储的时候才可以使用。不支持使用本地存储作为主存储的高可用。

专用的HA主机

一台或更多台主机可以被设计为只有启用HA的VMs才能使用,这些VMs在主机出现问题的时候会重启。出于灾难恢复目的为所有启用了HA的VMs设置一个像专用HA主机这样的池是有用的:

  • 确定哪些VMs作为CloudStack高可用功能的一部分而重启是比较容易的。如果一个VM正运行在专用的HA主机上,那么它必须是一个启用了HA的,从失败的主机上迁移过来的VM。(有一个例外:它可能是管理员手工迁移过来的任何VM。)。
  • 出于其他目的,可能保留一些启用了HA的VMs在主机上不要重启。

当创建了主机之后,通过指定一个主机标签来设置专用HA选项。要允许管理员只给启用了HA的VMs制定专用主机,请设置全局配置变量ha.tag为想要的tag(比如, “ha_host”),并且重启管理服务器。当添加你想给启用HA的VMs配置专用主机(s )时,在主机标签区域中输入值。

注解

如果你设置ha.tag,请确认在你的云中至少有一台主机真的在使用该标签。如果在ha.tag中没有为云中的任何主机设置指定的标签,那么启用了HA的VMs在崩溃之后不会重启。

主存储故障和数据丢失

当主存储发生故障,hypervisor 立即停止该存储设备上存储的所有虚拟机。客户机被标记为当主存储重新上线时,HA根据实际情况尽快将重新启动。使用NFS时,hypervisor 可以允许虚拟机继续运行,这取决于问题的性质。例如,NFS挂起将导致客户虚拟机暂停,直至恢复存储连接。主存储没有被设计进行备份。在主存储中的单个卷,可以使用快照备份。

二级存储的故障和数据丢失

由于一个资源域只有一个二级存储服务器,二级存储的中断将会对系统的一些功能产生影响,但不影响正在运行的客户虚拟机。可能会让用户无法选择模版来创建虚拟机。用户也可能无法保存快照,检查或恢复已保存的快照。当二级存储恢复连接后,这些功能也就可以自动恢复。

二级存储的数据丢失将会影响最近添加的用户数据,包括模版、快照、和ISO镜像。二级存储应该进行定期备份。为每个资源域提供多个二级存储服务器能够增强系统的可扩展性。

数据库的高可用

为了确保存储CloudStack内部数据的数据库的高可用性,你可以设置数据库复制。这涉及到所有CloudStack主数据库和用量数据库。复制是指完全使用MySQL连接参数和双向复制。MySQL 5.1和5.5已测试通过。

如何设置数据库复制

CloudStack中的数据库复制是由MySQL复制功能提供的。设置复制的步骤可在MySQL的文档中找到(链接在下面提供)。它建议你设置双向复制,涉及两个数据库节点。在这个情形下,比如,你可能有node1和node2。

你同样可以设置链式复制,这涉及到多于两个节点。在这个情况下,你可以先设置node1和node2的双向复制。然后,设置node2和node3的单向复制。在设置node3和node4的单向复制,其他所有的节点依次类推。

参考文献:

配置数据库高可用

要控制数据库高可用特性,在/etc/cloudstack/management/db.properties文件中使用以下配置设置。

需求设置

确定你在 db.properties中使用了以下设置:

  • db.ha.enabled:如果你想使用复制功能,请设置为true。

    例如:db.ha.enabled=true

  • db.cloud.slaves:为云数据库设置多台slave主机,用逗号隔开。这是用于复制的节点清单。主节点不在列表中,因为在属性文件中的别处已经使用了它。

    例如:db.cloud.slaves=node2,node3,node4

  • db.usage.slaves:为用量数据库设置多台slave主机,用逗号隔开。这是用于复制的节点清单。主节点不在列表中,因为在属性文件中的别处已经使用了它。

    例如:db.usage.slaves=node2,node3,node4

可选的设置

必须在db.properties中提供以下设置,但是你不用改变默认值除非你希望做一些优化:

  • db.cloud.secondsBeforeRetryMaster:在master宕机之后,MySQL连接器重试连接到master之前所等待的秒数。默认是1小时。如果首先达到了db.cloud.queriesBeforeRetryMaster 的限制,重试可能更早发生。

    例如:db.cloud.secondsBeforeRetryMaster=3600

  • db.cloud.queriesBeforeRetryMaster:在master宕机之后,重新尝试连接到master之前向数据库查询的最小次数。默认值是5000。如果首先达到了db.cloud.secondsBeforeRetryMaster的限制,重试可能更早发生。

    例如:db.cloud.queriesBeforeRetryMaster=5000

  • db.cloud.initialTimeout:在重新尝试连接至master之前,MySQL连接器等待的初始时间。默认是3600。

    例如:db.cloud.initialTimeout=3600

数据库高可用性的限制

目前此功能的实现还存在下列限制。

  • Slave主机不能被CloudStack监控。你必须有单独的监控手段。
  • 数据库端的事件没有集成到CloudStack管理服务器事件系统。
  • 你必须定期的执行手动清除由数据库节点复制产生的二进制log文件。如果你不清理log文件,磁盘就会被占满。

Plugins

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

contributor license agreements. See the NOTICE file distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Quota Plugin

Quota service, while allowing for scalability, will make sure that the cloud is not exploited by attacks, careless use and program errors. To address this problem, employ the quota-enforcement service that allows resource usage within certain bounds as defined by policies and available quotas for various entities. Quota service extends the functionality of usage server to provide a measurement for the resources used by the accounts and domains using a common unit referred to as cloud currency in this document. It can be configured to ensure that your usage won’t exceed the budget allocated to accounts/domain in cloud currency. It will let user know how much of the cloud resources he is using. It will help the cloud admins, if they want, to ensure that a user does not go beyond his allocated quota. Per usage cycle if an account is found to be exceeding its quota then it is locked. Locking an account means that it will not be able to initiate a new resource allocation request, whether it is more storage or an additional ip. To unlock an account you need to add more credit to it. In case you want the locking to be disabled on global or on account scope those provisions are also provided. Needless to say quota service as well as any action on the account is configurable.

Enabling the Quota Service

Before installing and configuring the quota service you need to make sure that the Usage Server has been installed. This requires extra steps beyond just installing the CloudStack software. See Installing the Usage Server (Optional) in the Advanced Installation Guide.

  1. enable.usage.server: Set to true to enable usage server.

The quota plugin is disabled by default. To enable it goto Global Settings and set the following global configuration to true:

  1. quota.enable.service

By default Quota service does not lock the accounts that have exceeded the quota usage. To enable quota service to lock accounts set the following global configuration to true:

  1. quota.enable.enforcement

The other configurations that are there for quota service are as:

  1. quota.currency.symbol : The symbol that is used before any currency figure in various quota forms and reports.
  2. quota.usage.smtp.host: Quota SMTP host for sending quota alerts.
  3. quota.usage.smtp.port: Quota SMTP port.
  4. quota.usage.smtp.user: Quota SMTP user.
  5. quota.usage.smtp.password: Quota SMTP password.
  6. quota.usage.smtp.sender: Quota SMTP alert sender email address.
  7. quota.usage.smtp.useAuth: If true, use secure SMTP authentication when sending emails.
  8. quota.usage.smtp.connection.timeout: Quota SMTP server connection timeout duration.

There are several configuration variables that are inherited from usage server, these are listed below:

  1. usage.aggregation.timezone

All these are described in details in Usage Server documentation.

Restart the Management Server and the Usage Server to enable the set configuration values.

service cloudstack-management restart
service cloudstack-usage restart

Once the quota service is running it will calculate the quota balance for each account. The quota usage is calculated as per the quota tariff provided by the site administrator.

Quota Tariff

The following table shows all quota types for which you can specify tariff.

Type ID Type Name Tariff Description
1 RUNNING_VM One month of running Compute-Month
2 ALLOCATED_VM One month of allocated VM
3 IP_ADDRESS Quota for a month of allocated IP
4 NETWORK_BYTES_SENT Quota for 1GB bytes sent
5 NETWORK_BYTES_RECEIVED Quota for 1GB bytes sent
6 VOLUME Quota for 1 GB of Volume use for a month
7 TEMPLATE
Quota for 1 GB of

Template use for a month

8 ISO Quota for 1 GB of ISO use for a month
9 SNAPSHOT
Quota for 1 GB of

SNAPSHOT use for a month

11 LOAD_BALANCER_POLICY Quota for load balancer policy month
12 PORT_FORWARDING_RULE
Quota for port forwarding
policy month
13 NETWORK_OFFERING Quota for network Offering for a month
14 VPN_USERS
Quota for VPN usage
for a month
15 CPU_CLOCK_RATE The tariff for using 1 CPU i100 MHz clock
16 CPU_NUMBER The quota tariff for using 1 virtual CPU.
17 MEMORY The quota tariff for using 1MB RAM size.

The quota tariff can be listed using listQuotaTariff API.

quotaTariff: Lists all quota tariff plans

The tariff for each of the above can be set by using the updateQuotaTariff API.

Quota Credits

The quota credit (quotaCredit) API lets you add or remove quota currency credits to an account. With this API you can also control the quota enforcement policy at account level. This will enable you to have some accounts where the quota policy is not enforced. The overall quota enforcement is controlled by the quota.enable.enforcement global setting.

In addition to above the quota API lets you can fine tune the alert generation by specifying the quota threshold for each account. If not explictly stated, the threshold is taken as 80% of the last deposit.

Quota Balance

Quota balance API states the start balance and end balance(optional) from a start date to end date (optional).

Quota Statement

Quota statement for a period consist of the quota usage under various quota types for the given period from a start date to an end date.

Quota Monthly Statement

Quota service emails the monthly quota statement for the last month at the beginning of each month. For this service to work properly you need to ensure that the usage server is running.

Quota Alert Management

Quota module also provides APIs to customize various email templates that are used to alert account owners about quota going down below threshold and quota getting over.

All the above functionality is also available via quota UI plugin.

调优

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

调优

本节提示如何提高云性能。

性能监控

终端用户和管理员都能使用宿主机和虚拟机的性能监控。性能监控将允许用户监控他们的资源利用并且帮助用户决定何时将需要选择一个更高性能的服务或者更大的硬盘。

增加管理服务器到最大内存

如果管理服务器用于高需求,默认JVM的最大内存分配可能不足。增加内存:

  1. 编辑Tomcat配置文件:

    /etc/cloudstack/management/tomcat6.conf
    
  2. 改变命令行参数 -XmxNNNm中的N为更高的值。

    例如,如果当前值为 -Xmx128m,则改为 -Xmx1024m或更高。

  3. 将新的设置生效,重启管理服务。

    # service cloudstack-management restart
    

欲了解更多管理内存问题的详细信息,请参阅”FAQ:内存” 在 Tomcat Wiki.

设置数据库缓冲池大小

为MySQL数据库提供足够的内存空间来缓存数据和索引是很重要的:

  1. 编辑MySQL配置文件:

    /etc/my.cnf
    
  2. 在 [mysqld]部分的datadir下面插入如下行。使用适合您情况的值。如果MySQL和管理服务器在同一台服务器上面我们建议设置缓冲池为内存的40%,如果MySQL为专用的服务器我们建议设置为内存的70%。下面的示例假设一台专用的服务器的内存为1024M。

    innodb_buffer_pool_size=700M
    
  3. 重启MySQL服务.

    # service mysqld restart
    

欲了解更多关于缓冲池的信息,请参阅”InnoDB缓冲池” `MySQL参考手册<http://dev.mysql.com/doc/refman/5.5/en/innodb-buffer-pool.html>`_.

设置和监控每个主机的总VM数限制

管理员应该监视每个集群中的虚拟机实例的总数,如果总量快达到hypervisor允许的最大虚拟机数量时,不再向此群集分配虚拟机。并且,要注意为主机预留一定的计算能力,以防止群集中有主机发生故障,因为发生故障的主机上的虚拟机需要重新部署在这些预留主机上。请咨询您所选择hypervisor的文档,了解此hypervisor能支持的最大虚拟机数量,并将此数值设置在CloudStack的全局设置里。监控每个群集里虚拟机的活跃程序,并将活跃虚拟机保持在一个安全线内。这样,CloudStack就能允许偶尔的主机故障。举个示例:如果集群里有N个主机,而你只能让其中任一主机的停机时间不超过特定时间。那么,你能在此集群部署的最多虚拟主机数量值为:(N-1) * (每主机最大虚拟量数量限值)。一旦群集中的虚拟机达到此数量,必须在CloudStack的用户界面中禁止向此群集分配新的虚拟机。

配置XenServer dom0内存

配置XenServer为dom0分配更多的内存,可使XenServer处理更多的虚拟机。我们推荐为dom0设置的内存数值为2940 MB。至于如何操作,可以参阅如下URL: Citrix 知识库文章.。这篇文章同时适用于XenServer 5.6和6.0版本。

事件和故障排查

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

事件通知

事件本质上是与云环境相关的虚拟和物理资源的状态显著或有意义的变化。事件用于监控系统,使用率和计费系统,或者是用于辨别模式和做出正确商业决定的其他任何事件驱动工作流系统。在 CloudStack 中的事件可以是虚拟或物理资源的状态变化,用户(操作事件)执行的操作,或基于策略的事件(警告)。

事件日志

这里有两种类型的事件记录在&PRODUCT;事件日志。标准事件记录一个事件的成功或失败,并且可以用于鉴别哪些是已经失败的任务或进程。这里也记录长时间运行任务事件。异步任务的制定,启动,完成这些事件都被记录。长时间运行的同步和异步事件日志可用于获取挂起任务更多的状态信息,也可以用来识别任务是被挂起或还未开始。以下各节提供有关这些事件的详细信息。

通知

Event notification framework provides a means for the Management Server components to publish and subscribe to CloudStack events. Event notification is achieved by implementing the concept of event bus abstraction in the Management Server.

状态变化,资源状态变化的新事件作为事件通知架构的一部分被引入。每个资源,例如用户VM,卷VM,网卡,网络,公共IP,快照以及模板,使用机器状态和常规事件被关联起来作为状态变化的一部分。这意味着,一个资源状态的变化产生了一个状态变化事件,并且该事件被公布到相应的状态事件总线。所有的 CloudStack 事件(报警,动作事件,使用事件)和 资源状态变化事件的附加条目将被公布到事件总线。

Implementations

An event bus is introduced in the Management Server that allows the CloudStack components and extension plug-ins to subscribe to the events by using the Advanced Message Queuing Protocol (AMQP) client. In CloudStack, a default implementation of event bus is provided as a plug-in that uses the RabbitMQ AMQP client. The AMQP client pushes the published events to a compatible AMQP server. Therefore all the CloudStack events are published to an exchange in the AMQP server.

Additionally, both an in-memory implementation and an Apache Kafka implementation are also available.

使用案例

以下是一些使用场景:

  • 使用率或计费引擎:第三方云使用的解决方案可以实现一个插件,它可以连接到 CloudStack 中订阅 CloudStack 中的事件并产生使用率数据。使用率数据是它们的使用的软件消耗。
  • AMQP的插件可以存放消息队列中的所有事件,然后一个AMQP消息代理可以提供基于主题的通知订阅者。
  • AMQP的插件可以存放所有事件在一个消息队列中,然后AMQP打乱的 发布和订阅通知服务可以作为一个可插拔的服务,在CloudStack中该服务可以为事件通知提供丰富的API集,如主题为标题的主题和通知。此外,可插拔服务可以处理多租户,认证,授权issues.age代理,并提供基于主题的订阅通知。
AMQP Configuration

作为一个 CloudStack 管理员,执行下列一次性配置启用事件通知框架。在运行时不能修改控件行为。

  1. Create the folder /etc/cloudstack/management/META-INF/cloudstack/core

  2. Inside that folder, open spring-event-bus-context.xml.

  3. 按照以下实例顶一个叫做 “ eventNotificationBus ” 的实体:

    • 名字:为实体指定一个名字。

    • 服务器: RabbitMQ AMQP 的名字或IP地址

    • 端口 : RabbitMQ服务器运行端口.

    • 用户名: 用户名关联访问 RabbitMQ 服务器的账号。

    • 密码: 密码关联访问 RabbitMQ 服务器账号的用户名。

    • 交流:其中 CloudStack 中事件发布的 RabbitMQ 的服务器上的交流名称。

      下面给出一个实体实例:

      <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.0.xsd">
         <bean id="eventNotificationBus" class="org.apache.cloudstack.mom.rabbitmq.RabbitMQEventBus">
            <property name="name" value="eventNotificationBus"/>
            <property name="server" value="127.0.0.1"/>
            <property name="port" value="5672"/>
            <property name="username" value="guest"/>
            <property name="password" value="guest"/>
            <property name="exchange" value="cloudstack-events"/>
         </bean>
      </beans>
      

      The eventNotificationBus bean represents the org.apache.cloudstack.mom.rabbitmq.RabbitMQEventBus class.

      If you want to use encrypted values for the username and password, you have to include a bean to pass those as variables from a credentials file.

      A sample is given below

      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:aop="http://www.springframework.org/schema/aop"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
              http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-3.0.xsd"
      >
      
         <bean id="eventNotificationBus" class="org.apache.cloudstack.mom.rabbitmq.RabbitMQEventBus">
            <property name="name" value="eventNotificationBus"/>
            <property name="server" value="127.0.0.1"/>
            <property name="port" value="5672"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
            <property name="exchange" value="cloudstack-events"/>
         </bean>
      
         <bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
            <property name="algorithm" value="PBEWithMD5AndDES" />
            <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
         </bean>
      
         <bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
            <property name="config" ref="environmentVariablesConfiguration" />
         </bean>
      
         <bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
            <constructor-arg ref="configurationEncryptor" />
            <property name="location" value="classpath:/cred.properties" />
         </bean>
      </beans>
      

      Create a new file in the same folder called cred.properties and the specify the values for username and password as jascrypt encrypted strings

      Sample, with guest as values for both fields:

      username=nh2XrM7jWHMG4VQK18iiBQ==
      password=nh2XrM7jWHMG4VQK18iiBQ==
      
  4. 重启管理服务器。

Kafka Configuration

作为一个 CloudStack 管理员,执行下列一次性配置启用事件通知框架。在运行时不能修改控件行为。

  1. Create an appropriate configuration file in /etc/cloudstack/management/kafka.producer.properties which contains valid kafka configuration properties as documented in http://kafka.apache.org/documentation.html#newproducerconfigs The properties may contain an additional topic property which if not provided will default to cloudstack. While key.serializer and value.serializer are usually required for a producer to correctly start, they may be omitted and will default to org.apache.kafka.common.serialization.StringSerializer.

  2. Create the folder /etc/cloudstack/management/META-INF/cloudstack/core

  3. Inside that folder, open spring-event-bus-context.xml.

  4. Define a bean named eventNotificationBus with a single name attribute, A sample bean is given below:

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                               http://www.springframework.org/schema/context
                               http://www.springframework.org/schema/context/spring-context-3.0.xsd">
       <bean id="eventNotificationBus" class="org.apache.cloudstack.mom.kafka.KafkaEventBus">
         <property name="name" value="eventNotificationBus"/>
       </bean>
     </beans>
    
  5. 重启管理服务器。

标准事件

事件日志记录三种类型的标准事件

  • 通知:当一个操作被成功执行产生事件。
  • 警告:以下状况产生该事件。
    • 监控模板下载的同时网络被断开
    • 模板下载被放弃
    • 当存储服务器上的问题会导致卷故障转移到镜像存储服务器。
  • 错误:当操作没有成功执行产生该事件

长事件运行任务事件

事件日志记录三种类型的标准事件

  • 通知:当一个操作被成功执行产生事件。
  • 警告:以下状况产生该事件。
    • 监控模板下载的同时网络被断开
    • 模板下载被放弃
    • 当存储服务器上的问题会导致卷故障转移到镜像存储服务器。
  • 错误:当操作没有成功执行产生该事件

事件记录查询

可以通过用户接口查询数据库日志。系统收集了以下列表事件:

  • 虚拟机创建,删除,以及持续管理操作
  • 虚拟路由器创建,删除,以及持续管理操作
  • 模板创建和删除
  • 网络/压力 负载规则创建和删除
  • 存储卷创建和和删除
  • 用户登录注销

删除和归档事件警告

CloudStack 提供你删除或归档那些再也不使用的现存警告和事件的能力。您可以定期删除或存档的任何那些您不能或不想从数据库来解决的警报或事件,

您可以通过快速查看或详情页面直接删除或归档个别警报或事件。如果你想同时删除多个警报或事件,您可以分别使用相应的快捷菜单。您可以按类别删除某个时期的警报或事件。例如,您可以选择诸如 ** USER.LOGOUT**,** VM.DESTROY**,** VM.AG.UPDATE**,** CONFIGURATION.VALUE.EDI** 等类别,依此类推。您还可以查看事件和警报归档或删除的数量。

为了支持删除或归档报警,增加了以下全局参数:

  • alert.purge.delay: The alerts older than specified number of days are purged. Set the value to 0 to never purge alerts automatically.
  • alert.purge.interval: The interval in seconds to wait before running the alert purge thread. The default is 86400 seconds (one day).

注解

不能同通过UI 或 API 来归档报警或者事件。它们都存放在数据库中用于升级或其他目的。

许可

参考以下几点:

  • root 管理 可以删除或归档一个或多个警告事件
  • 域关乎或终端用户可以删除或归档一个或多个警告事件
步骤
  1. 使用管理员登录到CloudStack管理界面。
  2. 在左侧导航栏中,点击事件。
  3. 请执行下列操作之一:
    • 归档事件,点击 归档事件,并指定事件类型和日期。
    • 归档事件,点击 删除事件,并指定事件类型和日期。
  4. 点击确定。

警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

故障排查

使用服务器日志

为了方便诊断系统,CloudStack 管理服务器在目录/var/log/cloud/management/下记录了所有网站、中间层和数据库的活动。CloudStack 会记录各种出错信息。我们推荐使用下述命令从管理服务器日志中寻找有问题的输出日志:

注解

当复制和粘贴命令时,请确保没有多余的换行符,因为一些文档查看器可能会在复制时加上换行符。

grep -i -E 'exception|unable|fail|invalid|leak|warn|error' /var/log/cloudstack/management/management-server.log

CloudStack处理请求时会生成一个任务ID。如果您发现了日志中的某个错误,然后想调试该问题,您可以在管理服务器日志中grep这个任务ID。例如,假设您发现了以下的ERROR信息:

2010-10-04 13:49:32,595 ERROR [cloud.vm.UserVmManagerImpl] (Job-Executor-11:job-1076) Unable to find any host for [User|i-8-42-VM-untagged]

注意到任务ID是1076。你可以追踪返回事件的相近任务1076按照以下grep:

grep "job-1076)" management-server.log

CloudStack代理服务器在 `/var/log/cloudstack/agent/`记录了它的活动。

在导出主存储时的数据丢失

症状

主存储的已有数据丢失。该主存储是用iSCSI卷导出的一个Linux NFS服务器输出。

原因

可能的原因是存储池之外的某个客户端挂载了该存储。如果发生了这种情况,LVM会被擦除,该卷上的所有数据都会丢失。

解决方案

配置LUN输出时,通过指定子网掩码来限制可以访问存储的IP地址范围。例如:

echo “/export 192.168.1.0/24(rw,async,no_root_squash,no_subtree_check)” > /etc/exports

根据你的部署需求,调整如上参数。

更多信息

请参考CloudStack安装指南的“辅助存储”章节中的导出过程。

恢复丢失的虚拟路由器

症状

虚拟路由器是运行着的,但主机失去连接。虚拟路由器不再按期望工作。

原因

虚拟路由器丢失或宕机。

解决方案

如果您确定虚拟路由器宕机了,或不再正常工作,请销毁它。您必须再建一个新的,此时备份路由器应保持运行(假定在使用冗余路由器配置的情况下)。

  • 强制停止虚拟路由器。请使用带参数forced=true的stopRouter API执行该步。
  • 在销毁虚拟路由器之前,请确保备份路由器正常运行。否则用户的网络连接将中断。
  • 使用destroyRouter API销毁该虚拟路由器。

使用restartNetwork API(参数cleanup=false)重建丢失的虚拟路由器。关于冗余虚拟路由器的配置,请参考创建新的网络方案。

关于更多的API语法信息,参见API参考`http://cloudstack.apache.org/docs/api/ <http://cloudstack.apache.org/docs/api/>`_。

维护模式没在vCenter中生效

症状

主机已经置为维护模式,但在vCenter中还是活动的。

原因

CloudStack管理员用户界面使用日程中的主机维护模式。该模式与vCenter的维护模式无关。

解决方案

请使用vCenter将主机置为维护模式。

无法从上传的vSphere模板部署虚拟机

症状

当试图创建一个虚拟机,虚拟机将无法部署。

原因

如果模板通过上传OVA文件创建,而OVA文件是使用vSphere Client创建的,可能OVA中包含ISO镜像。如果是的话,从模板部署虚拟机将失败。

解决方案

移除ISO并重新上传模板。

无法启动VMware的虚机

症状

虚机不能启动。可能出现以下错误:

  • 不能打开交换文件
  • 不能访问文件,因为文件被锁定
  • 不能访问虚机配置
原因

这是VMware机器的已知问题。为防止并发修改,ESX主机会锁定特定的关键虚机文件和文件系统。有时,虚机关机时没有解锁这些文件。当虚机再次开机时,由于不能访问这些关键文件,虚机就不能启动。

解决方案

参见:

VMware Knowledge Base Article

改变网络方案后负载均衡规则失效

症状

修改网络的网络方案后,负载均衡规则不再生效。

原因

负载均衡规则创建时使用的是包含外部负载均衡器,例如NetScaler的网络方案,后来改为使用CloudStack虚拟路由器的网络方案。

解决方案

针对每条已有的负载均衡规则,在虚拟路由器上创建相同的防火墙规则,以便规则继续生效。

故障排查网络传输

在下列故障排查步骤中检验你网络中出现的故障…

故障排查步骤
  1. 交换机上可以完成正确的配置VLAN通信。你可以辨别主机上的VLAN是否通讯通过提出标记接口,并在上述两个VLAN中使用ping命令。

    在*host1 (kvm1)*上

    kvm1 ~$ vconfig add eth0 64
    kvm1 ~$ ifconfig eth0.64 1.2.3.4 netmask 255.255.255.0 up
    kvm1 ~$ ping 1.2.3.5
    

    在*host2 (kvm2)*上

    kvm2 ~$ vconfig add eth0 64
    kvm2 ~$ ifconfig eth0.64 1.2.3.5 netmask 255.255.255.0 up
    kvm2 ~$ ping 1.2.3.4
    

    如果ping不通,运行 *tcpdump(8)*在所有VLAN上检查丢失的数据包。最终,如果交换机配置失败,CloudStack网络将无法工作,所以在处理下一部前要确定物理网络设备的问题。

  2. 确保 流量标签 已经设置在域中。

    流量标签需要在包括XenServer,KVM和VMwarel在内的所有类型的hypervisors设置。当你从*Add Zone Wizard*创建一个域时,你可以配置流量标签。

    _images/networking-zone-traffic-labels.png

    在一个已经存在的域总,你可以通过*Add Zone Wizard*修改流量标签。

    _images/networking-infra-traffic-labels.png

    列出正在使用的*CloudMonkey*

    acs-manager ~$ cloudmonkey list traffictypes physicalnetworkid=41cb7ff6-8eb2-4630-b577-1da25e0e1145
    count = 4
    traffictype:
    id = cd0915fe-a660-4a82-9df7-34aebf90003e
    kvmnetworklabel = cloudbr0
    physicalnetworkid = 41cb7ff6-8eb2-4630-b577-1da25e0e1145
    traffictype = Guest
    xennetworklabel = MGMT
    ========================================================
    id = f5524b8f-6605-41e4-a982-81a356b2a196
    kvmnetworklabel = cloudbr0
    physicalnetworkid = 41cb7ff6-8eb2-4630-b577-1da25e0e1145
    traffictype = Management
    xennetworklabel = MGMT
    ========================================================
    id = 266bad0e-7b68-4242-b3ad-f59739346cfd
    kvmnetworklabel = cloudbr0
    physicalnetworkid = 41cb7ff6-8eb2-4630-b577-1da25e0e1145
    traffictype = Public
    xennetworklabel = MGMT
    ========================================================
    id = a2baad4f-7ce7-45a8-9caf-a0b9240adf04
    kvmnetworklabel = cloudbr0
    physicalnetworkid = 41cb7ff6-8eb2-4630-b577-1da25e0e1145
    traffictype = Storage
    xennetworklabel = MGMT
    =========================================================
    
  3. KVM流量标签要求被命名为*”cloudbr0”, *”cloudbr2”, “cloudbrN” 等而且响应桥必须在KVM主机上。如果你以其他名字命名标记/桥,CloudStack(至少是较早版本)将会忽略它。CloudStack不能再KVM主机上创建物理桥,你需要在向CloudStackt添加主机前 **before**创建它们。

    kvm1 ~$ ifconfig cloudbr0
    cloudbr0  Link encap:Ethernet  HWaddr 00:0C:29:EF:7D:78
       inet addr:192.168.44.22  Bcast:192.168.44.255  Mask:255.255.255.0
       inet6 addr: fe80::20c:29ff:feef:7d78/64 Scope:Link
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       RX packets:92435 errors:0 dropped:0 overruns:0 frame:0
       TX packets:50596 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:0
       RX bytes:94985932 (90.5 MiB)  TX bytes:61635793 (58.7 MiB)
    
  4. 虚拟路由,SSVM,CPVM *public*接口将被桥接到主机的物理接口上。在下例中, *cloudbr0*是公共接口,CloudStack将创建虚拟接口桥。这个虚拟接口到物理接口映射式CloudStack用设置在域中的流量标签自动设置的。如果你提供争取的设置,但仍不能在网络上工作,在下一步调试前检查下交换层的设备。你可以在虚拟,物理和桥设备上使用tcpdump证实流量。

    kvm-host1 ~$ brctl show
    bridge name  bridge id           STP enabled interfaces
    breth0-64    8000.000c29ef7d78   no          eth0.64
                                                 vnet2
    cloud0       8000.fe00a9fe0219   no          vnet0
    cloudbr0     8000.000c29ef7d78   no          eth0
                                                 vnet1
                                                 vnet3
    virbr0       8000.5254008e321a   yes         virbr0-nic
    
    xenserver1 ~$ brctl show
    bridge name  bridge id           STP enabled interfaces
    xapi0    0000.e2b76d0a1149       no          vif1.0
    xenbr0   0000.000c299b54dc       no          eth0
                                                xapi1
                                                vif1.1
                                                vif1.2
    
  5. 在XenServer上预先创建标签。类似于KVM桥启动,流量标签必须在加入CloudStack的XenServer主机上提前创建。

    xenserver1 ~$ xe network-list
    uuid ( RO)                : aaa-bbb-ccc-ddd
              name-label ( RW): MGMT
        name-description ( RW):
                  bridge ( RO): xenbr0
    
  6. 网络将会从SSVM和CPVM实例上默认获取。它们的公共IP也将会直接由网络ping通。请注意一下这些测试仅在交换机或者流量标签已被成功配置在你的环境中实现。如果你的 SSVM/CPVM可以连接到Internet, 它非常不同于虚拟路由器(VR)也可以连接到Internet,建议可能是交换时的问题或者是错误分配了流量标签。确定SSVM/CPVM的问题前请先调试VR问题。

    root@s-1-VM:~# ping -c 3 google.com
    PING google.com (74.125.236.164): 56 data bytes
    64 bytes from 74.125.236.164: icmp_seq=0 ttl=55 time=26.932 ms
    64 bytes from 74.125.236.164: icmp_seq=1 ttl=55 time=29.156 ms
    64 bytes from 74.125.236.164: icmp_seq=2 ttl=55 time=25.000 ms
    --- google.com ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 25.000/27.029/29.156/1.698 ms
    
    root@v-2-VM:~# ping -c 3 google.com
    PING google.com (74.125.236.164): 56 data bytes
    64 bytes from 74.125.236.164: icmp_seq=0 ttl=55 time=32.125 ms
    64 bytes from 74.125.236.164: icmp_seq=1 ttl=55 time=26.324 ms
    64 bytes from 74.125.236.164: icmp_seq=2 ttl=55 time=37.001 ms
    --- google.com ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 26.324/31.817/37.001/4.364 ms
    
  7. 除非有些Egress规则,Virtual Router(VR)也是不能到达Internet。Egress规则仅控制VR自身的通讯与否。

    root@r-4-VM:~# ping -c 3 google.com
    PING google.com (74.125.236.164): 56 data bytes
    64 bytes from 74.125.236.164: icmp_seq=0 ttl=55 time=28.098 ms
    64 bytes from 74.125.236.164: icmp_seq=1 ttl=55 time=34.785 ms
    64 bytes from 74.125.236.164: icmp_seq=2 ttl=55 time=69.179 ms
    --- google.com ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 28.098/44.021/69.179/17.998 ms
    
  8. 尽管如此,Virtual Router(VR) Source NAT Pulic IP地址除非有近似的Ingress规则在此,要么**WONT** 达到。你可以添加 Ingress rules under Network, Guest Network, IP Address, Firewall 设置页。

    _images/networking-ingress-rule.png
  9. 默认的VM Instances不能够连接Internet。添加Egress规则后可允许连接。

    _images/networking-egress-rule.png
  10. 一些用户报告在SSVM,CPVM或者是Vir Router刷新IPTables规则(或改变路由)可以使Internet工作。这不是系统期望的行为并建议这样的网络设置是错误的。SSVM,CPVM或者是VR上没有要求IPtables/route改变。回去重新检查你所有的设置吧。

在海量的实例中,问题会出现在交换层,原因是L3的配置错误.

这些内容有Shanker Balan贡献,其原文发布在`Shapeblue’博客中<http://shankerbalan.net/blog/internet-not-working-on-cloudstack-vms/>`_