[ English | Indonesia | русский ]

管理实例

本章描述了如何创建和访问实例。

使用仪表盘创建实例

使用镜像,通过仪表盘选项创建一个新的实例。

  1. 登录到仪表盘,并从下拉列表中选择 admin 项目。

  2. 项目 选项卡上,打开 实例 选项卡,然后单击 启动实例 按钮。

    ../../_images/launch_instance.png

    图:仪表盘 — 实例选项卡

  3. 检查 启动实例 对话框,并找到 详细信息 选项卡。输入实例的适当值。

    ../../_images/details.png

    实例详细信息

  4. 单击 。在源步骤中,选择启动源:镜像、卷(卷快照)或实例快照。如果您选择镜像,请从列表中选择所需的操作系统或自定义镜像来启动您的实例。如果启用了块存储服务 (cinder),则卷选项才可用。

    ../../_images/source.png

    实例源

    有关将块存储卷附加到实例以实现持久存储的更多信息,请参阅下面的管理用于持久存储的卷部分。

  5. 启动实例 对话框中,单击 风味 选项卡,并选择您实例的首选风味。

  6. 单击 网络选项卡。如果未启用网络服务 (neutron),则此选项卡将不可用。如果启用了网络,请选择实例将驻留的网络。

    ../../_images/networks.png

    实例网络

  7. 单击 密钥对 选项卡,并选择密钥对或创建新的密钥对。

  8. 单击 安全组 选项卡,并将安全组设置为“默认”。

  9. 如果需要,通过单击 配置 添加自定义脚本。这些脚本在创建实例后运行。某些实例支持用户数据,例如 root 密码或管理员用户。如果需要,在此处输入特定于实例的信息。

  10. 单击 启动 以创建实例。该实例将在计算节点上启动。实例 页面将打开并开始创建新实例。打开的 实例 页面将列出实例名称、大小、状态和任务。电源状态以及公有和私有 IP 地址也在此处列出。

    该过程完成所需时间少于一分钟。当状态显示为活动状态时,实例创建完成。刷新页面以查看新的活动实例。

    ../../_images/instances.png

    实例页面

    启动实例选项

    字段名称

    必需

    细节

    可用区

    可选

    镜像服务创建实例的可用区。如果未定义任何可用区,则不会找到任何实例。云提供商将可用区设置为特定值。

    实例名称

    必需

    新实例的名称,它成为服务器的初始主机名。如果服务器名称在 API 中更改或直接更改,仪表盘名称将保持不变

    镜像

    必需

    容器格式的类型,可以是 rawqcow2isovmdk、``vdi`` 等。

    风味

    必需

    vCPU、内存和磁盘配置。请注意,较大的风味可能需要很长时间才能创建。如果您是第一次创建实例并想要一个小的实例来进行测试,请选择 m1.small

    实例数量

    必需

    如果使用此配置创建多个实例,请输入一个整数,最多为配额允许的数量,默认值为 10

    实例启动源

    必需

    指定实例是基于镜像还是快照。如果是第一次创建实例,则此时还没有可用的快照。

    镜像

    必需

    实例将从所选镜像启动。此选项将从表中预填充所选实例。但是,选择 从快照启动实例启动源 中,它将默认设置为 快照

    安全组

    可选

    此选项将安全组分配给实例。默认安全组在未在此处指定自定义组时激活。安全组类似于云防火墙,定义了哪些传入网络流量转发到实例。

    Keypair

    可选

    使用此选项指定密钥对。如果镜像使用静态密钥集(不推荐),则不需要密钥对。

    网络

    可选

    要将网络添加到实例,请单击 向下箭头 符号在 网络字段 中。

    配置

    可选

    指定自定义脚本。此脚本在实例启动并变为活动状态后运行。

使用命令行创建实例

在命令行上,使用 openstack server create 命令管理实例创建。在启动实例之前,确定要创建新实例的可用镜像和风味,使用 openstack image listopenstack flavor list 命令。

  1. 登录到任何实用程序容器。

  2. 使用实例名称以及要使用的镜像和风味发出 openstack server create 命令

    $ openstack server create --image precise-image --flavor 2 --key-name example-key example-instance
    +-------------------------------------+--------------------------------------+
    |               Property              |                Value                 |
    +-------------------------------------+--------------------------------------+
    |          OS-DCF:diskConfig          |                MANUAL                |
    |         OS-EXT-SRV-ATTR:host        |                 None                 |
    | OS-EXT-SRV-ATTR:hypervisor_hostname |                 None                 |
    |    OS-EXT-SRV-ATTR:instance_name    |          instance-0000000d           |
    |        OS-EXT-STS:power_state       |                  0                   |
    |        OS-EXT-STS:task_state        |              scheduling              |
    |         OS-EXT-STS:vm_state         |               building               |
    |              accessIPv4             |                                      |
    |              accessIPv6             |                                      |
    |              adminPass              |             ATSEfRY9fZPx             |
    |             config_drive            |                                      |
    |               created               |         2012-08-02T15:43:46Z         |
    |                flavor               |               m1.small               |
    |                hostId               |                                      |
    |                  id                 | 5bf46a3b-084c-4ce1-b06f-e460e875075b |
    |                image                |             precise-image            |
    |               key_name              |              example-key             |
    |               metadata              |                  {}                  |
    |                 name                |           example-instance           |
    |               progress              |                  0                   |
    |                status               |                BUILD                 |
    |              tenant_id              |   b4769145977045e2a9279c842b09be6a   |
    |               updated               |         2012-08-02T15:43:46Z         |
    |               user_id               |   5f2f2c28bdc844f9845251290b524e80   |
    +-------------------------------------+--------------------------------------+
    
  3. 要检查实例是否已成功创建,请发出 openstack server list 命令

    $ openstack server list
    +------------------+------------------+--------+-------------------+---------------+
    |        ID        |       Name       | Status |      Networks     |   Image Name  |
    +------------------+------------------+--------+-------------------+---------------+
    | [ID truncated]   | example-instance | ACTIVE |  public=192.0.2.0 | precise-image |
    +------------------+------------------+--------+-------------------+---------------+
    

管理实例

  1. 登录到仪表盘。选择其中一个项目,然后单击 实例

  2. 从可用实例列表中选择一个实例。

  3. 检查 操作 列,然后单击向下箭头。选择操作。

操作 列包括以下选项

  • 调整大小或重建任何实例

  • 附加/分离卷

  • 附加/分离接口

  • 查看实例控制台日志

  • 编辑实例

  • 编辑安全组

  • 暂停、恢复、救援或挂起实例

  • 软重置或硬重置实例

注意

操作 列中删除实例。

管理用于持久存储的卷

卷附加到实例,从而实现持久存储。卷存储为实例提供内存源。管理员可以将卷附加到正在运行的实例,或将卷从一个实例移动到另一个实例。

实例实时迁移

Nova 能够将实例从一个主机实时迁移到另一个主机,以支持各种操作任务,包括

  • 主机维护

  • 主机容量管理

  • 将实例调整大小并移动到更好的硬件

Nova 配置驱动器影响

根据使用的 OpenStack-Ansible 版本,Nova 可以配置为强制将配置驱动器附加到实例。在这种情况下,ISO9660 CD-ROM 镜像将通过 /mnt 挂载点提供给实例。这可被工具(如 cloud-init)用于访问实例元数据。这是访问 Nova EC2 样式元数据的一种替代方法。

要允许 Nova 实例的实时迁移,需要关闭此强制配置驱动器配置,或者将配置驱动器的格式更改为 Linux 和 Windows 实例都可以访问的磁盘格式,例如 vfat。

此解决方法适用于所有 Libvirt 版本早于 1.2.17。

要关闭强制配置驱动器配置并将配置驱动器的格式更改为硬盘驱动器样式格式,请将以下覆盖添加到 /etc/openstack_deploy/user_variables.yml 文件

nova_nova_conf_overrides:
  DEFAULT:
    config_drive_format: vfat
    force_config_drive: false

隧道传输与直接传输

在默认配置中,Nova 确定如何将数据从一个主机传输到另一个主机的正确传输 URL。根据 nova_virt_type 覆盖,将使用以下配置

  • kvm 默认为 qemu+tcp://%s/system

  • qemu 默认为 qemu+tcp://%s/system

Libvirt TCP 端口用于传输迁移数据。

OpenStack-Ansible 更改了默认设置,并使用加密的 SSH 连接来传输实例数据。

live_migration_uri = "qemu+ssh://nova@%s/system?no_verify=1&keyfile={{ nova_system_home_folder }}/.ssh/id_rsa"

其他配置可以在 /etc/openstack_deploy/user_variables.yml 文件中配置

nova_nova_conf_overrides:
  libvirt:
    live_migration_completion_timeout: 0
    live_migration_progress_timeout: 0
    live_migration_uri: "qemu+ssh://nova@%s/system?keyfile=/var/lib/nova/.ssh/id_rsa&no_verify=1"

本地与共享存储

默认情况下,实时迁移假定您的实例存储在共享存储上,并且 KVM/Libvirt 只需要将实例的内存和基本镜像同步到新主机。由于该假定,本地存储上的实时迁移将失败。可以使用 --block-migrate 选项实现本地存储的迁移。

诸如临时存储或交换之类的其他风味功能会影响实时迁移的性能和成功。

Cinder 附加的卷还需要 Libvirt 版本大于或等于 1.2.17。

执行迁移

实时迁移可通过 nova 客户端访问。

nova live-migration [--block-migrate] [--force] <uuid> [<host>]

示例在本地存储上进行实时迁移

nova live-migration --block-migrate <uuid of the instance> <nova host>

监控状态

一旦接受了实时迁移请求,就可以使用 nova 客户端监控状态

nova migration-list

+-----+------------+-----------+----------------+--------------+-----------+-----------+---------------+------------+------------+------------+------------+-----------------+
| Id | Source Node | Dest Node | Source Compute | Dest Compute | Dest Host | Status    | Instance UUID | Old Flavor | New Flavor | Created At | Updated At | Type            |
+----+-------------+-----------+----------------+--------------+-----------+-----------+---------------+------------+------------+------------+------------+-----------------+
| 6  | -           | -         | compute01      | compute02    | -         | preparing | f95ee17a-d09c | 7          | 7          | date       | date       | live-migration  |
+----+-------------+-----------+----------------+--------------+-----------+-----------+---------------+------------+------------+------------+------------+-----------------+

要过滤列表,可以使用 --host--status 选项

nova migration-list --status error

如果实时迁移失败,则需要检查源和目标计算节点是否存在错误。通常,仅搜索实例 UUID 就足以找到与实时迁移相关的错误。

其他形式的实例迁移

除了实时迁移之外,Nova 还提供在线(实时)或离线(冷)迁移整个主机的选项。

提供了以下 nova 客户端命令

  • host-evacuate-live

    如果资源利用率允许,实时迁移指定主机的所有实例到其他主机。最好使用 Ceph 或 NFS 等共享存储进行主机撤离。

  • host-servers-migrate

    此命令类似于主机撤离,但会在实例关闭时将指定主机的所有实例迁移出去。

  • 调整大小

    在重新启动的同时更改实例的风味(增加),并还将实例(冷)迁移到新主机以适应新的资源需求。此操作可能需要相当长的时间,具体取决于磁盘镜像大小。