使用Trove提供database服务,首先我们需要制作一个Trove对应database服务的glance image,这样才能基于该image启动虚拟机提供database服务;
本文档以创建mysql 5.6为例,描述下制作Trove对应服务的glance image的步骤:
选择base系统,启动虚拟机
比如选择基本的Ubuntu 14.04镜像,启动一个nova instance
配置apt-get源
登陆nova instance上,设置合适的apt-get源
安装相应软件包
比如安装mysql-server-5.6,安装mysql备份插件xtrabackup,安装其他软件:比如keepalived
创建调试用户
默认openstack创建nova instance的root账号是随机密码,所以这里添加一个ubuntu的user,设置密码和super权限,方便之后登陆nova instance查看调试
配置trove运行环境
copy trove部署机器上的
.venv/
目录到虚拟机/home/ubuntu/
目录下,提供python的运行环境获取trove源码
copy trove部署机器上的
/opt/openstace/trove
目录到虚拟机/home/ubuntu/
目录下;若使用trove源码,需要执行trove代码的安装:
1
2
3
4
5cd /opt/openstack/trove
git checkout stable/kilo
python setup.py egg_info
pip install -r trove.egg-info/requires.txt
python setup.py develop查看配置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配置ceilometer监控代码
copy ceilometer的相关代码到
/home/ubuntu/
目录下
copy ceilometer的agent程序、配置文件、启动脚本(根据业务自己写)到指定目录注:ceilometer的监控看自己项目需要
配置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配置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/
创建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
上传镜像到glance中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23root@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 |
+------------------+--------------------------------------+更新trove的mysql的datastore后即可使用该镜像创建Trove实例了
注:trove是支持使用cinder volume的,所以这里要配置好cinder volume type与nova instance运行机器的对应关系;