OpenStack 后端¶
命令 teuthology-openstack 是 teuthology-suite 的一个包装器,它使用 OpenStack 虚拟机透明地创建 teuthology 集群。
先决条件¶
一个拥有 nova 和 cinder API 访问权限的 OpenStack 租户。如果 cinder API 不可用,某些作业将无法运行,因为它们期望每个实例都附加卷。
在 OVH 上设置 OpenStack¶
每个实例默认都有一个公共 IP。
从 horizon 控制面板获取 $HOME/openrc.sh
设置¶
获取并配置 teuthology
$ git clone http://github.com/ceph/teuthology $ cd teuthology ; ./bootstrap install $ source virtualenv/bin/activate
设置 teuthology 节点
$ teuthology-openstack --key-filename myself.pem --key-name myself --setup
获取 OpenStack 凭证并测试它¶
按照 OpenStack API 快速入门进行操作
source $HOME/openrc.sh
验证 OpenStack 客户端是否正常工作
$ nova list +----+------------+--------+------------+-------------+-------------------------+ | ID | Name | Status | Task State | Power State | Networks | +----+------------+--------+------------+-------------+-------------------------+ +----+------------+--------+------------+-------------+-------------------------+
使用以下命令创建无密码 ssh 公钥
$ openstack keypair create myself > myself.pem +-------------+-------------------------------------------------+ | Field | Value | +-------------+-------------------------------------------------+ | fingerprint | e0:a3:ab:5f:01:54:5c:1d:19:40:d9:62:b4:b3:a1:0b | | name | myself | | user_id | 5cf9fa21b2e9406b9c4108c42aec6262 | +-------------+-------------------------------------------------+ $ chmod 600 myself.pem
用法¶
运行 dummy 套件。它没有实际用途,但能显示一切按预期工作。请注意,首次运行时可能需要很长时间(从几分钟到半小时左右),因为它需要下载并上传一个云镜像到 OpenStack 提供商。
$ teuthology-openstack --key-filename myself.pem --key-name myself --suite dummy Job scheduled with name ubuntu-2015-07-24_09:03:29-dummy-main---basic-openstack and ID 1 2015-07-24 09:03:30,520.520 INFO:teuthology.suite:ceph sha1: dedda6245ce8db8828fdf2d1a2bfe6163f1216a1 2015-07-24 09:03:31,620.620 INFO:teuthology.suite:ceph version: v9.0.2-829.gdedda62 2015-07-24 09:03:31,620.620 INFO:teuthology.suite:teuthology branch: main 2015-07-24 09:03:32,196.196 INFO:teuthology.suite:ceph-qa-suite branch: main 2015-07-24 09:03:32,197.197 INFO:teuthology.repo_utils:Fetching from upstream into /home/ubuntu/src/ceph-qa-suite_main 2015-07-24 09:03:33,096.096 INFO:teuthology.repo_utils:Resetting repo at /home/ubuntu/src/ceph-qa-suite_main to branch main 2015-07-24 09:03:33,157.157 INFO:teuthology.suite:Suite dummy in /home/ubuntu/src/ceph-qa-suite_main/suites/dummy generated 1 jobs (not yet filtered) 2015-07-24 09:03:33,158.158 INFO:teuthology.suite:Scheduling dummy/{all/nop.yaml} 2015-07-24 09:03:34,045.045 INFO:teuthology.suite:Suite dummy in /home/ubuntu/src/ceph-qa-suite_main/suites/dummy scheduled 1 jobs. 2015-07-24 09:03:34,046.046 INFO:teuthology.suite:Suite dummy in /home/ubuntu/src/ceph-qa-suite_main/suites/dummy -- 0 jobs were filtered out. 2015-07-24 11:03:34,104.104 INFO:teuthology.openstack: web interface: http://167.114.242.13:8081/ ssh access : ssh ubuntu@167.114.242.13 # logs in /usr/share/nginx/html访问 Web 界面(URL 显示在 teuthology-openstack 输出的末尾)来监控套件的进度。
运行套件的虚拟机将保留用于取证分析目的。要销毁它,运行以下命令:
$ teuthology-openstack --key-filename myself.pem --key-name myself --teardown
可以使用
--upload标志将测试结果上传到可公开访问的位置$ teuthology-openstack --key-filename myself.pem --key-name myself \ --suite dummy --upload
故障排除¶
Debian Jessie 用户可能会遇到以下错误
NameError: name 'PROTOCOL_SSLv3' is not defined
有报告称 此变通方法有效,即在 ssl.py 中将 PROTOCOL_SSLv3 替换为 PROTOCOL_SSLv23。
运行 OpenStack 后端集成测试¶
运行集成测试的最简单方法是首先运行一个 dummy 套件
$ teuthology-openstack --key-name myself --suite dummy
...
ssh access : ssh ubuntu@167.114.242.13
这将创建一个适用于集成测试的虚拟机。使用 teuthology-openstack 命令末尾显示的 ssh 访问登录,并运行以下命令:
$ pkill -f teuthology-worker
$ cd teuthology ; pip install "tox>=1.9"
$ tox -v -e openstack-integration
integration/openstack-integration.py::TestSuite::test_suite_noop PASSED
...
========= 9 passed in 2545.51 seconds ========
$ tox -v -e openstack
integration/test_openstack.py::TestTeuthologyOpenStack::test_create PASSED
...
========= 1 passed in 204.35 seconds =========
定义实例规格和卷¶
OpenStack 后端创建的每个目标(即 OpenStack 术语中的虚拟机或实例)都完全相同。默认情况下,它们至少有 8GB RAM、20GB 磁盘、1 个 CPU,没有附加磁盘。这等同于在 ~/.teuthology.yaml 文件中包含以下内容:
openstack:
...
machine:
disk: 20 # GB
ram: 8000 # MB
cpus: 1
volumes:
count: 0
size: 1 # GB
如果作业需要更多 RAM 或磁盘等,可以在现有方面(teuthology 术语中的 yaml 文件)中包含以下内容:
openstack:
- machine:
disk: 100 # GB
volumes:
count: 4
size: 10 # GB
Teuthology 将此解释为最低要求,在 ~/.teuthology.yaml 文件中找到的默认值之上,作业将获得至少 100GB 根磁盘、8GB RAM、1 个 CPU 和四个 10GB 附加卷的实例。最高值优先:如果作业声称需要 4GB RAM 而默认值为 8GB RAM,则所有目标都将拥有 8GB RAM。
注意 machine 键之前的短划线:openstack 元素是一个包含一个值的数组。如果缺少短划线,它就是一个字典。这很重要,因为每个作业可以有多个条目,例如:
openstack:
- machine:
disk: 40 # GB
ram: 8000 # MB
openstack:
- machine:
ram: 32000 # MB
openstack:
- volumes: # attached to each instance
count: 3
size: 200 # GB
当一个作业由这些组成时,teuthology 会将它们聚合为:
openstack:
- machine:
disk: 40 # GB
ram: 8000 # MB
- machine:
ram: 32000 # MB
- volumes: # attached to each instance
count: 3
size: 200 # GB
即,所有条目都以与 tasks 相同的方式分组在一个列表中。资源要求是每个元素中找到的资源(包括默认值)的最大值。在上面的示例中,它等同于:
openstack:
machine:
disk: 40 # GB
ram: 32000 # MB
volumes: # attached to each instance
count: 3
size: 200 # GB