OpenStack系列(4)

一、镜像服务概述

Image服务(glance)使用户能够发现,注册和检索虚拟机镜像。它提供了一个REST API,可以查询虚拟机镜像元数据并检索实际镜像。可以通过Image服务提供的虚拟机镜像存储在各种位置,从简单的文件系统到OpenStack Object Storage等对象存储系统。

二、安装和配置

1. 创建数据库、服务凭证和API端点

  1. 创建数据库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 1.用数据库连接客户端以root用户连接到数据库服务器
    mysql -u root -p

    # 2.创建glance数据库
    CREATE DATABASE glance;

    # 3.对glance数据库授予恰当的权限
    GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance123456a?';
    GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance123456a?';
  2. 获得admin凭证来获取只有管理员能执行的命令的访问权限

    1
    2
    source /home/admin-openrc
    echo $OS_USERNAME
  3. 创建服务证书

    1
    2
    3
    4
    5
    6
    7
    8
    # 1.创建glance用户
    openstack user create --domain default --password-prompt glance

    # 2.添加admin角色到glance用户和service项目上(这个命令执行后没有输出)
    openstack role add --project service --user glance admin

    # 3.创建glance服务实体
    openstack service create --name glance --description "OpenStack Image" image
  4. 创建镜像服务的API端点

    1
    2
    3
    openstack endpoint create --region RegionOne image public http://ctl01:9292
    openstack endpoint create --region RegionOne image internal http://ctl01:9292
    openstack endpoint create --region RegionOne image admin http://ctl01:9292

2. 安装并配置组件

  1. 安装软件包

    1
    apt-get install glance
  2. 编辑glance-api配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    vim /etc/glance/glance-api.conf

    # 1.在[database]部分,配置数据库访问
    # 将GLANCE_DBPASS替换为你的镜像服务密码
    [database]
    ...
    connection = mysql+pymysql://glance:glance123456a?@ctl01/glance

    # 2.在[keystone_authtoken]和[paste_deploy]部分,配置认证服务访问
    # 将GLANCE_PASS替换为认证服务中glance用户的密码
    [keystone_authtoken]
    #...
    auth_uri = http://ctl01:5000
    auth_url = http://ctl01:5000
    memcached_servers = ctl01:11211
    auth_type = password
    project_domain_name = Default
    user_domain_name = Default
    project_name = service
    username = glance
    password = 123456a?

    [paste_deploy]
    #...
    flavor = keystone

    # 3.在[glance_store]部分,配置本地文件系统存储和镜像文件位置
    [glance_store]
    #...
    stores = file,http
    default_store = file
    filesystem_store_datadir = /var/lib/glance/image/
  3. 编辑glance-registry配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    vim /etc/glance/glance-registry.conf

    # 1.在[database]部分,配置数据库访问:
    # 将GLANCE_DBPASS替换为你为镜像服务选择的密码。
    [database]
    # ...
    connection = mysql+pymysql://glance:glance123456a?@ctl01/glance

    # 2.在[keystone_authtoken]和[paste_deploy]部分,配置认证服务访问:
    # 将GLANCE_PASS替换为你为认证服务中你为glance用户选择的密码。
    [keystone_authtoken]
    # ...
    auth_uri = http://ctl01:5000
    auth_url = http://ctl01:5000
    memcached_servers = ctl01:11211
    auth_type = password
    project_domain_name = Default
    user_domain_name = Default
    project_name = service
    username = glance
    password = 123456a?

    [paste_deploy]
    # ...
    flavor = keystone

    # 3.在 [keystone_authtoken] 中注释或者删除其他选项。
  4. 写入镜像服务数据库

    1
    su -s /bin/sh -c "glance-manage db_sync" glance
  5. 验证数据库是否写入成功

    1
    2
    3
    # 应该有15张表
    mysql -uroot -p'123456a?' -D glance -se "show tables;"
    mysql -uroot -p'123456a?' -D glance -se "show tables;" | wc -l
  6. 重启服务

    1
    2
    service glance-registry restart
    service glance-api restart

3. 验证服务

使用Cirros对镜像服务进行验证,Cirros是一个小型的Linux镜像可以用来帮助你进行OpenStack部署测试。

  1. 获得admin凭证来获取只有管理员能执行的命令的访问权限

    1
    2
    source /home/admin-openrc
    echo $OS_USERNAME
  2. 下载源镜像

    1
    wget http://download.cirrors-cloud.net/0.4.0/cirrors-0.4.0-x86_64-disk.img
  3. 使用QCOW2磁盘格式,bare容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问

    1
    2
    3
    4
    5
    # OpenStack是动态生成ID
    openstack image create "cirrors" \
    --file cirrors-0.4.0-x86_64-disk.img \
    --disk-format qcow2 --container-format bare \
    --public
  4. 确认镜像的上传并验证属性

    1
    openstack image list

参考文档

  1. https://www.jianshu.com/p/95f0404ed900