nova-scheduler-bench 复现笔记(一)
介绍
url:OpenStack Benchmarking for Scheduling
用途:模拟openstack nova的调度
环境:devstack,在demo项目中使用admin用户进行实例创建
语句记录
查看nova相关状态: sudo systemctl status devstack@n-cpu.service
查看特定的服务日志:sudo journalctl -f --unit devstack@n-cpu.service
可以用n-*来看nova所有的状态或服务日志
sudo journalctl -a --unit devstack@n-cpu.service | grep XXX
XXX一般是ERROR等
网址记录
出现问题
一、source 问题
OpenStack Benchmarking for Scheduling中使用 openrc admin admin,但是实际运用中使用了source demo-openrc.sh,具体的差别以及原理并没有进行研究。
二、keystone 5000端口无法访问
可能是devstack搭建过程中留下的坑。
问题描述:在2-create.sh中,需要向 http://localhost:5000/v3/auth/tokens 访问请求X-Subject-Token,但是无法访问5000端口,使用netstat -ntlp查看端口使用情况时发现5000端口并没有开放。
解决方案:
1、使用openstack catalog list查看,发现devstack的访问keystone的url与kolla 安装的opensatck不同。将url修改成 http://localhost/identity。导致新问题:405 method not allowed。
2、使用 openstack token issue获得id,id即为X-Subject-Token。获取的应该只是admin的token。
本方法转自《openstack获取token值的两种方式 2019-05-15》
替换2-create.sh中代码:
//源代码
OS_TOKEN=`curl -i \
-H "Content-Type: application/json" \
-d '
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "admin",
"domain": { "id": "default" },
"password": "123456",
"tenantName": "admin"
}
}
},
"scope": {
"project": {
"name": "admin",
"domain": { "id": "default" }
}
}
}
}' \
http://localhost:5000/v3/auth/tokens | grep X-Subject-Token: | sed -e "s/X-Subject-Token: //"`
//替换后代码
OS_TOKEN=`openstack token issue| grep -w id |sed -e "s/| id | //" |sed -e "s/ |//"`
三、No valid host was found
1-setup.sh调用了killall.sh,将nova的重要进程全部kill,之后基于输入launch了一个scheduler节点sche1,两个compute节点node1, node2。
在 BENCH-conductor-compute19.log 中报错:
2019-11-20 15:40:59.290 ERROR nova.conductor.manager [req-81fbc73a-1902-436e-a93f-4e1fc185d704 admin demo]
Failed to schedule instances: NoValidHost_Remote: No valid host was found. There are not enough hosts available.
devstack原先是部署在单服务器compute19上,由于运行了killall.sh文件,kill了compute19上的nova-conductor, nova-compute, nova-scheduler进程,并在launch的节点中重启这些进程。
数据库中没有nova库,感觉应该是把nova的进程删除之后并没有完全的重新启动,特别是nova-conductor。
//killall.sh
#!/bin/bash
sudo killall nova-scheduler
sudo killall nova-api
sudo killall nova-conductor
sudo killall nova-compute
sudo pkill -f "run_bench.py"
计算节点,即host并没有真正启动,或者没有被加入到主机聚合中。
OpenStack Benchmarking for Scheduling是2016年的,可能适用于较古老版本的openstack,重新安装newton版本的devstack进行尝试,但是并没有搭建成功。后来考虑到N版版本过老,不利于实际的应用,权衡了一下决定使用原来的Train版devstack重新进行实验。但是搭建Train版devstack时出现了很多问题。