手动 Trove 安装¶
目标¶
本文档提供了一个逐步指南,用于手动安装 Trove,并将其与现有的 OpenStack 环境结合使用,用于开发目的。
本文档将不会涵盖其他服务的 OpenStack 设置。
需求¶
需要一个在 Ubuntu 22.04 或 24.04 LTS 上安装的正在运行的 OpenStack 环境,包括以下组件
计算 (Nova)
镜像服务 (Glance)
身份验证 (Keystone)
网络 (Neutron)
如果您想在块存储卷上配置数据库,您还需要块存储 (Cinder)
如果您想进行备份/恢复或复制,您还需要对象存储 (Swift)
AMQP 服务 (RabbitMQ 或 QPID)
MySQL (SQLite, PostgreSQL) 数据库
网络需求¶
Trove 使用一个“管理网络”,控制器使用该网络与 trove 实例进行通信,反之亦然。Trove 部署的所有 trove 实例都将在此网络上拥有接口和 IP 地址。因此,重要的是部署在此网络上的子网要足够大,以便在云安装的整个生命周期内允许最大数量的 trove 实例和控制器部署。
您还必须创建一个 Neutron 安全组,该安全组将应用于在管理网络上创建的 trove 实例端口。云管理员可以完全控制安全组,例如,允许从控制器访问 trove 实例以进行故障排除(例如,TCP 端口 22)可能很有帮助,但这不是生产环境中的绝对必要条件。
最后,您需要向此网络添加路由或接口,以便 Trove 控制器能够与该网络上的 Nova 服务器进行通信。
Trove 安装¶
Trove 所需的软件包¶
要安装的软件包列表
$ sudo apt install -y build-essential python3-dev libpython-dev \
python-setuptools libffi-dev libxslt1-dev libxml2-dev libyaml-dev \
libssl-dev zlib1g-dev mysql-client python3-pymysql libmysqlclient-dev git
Python 设置¶
安装 pip
curl -SO# https://bootstrap.pypa.io/get-pip.py && sudo python get-pip.py pip==9.0.3 && rm -f get-pip.py
安装 virtualenv,创建 Trove 环境并激活它
pip install virtualenv --user
virtualenv --system-site-packages trove_env
source trove_env/bin/activate
获取 Trove¶
从 OpenStack 仓库获取 Trove 源代码组件
cd ~
git clone https://opendev.org/openstack/trove.git
git clone https://opendev.org/openstack/python-troveclient.git
安装 Trove¶
首先,安装依赖项
cd ~/trove
sudo pip install -r requirements.txt -r test-requirements.txt
然后,安装 Trove
sudo pip install -e .
最后,安装 Trove 客户端
cd ~/python-troveclient
sudo pip install -e .
cd ~
其他必需的 OpenStack 客户端(python-novaclient、python-keystoneclient 等)应已作为 Trove 依赖项的一部分安装。
为 OpenStack 准备 Trove¶
注意
您需要使用 OpenStack 管理员凭据运行以下命令。
在
service项目中创建具有管理员角色的 Trove 服务用户。openstack user create trove --project service --password-prompt openstack role add --user trove --project service admin
在 Keystone 中注册 Trove。
openstack service create --name trove --description "Database" database openstack endpoint create --region RegionOne database public 'http://<EnvironmentPublicIP>:8779/v1.0/$(tenant_id)s' openstack endpoint create --region RegionOne database admin 'http://<EnvironmentPublicIP>:8779/v1.0/$(tenant_id)s' openstack endpoint create --region RegionOne database internal 'http://<EnvironmentPublicIP>:8779/v1.0/$(tenant_id)s'
其中 <EnvironmentPublicIP> 是安装 Trove 的服务器的 IP 地址。此 IP 应该可以从将用于与 Trove 通信的任何主机访问。
Trove 配置¶
Trove 有几个配置文件,您可以在 Trove 仓库的 etc/trove/ 中找到配置文件的示例
api-paste.ini — 用于 trove-api 服务
trove.conf - 用于 trove-api、trove-taskmanagerr、trove-conductor 服务。
trove-guestagent.conf — 用于 trove-guestagent 服务
<datastore_manager>.cloudinit— 在配置期间的 trove 实例的用户数据
trove.conf 中的选项¶
服务租户凭据,根据您自己的环境更改这些值。
[service_credentials] auth_url = <Keystone service URL> username = admin password = password user_domain_name = default project_name = admin project_domain_name = default region_name = RegionOne
管理配置选项。
- management_networks
Trove 管理网络 ID 列表。云管理员需要创建这些网络。
- management_security_groups
应用于 trove 实例管理端口的安全组 ID。云管理员需要创建这些安全组。
- nova_keypair
用于创建 trove 实例的 Nova 密钥对。云管理员需要创建密钥对。
- cinder_volume_type
用于创建附加到 trove 实例的卷的 Cinder 卷类型名称,否则,用户需要在创建实例时提供卷类型。
准备 Trove 数据库¶
创建 Trove 数据库模式
连接到存储后端 (MySQL, PostgreSQL)
创建一个名为 trove 的数据库(此数据库将用于存储 Trove ORM)
组合连接字符串。示例:
mysql+pymysql://<user>:<password>@<backend_host>:<backend_port>/<database_name>
初始化数据库¶
创建 Trove 数据库后,需要填充其结构。
$ trove-manage db_sync
创建并注册 Trove guest 镜像¶
要构建 Trove guest 镜像,请参阅 构建 guest agent 镜像
运行 Trove¶
启动 Trove 服务¶
运行 trove-api
$ trove-api --config-file=${TROVE_CONF_DIR}/trove.conf &
运行 trove-taskmanager
$ trove-taskmanager --config-file=${TROVE_CONF_DIR}/trove.conf &
运行 trove-conductor
$ trove-conductor --config-file=${TROVE_CONF_DIR}/trove.conf &