5. 配置镜像服务

目录

  1. 镜像服务概述………………………………………………………………35
  2. 安装镜像服务………………………………………………………………36
  3. 验证镜像服务安装………………………………………………………..37

  OpenStack镜像服务能够使用户去发现,注册和检索虚拟机镜像。也被称作glance项目的镜像服务提供一个REST API能够使你使你查询虚拟机映像的元数据和检索一个实际镜像。你可以保存通过在从简单文件系统到对象存储系统如OpenStack Object Storage的不同位置的镜像服务提供的虚拟机镜像。

重点
  为了简单起见,这个指引了配置镜像服务到使用文件后端。这意味着镜像上传到镜像服务被保存在托管该服务的相同系统的目录里,默认情况下,这个目录是/var/lib/glance/images/。

  在开始之前,保证系统这个目录下有充足的空间来保存虚拟机镜像和快照。在绝对很低的情况下,几千字节的空间应该在通过证明概念部署证明的镜像服务下可用。要了解其他后端的要求,可以看Configuration Reference

镜像服务概述

  镜像服务包括下面几个组件:

  • glance-api。为镜像发现,检索和存储接受镜像API调用。
  • glance-registry。存储,处理和检索镜像的元数据。元数据包括如尺寸和类型的项目。
    安全注意事项 
      注册是一个私密的内部服务意味着只有通过镜像服务本身有用。不能暴露给用户。
  • 数据库。保存镜像元数据。你可以根据你的喜好来选择数据库。大部分都使用MySQL或者SQlite。
  • 为镜像文件存储资料库。镜像服务提供多样性的资料库包括普通文件系统,对象存储,RADOS块设备,HTTP和Amazon S3。一些资料库只支持可读用法。

      很多周期性过程运行在支持缓存的镜像服务上。通过聚集,复制服务确保了一致性和可用性。其他周期性过程包括审计,更新和收割。
      如图1.1“Conceptual architecture”所示:镜像服务是所有laaS图片的中心。它接受了从末端用户达计算机组件的镜像或者镜像元数据的API请求并且在镜像存储服务中保存它的磁盘文件。

    安装镜像服务

      OpenStack镜像服务运作起来是作为虚拟磁盘镜像的注册处。用户可以添加新的镜像或者可以从作为即时存储的一个现有服务器拿出的一个镜像快照。使用快照来回溯和作为模板来启动新的服务器。在对象存储或者其他位置里,你可以保存注册过的镜像。例如,你可以在简单文件系统或者外部网络服务器保存镜像。

    注意
      此过程假定你已经按小节“验证身份服务安装”所描述的设置相应的对于你的凭证的环境变量。

  1. 在控制器节点上安装镜像服务:

    yum install openstack-glance python-glanceclient

2.镜像服务存储了关于在一个数据库的镜像里的信息。在这个指引里的例子使用了同样也被其他OpenStack服务使用的MySQL数据库。
配置数据库的位置。镜像服务提供了glance-api和glance-registry服务,每个都包含了它自己的配置文件。你必须通过本节来跟新配置文件。用你的镜像服务数据库密码替换GLANCE_DBPASS:

  1. # openstack-config --set /etc/glance/glance-api.conf database \
  2. connection mysql://glance:GLANCE_DBPASS@controller/glance
  3. # openstack-config --set /etc/glance/glance-registry.conf database \
  4. connection mysql://glance:GLANCE_DBPASS@controller/glance

3.使用你创建的作为root的密码登录并且创建一个glance数据库用户:

  1. $ mysql -u root -p
  2. mysql> CREATE DATABASE glance;
  3. mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  4. IDENTIFIED BY 'GLANCE_DBPASS';
  5. mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  6. IDENTIFIED BY 'GLANCE_DBPASS';

4.为你的镜像服务创建数据库表:

  1. # su -s /bin/sh -c "glance-manage db_sync" glance

5.创建一个glance镜像服务能够用认证服务来认证的用户。为glance用户选择一个密码并且指定一个email地址。使用租户服务并且给用户一个admin角色:

  1. $ keystone user-create --name=glance --pass=GLANCE_PASS \
  2. --email=glance@example.com
  3. $ keystone user-role-add --user=glance --tenant=service --role=admin

6.配置用来认证的认证服务的镜像服务。

运行下面的指令并且用你选择在认证服务下的glance用户的密码来替代 GLANCE_PASS。

  1. # openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  2. auth_uri http://controller:5000
  3. # openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  4. auth_host controller
  5. # openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  6. auth_port 35357
  7. # openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  8. auth_protocol http
  9. # openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  10. admin_tenant_name service
  11. # openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  12. admin_user glance
  13. # openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  14. admin_password GLANCE_PASS
  15. # openstack-config --set /etc/glance/glance-api.conf paste_deploy \
  16. flavor keystone
  17. # openstack-config --set /etc/glance/glance-registry.conf
  18. keystone_authtoken \
  19. auth_uri http://controller:5000
  20. # openstack-config --set /etc/glance/glance-registry.conf
  21. keystone_authtoken \
  22. auth_host controller
  23. # openstack-config --set /etc/glance/glance-registry.conf
  24. keystone_authtoken \
  25. auth_port 35357
  26. # openstack-config --set /etc/glance/glance-registry.conf
  27. keystone_authtoken \
  28. auth_protocol http
  29. # openstack-config --set /etc/glance/glance-registry.conf
  30. keystone_authtoken \
  31. admin_tenant_name service
  32. # openstack-config --set /etc/glance/glance-registry.conf
  33. keystone_authtoken \
  34. admin_user glance
  35. # openstack-config --set /etc/glance/glance-registry.conf
  36. keystone_authtoken \
  37. admin_password GLANCE_PASS
  38. # openstack-config --set /etc/glance/glance-registry.conf paste_deploy \
  39. flavor keystone

7.用身份服务来注册镜像服务以让其他OpenStack服务能够定位它。注册服务并创建一个端点:

  1. $ keystone service-create --name=glance --type=image \
  2. --description="OpenStack Image Service"
  3. $ keystone endpoint-create \
  4. --service-id=$(keystone service-list | awk '/ image / {print $2}') \
  5. --publicurl=http://controller:9292 \
  6. --internalurl=http://controller:9292 \
  7. --adminurl=http://controller:9292

8.开启glance-api和glance-registry服务,配置他们一当系统开启就启动:

  1. # service openstack-glance-api start
  2. # service openstack-glance-registry start
  3. # chkconfig openstack-glance-api on
  4. # chkconfig openstack-glance-registry on

验证镜像服务安装

  为了测试镜像服务的安装,下载至少一个能够使用OpenStack的虚拟机镜像。例如,CirrOS是一个常用来测试OpenStack部署的简单测试镜像(CirrOS downloads)。这个过程使用64位的CirrOS QCOW2镜像。

  关于更多怎样下载和建立镜像的信息,可以去OpenStack Virtual Machine Image Guide。关于怎样管理镜像的信息,可以去OpenStack User Guide

  1. 在使用wget或者curl的单独目录下下载镜像:

    $ mkdir /tmp/images $ cd /tmp/images/ $ wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img 2.上传镜像到镜像服务:

    $ glance image-create —name=IMAGELABEL —disk-format=FILEFORMAT \ —container-format=CONTAINERFORMAT —is-public=ACCESSVALUE < IMAGEFILE 这里:

      IMAGELABEL        任意标签。用户用来指定镜像的名字。

      FILEFORMAT       指定镜像文件的格式。固定格式包括:qcow2,raw,vhd,vmdk,vdi,iso,aki,ari,和 ami。

                    你可以使用下面的文件命令指定格式:

                    $ file cirros-0.3.2-x86_64-disk.img
                    cirros-0.3.2-x86_64-disk.img: QEMU QCOW Image (v2),
                    41126400 bytes

      CONTAINERFORMAT    指定容器的格式。固定的格式包括:bare,ovf,aki,ari和ami。

                    指定bare格式表示该镜像文件不是包含关于虚拟机的元数据的文件格式。尽管这一块现在需要,当时没有任何的
                    OpenStack服务现在实际使用,而且对于系统表现也没有作用。因为这个值不在任何地方使用,所以用bare来做
                     容器的格式非常安全。

  ACCESSVALUE      指定镜像权限:

              - true-每一个用户都能查看和使用镜像。

              - false-只有管理者才能查看和使用镜像。

  IMAGEFILE       指定你下载镜像文件的名字。

例如:

  1. $ source admin-openrc.sh
  2. $ glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 \
  3. --container-format bare --is-public True --progress < cirros-0.3.2-
  4. x86_64-disk.img
  5. +------------------------+--------------------------------------------+
  6. | Property        | Value                      |
  7. +------------------------+--------------------------------------------+
  8. | checksu         | 64d7c1cd2b6f60c92c14662941cb7913      |
  9. | container_format    | bare                       |
  10. | created_at       | 2014-04-08T18:59:18              |
  11. | deleted         | False                      |
  12. | deleted_at       | None                       |
  13. | disk_format       | qcow2                      |
  14. | id            | acafc7c0-40aa-4026-9673-b879898e1fc2    |
  15. | is_public        | True                       |
  16. | min_disk        | 0                         |
  17. | min_ram         | 0                         |
  18. | name          | cirros-0.3.2-x86_64               |
  19. | owner          | efa984b0a914450e9a47788ad330699d       |
  20. | protected        | False                       |
  21. | size           | 13167616                     |
  22. | status          | active                      |
  23. | updated_at        | 2014-01-08T18:59:18              |
  24. +------------------------+--------------------------------------------+

3.确认镜像上传并且显示其属性:

  1. $ glance image-list<br><br>
  2. +--------------------------------------+----------------------+------------+-----------------+-----------+--------+
  3. | ID                    | Name        | Disk Format| Container Format | Size    | Status |
  4. +--------------------------------------+---------------------+------------+-----------------+-------------+--------+
  5. | acafc7c0-40aa-4026-9673-b879898e1fc2 | cirros-0.3.2-x86_64 | qcow2   | bare        | 13167616 | active |
  6. +---------------------------------------+--------------------+------------+------------------+-----------+--------+

4.当该镜像已经保存并且通过镜像服务能够得到,你可以删除当地下载的镜像。

  1. $ rm -r /tmp/images

可以不使用当地磁盘文件来存储文件而是使用参数—copy-from来上传镜像服务。

例如:

  1. $ glance image-create --name="cirros-0.3.2-x86_64" --disk-format=qcow2 \
  2. --container-format=bare --is-public=true \
  3. --copy-from http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
  4. +------------------+-----------------------------------------+
  5. | Property     | Value                   |
  6. +------------------+-----------------------------------------+
  7. | checksum    | 64d7c1cd2b6f60c92c14662941cb7913     |
  8. | container_format | bare                    |
  9. | created_at     | 2014-04-08T06:13:18            |
  10. | deleted      | False                   |
  11. | disk_format    | qcow2                   |
  12. | id         | 3cce1e32-0971-4958-9719-1f92064d4f54 |
  13. | is_public     | True                   |
  14. | min_disk      | 0                     |
  15. | min_ram      | 0                     |
  16. | name       | cirros-0.3.2-x86_64             |
  17. | owner       | efa984b0a914450e9a47788ad330699d   |
  18. | protected     | False                   |
  19. | size        | 13167616                 |
  20. | status       | active                   |
  21. | updated_at    | 2014-04-08T06:13:20            |
  22. +------------------+-----------------------------------------+