创建trove使用的glance image

使用Trove提供database服务,首先我们需要制作一个Trove对应database服务的glance image,这样才能基于该image启动虚拟机提供database服务;

本文档以创建mysql 5.6为例,描述下制作Trove对应服务的glance image的步骤:

  1. 选择base系统,启动虚拟机

    比如选择基本的Ubuntu 14.04镜像,启动一个nova instance

  2. 配置apt-get源

    登陆nova instance上,设置合适的apt-get源

  3. 安装相应软件包

    比如安装mysql-server-5.6,安装mysql备份插件xtrabackup,安装其他软件:比如keepalived

  4. 创建调试用户

    默认openstack创建nova instance的root账号是随机密码,所以这里添加一个ubuntu的user,设置密码和super权限,方便之后登陆nova instance查看调试

  5. 配置trove运行环境

    copy trove部署机器上的 .venv/ 目录到虚拟机 /home/ubuntu/ 目录下,提供python的运行环境

  6. 获取trove源码

    copy trove部署机器上的 /opt/openstace/trove 目录到虚拟机 /home/ubuntu/ 目录下;

    若使用trove源码,需要执行trove代码的安装:

    1
    2
    3
    4
    5
    cd /opt/openstack/trove
    git checkout stable/kilo
    python setup.py egg_info
    pip install -r trove.egg-info/requires.txt
    python setup.py develop
  7. 查看配置trove的开机自启动

    1
    2
    3
    4
    5
    6
    7
    8
    $ cat /etc/init/trove-guestagent.conf
    description "Trove Guest Agent"
    author "Thomas Goirand <zigo@debian.org>"
    start on runlevel [2345]
    stop on runlevel [!2345]
    respawn

    exec /home/ubuntu/trove/contrib/trove-guestagent --config-dir=/etc/trove/conf.d
  8. 配置ceilometer监控代码

    copy ceilometer的相关代码到 /home/ubuntu/ 目录下
    copy ceilometer的agent程序、配置文件、启动脚本(根据业务自己写)到指定目录

    注:ceilometer的监控看自己项目需要

  9. 配置ceilometer的开机自启动

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $ cat /etc/rc.local
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    bash /home/ubuntu/ceilometer/start-ceilometer.sh
    exit 0
  10. 配置nova instance启动自动更新trove代码

    在调试的情况下,可以每次在nova instance启动时候更新trove代码,这样不用每次都重做glance image;

    步骤如下:

    • 把nova instance的id_rsa.pub文件的内容添加到放置trove代码的服务器的authorized_keys里;
    • 在nova instance的rc.local文件中添加:scp -o StrictHostKeyChecking=no -r root@<serverip>:/opt/openstack/trove/trove /home/ubuntu/trove/
  11. 创建glance镜像

    退出nova instance,通过nova show 查找instance所在物理机,然后通过qemu-img命令导出instance为一个镜像;

    1
    root@compute01:~# qemu-img convert -O qcow2 /var/lib/nova/instances/a61216f6-eacc-45b3-a6a7-9d1829f6de99/disk ~/new.image
  12. 上传镜像到glance中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    root@compute01:~# glance --debug image-create --name "mysql-ubuntu"  --file ~/new.image --disk-format qcow2 --container-format bare --is-public True --progress
    ...
    +------------------+--------------------------------------+
    | Property | Value |
    +------------------+--------------------------------------+
    | checksum | 31b45bf9d9e8c2e9a6215f2912c22113 |
    | container_format | bare |
    | created_at | 2016-02-27T07:00:26.000000 |
    | deleted | False |
    | deleted_at | None |
    | disk_format | qcow2 |
    | id | 296c7baf-5041-4fd5-8640-1b3bc03e5236 |
    | is_public | True |
    | min_disk | 0 |
    | min_ram | 0 |
    | name | mysql-ubuntu |
    | owner | None |
    | protected | False |
    | size | 2938568704 |
    | status | active |
    | updated_at | 2016-02-27T07:02:56.000000 |
    | virtual_size | None |
    +------------------+--------------------------------------+
  13. 更新trove的mysql的datastore后即可使用该镜像创建Trove实例了

    注:trove是支持使用cinder volume的,所以这里要配置好cinder volume type与nova instance运行机器的对应关系;

支持原创