部署Openstack报错及解决办法
时间:2019-12-24 13:30 来源:linux.it.net.cn 作者:IT
1、nova image-show 报错500
yum downgrade python-urllib3 版本1.10
yum downgrade python-requests 版本2.7
2、http启动报错
cp /usr/share/keystone/keystone.wsgi /var/www/cgi-bin/keystone/admin
cp /usr/share/keystone/keystone.wsgi /var/www/cgi-bin/keystone/main
httpd
3、neutron报timeout
/etc/neutron/neutron.conf中会有一个配置项“rpc_response_timeout”,它用来配置RPC的超时时间,默认为60s,所以导致超时异常.解决方法为设置rpc_response_timeout=180
在controller上
4、rabbitmq报错406
删除openstack用户,重新建立一个
rabbitmqctl delete_user openstack
rabbitmqctl add_user openstack RABBIT_PASS
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
5、删除僵尸实例
OpenStack Juno 删除僵尸实例
注意:这里还有一个很关键的问题没解决,配额信息如何处理?查看僵尸实例占用了多少配额倒是比较简单,但如何把这些配额释放回去?
我目前只能人工计算删除之后的instance、cores、ram值,然后去reservations和quota_usages表中修改。
这个方法很二缺,而且容易出错,但暂时没有更好的办法,还望路过的前辈支个招。
操作之前,我也尝试在网上找了一些,很多都是同出一源,屏蔽外键(SET FOREIGN_KEY_CHECKS=0;),然后删除instances表中的记录。显而易见,这种方式很暴力,会留下相当多的数据库垃圾条目。
当然,也是有一些通过脚本,或者逐条清除的办法来解决的,但版本相对比较早,比如像这位前辈的blog中的记录(传送门),关联的数据库条目相对非常少。
所以,只好自己照着前辈的方法摸索着去处理了…
以下以demo1实例为例,测试删除僵尸实例
获取当前状态,尝试删除,状态仍然是ERROR技术分享
[root@controller ~(demo)]$ nova list |grep demo1
| 38887ca5-b697-451f-8d95-36b8b64aae3e | demo1 | ERROR | - | NOSTATE | |
回收floating ip,这个例子里面实例并没有分配到floating ip,但还是需要先提出来,避免出现更多的数据库外键错误
# nova remove-floating-ip demo1 192.168.8.101
# nova floating-ip-delete 192.168.8.101
确认需要删除的实例的id,在数据库的表中,它可能以uuid,instance_uuid,id等名称出现
# nova list | grep demo1
从上面图中可以看到id是 38887ca5-b697-451f-8d95-36b8b64aae3e
确认数据库中此实例的信息
mysql -uroot -pPASSWORD -e "USE nova; SELECT uuid, vm_state, display_name FROM instances WHERE uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
逐条删除数据库表记录
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM security_group_instance_association WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_info_caches WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM block_device_mapping WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_extra WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_actions_events WHERE action_id IN (SELECT id FROM instance_actions WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘) ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_actions WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_faults WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instances WHERE uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
如果删除过程中提示还有其他外键,比如以下提示,
ERROR 1451 (23000) at line 1: Cannot delete or update a parent row: a foreign key constraint fails (`nova`.`instance_system_metadata`, CONSTRAINT `instance_system_metadata_ibfk_1` FOREIGN KEY (`instance_uuid`) REFERENCES `instances` (`uuid`))
在执行命令时,依次替换3个下划线的位置。第1个是关联外键所在表,第2个是该表中相关联的字段,第3个是被引用的表中对应的字段,就是前面查询到的instance_id。前两条直接复制,后面instance_id根据实际需要删除的实例的uuid去替换。执行的实际命令如下:
mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;"
接下来,删除实例所使用的镜像。默认位于 /var/lib/nova/instances 目录中,镜像文件仍然是以instance_id命名,删除整个instance_id的文件夹即可。保险起见,可以将文件夹先备份到其他位置保留一段时间。
最后,就是前面提到的,手动去处理配额用量信息。
6、cinder创建云硬盘一直显示创建中,查看debug去抓8776然后就不动了
cinder配置文件没关联到ceph
7、dashboard能正常登陆,能做一系列的操作,但在做删除操作时会报如下错误
解决:在/etc/openstack-dashboard/local_settings中的import os后加入相关模块三行
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
然后重启httpd和memcached
8、dashbaord session过期后再无法登录,报错
在/etc/openstack-dashboard/local.settings 加上一行 AUTH_USER_MODEL='openstack_auth.User'
9、FWaas安装完后数据库没有对应的表,导致无法创建防火墙
su -s /bin/sh -c "neutron-db-manage --service fwaas --service_plugins openstack-neutron-fwaas upgrade head" neutron
10、raw格式的镜像修改实例密码
网络节点:yum install cloud-init
计算节点:vim /etc/nova/nova.conf 加force_config_drive=true/always
创建主机时引用文件:
#cloud-config
ssh_pwauth: true
disable_root: 0
user: root
password: abc123
chpasswd:
expire: false
11、raw格式镜像地址
centos7:http://cloud.centos.org/centos/7/images/
centos6:http://cloud.centos.org/centos/6/images/
删除clond.conf里users里的root
ubuntu:http://cloud-images.ubuntu.com/daily/server
转换镜像格式:http://docs.openstack.org/image-guide/convert-images.html
12、rabbitmq报错
2016-08-12 23:13:26.072 3683 ERROR oslo_messaging._drivers.impl_rabbit [-] AMQP server on 172.16.0.1:5672 is unreachable: [Errno 104] Connection reset by peer. Trying again in 1 seconds
:
配置文件里面rabbit-hosts 记得加“s”
13、neutron 9696端口与LB问题:
LB需要调成7层模式,会话保持与openstack一致
14、HA环境中查看vnc界面失败,刷新几下才好,再刷新又不好
在所有controller上/etc/nova/nova.conf的default模块中添加:memcached_servers = 172.16.0.1:11211,172.16.0.2:11211,172.16.0.3:11211
如果还没好:
查看netstat -lntap |grep memcache
保证监听的是0.0.0.0:11211,如果监听的是127.0.0.1,则需要修改:/etc/sysconfig/memcached
将OPTIONS="-l 127.0.0.1,::1"改成OPTIONS=""
15、修改openstack默认配额
修改controller上的nova.conf文件里面的quota选项
网络相关选项在controller上的neutron.conf里
16、cinder存储节点日志报错:(OperationalError) (1040, 'Too many connections') None None
增加mysql最大连接数
17、ceilometer meter-list报错: The service catalog is empty
修改环境变量:vim ceilometer-openrc.sh
unset OS_PROJECT_DOMAIN_ID
unset OS_USER_DOMAIN_ID
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=Admin@1233
export OS_AUTH_URL=http://172.16.0.100:35357/v2.0
export OS_IMAGE_API_VERSION=2
export OS_VOLUME_API_VERSION=2
18、rabbitmq启动报错ERROR: node with name "rabbit" already running
ps aux | grep erl
kill -9 该进程
19、rabbitmq优化命令
rabbitmqctl stop
rabbitmq-server -detached
20、创建实例一直显示scheduling,nova-schedul日志一直调度:
有一台计算节点坏了,但是dashboard上没有关闭这个坏的计算节点,先将其关闭,然后重启计算节点上的nova-compute服务
21、cinder-volumes云硬盘dashboard和命令都删不掉:
进入数据库:
>UPDATE volumes SET attach_status='detached',status="available" WHERE id='647d95ff-851d-415c-aba6-9419e5541758';
22、查看镜像报错:The resource could not be found. (HTTP 404)
Deferring keystone exception: The plugin token_endpoint could not be found
删除当前环境变量: unset OS_TOKEN OS_URL
重新创建:. admin-openrc
23、通过libvirt-set-admin-password方式修改实例登录密码:
安装相关软件(计算+控制):
libvirt 1.2.16+ 宿主机
python-libvirt 1.2.16+ 宿主机
qemu-guest-agent 2.3+ 虚机内部 https://launchpad.net/ubuntu/+source/qemu
虚机镜像除了要安装qemu-guest-agent外,镜像本身还要设置hw_qemu_guest_agent属性:
json文件在控制节点/etc/glance/metadefs目录下
导入元数据文件:compute-libvirt-image.json
# glance-manage db_load_metadefs 导入所有默认的元数据文件
在镜像处选择更新元数据: libvirt Driver Options for Images 下的hw_qemu_guest_agent的值为yes。
在控制节点:
# nova list
# nova root-password 实例名字
New password:
Again:
24、使用ovs安全组策略不生效:
在计算节点的openvswitch_agent.ini文件里的[securitygroup]模块下添加::
enable_ipset = True
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
开启所有计算节点的iptables服务
25、dashboard上面调整云主机大小不生效,计算节点报错:
原因:
OpenStack的云主机配置类型的修改,其实相当于做了一个云主机在不同宿主机的迁移,所以需要在相关迁移云主机进行无密码访问,由于OpenStack是由Nova组件来管理云主机,所以需要对Nova用户进行无密码访问。
需要配置各节点的ssh无密码访问
26、更改云主机密码
nova meta 主机名 set changePasswd=True admin_pass=密码
27、云主机热迁移配置:
所有计算节点:
vim /etc/nova/nova.conf
在[libvirt]下添加:
live_migration_flag = VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED
vim /etc/libvirt/libvirtd.conf
添加:
listen_tls = 0
listen_tcp = 1
auth_tcp = "none"
tcp_port = "16509"
listen_addr = "本机IP"
vim /etc/sysconfig/libvirtd
添加:LIBVIRTD_ARGS="--listen"
# service openstack-nova-compute restart
# service libvirtd restart
# netstat -lntp|grep 16509 如果有端口就成功了
28、配置云主机实例cpu型号和物理机一致:
修改所有计算节点:
# vim /etc/nova/nova.conf
在[libvirt]下添加cpu_mode=host-passthrough
如果想指定某个型号:
cpu_mode=custom
cpu_model=型号
(支持的型号列表文件: /usr/share/libvirt/cpu_map.xml)
注意:型号要和物理机兼容,否则云主机系统起不来
(责任编辑:IT)
1、nova image-show 报错500 yum downgrade python-urllib3 版本1.10 yum downgrade python-requests 版本2.7 2、http启动报错 cp /usr/share/keystone/keystone.wsgi /var/www/cgi-bin/keystone/admin cp /usr/share/keystone/keystone.wsgi /var/www/cgi-bin/keystone/main httpd 3、neutron报timeout /etc/neutron/neutron.conf中会有一个配置项“rpc_response_timeout”,它用来配置RPC的超时时间,默认为60s,所以导致超时异常.解决方法为设置rpc_response_timeout=180 在controller上 4、rabbitmq报错406 删除openstack用户,重新建立一个 rabbitmqctl delete_user openstack rabbitmqctl add_user openstack RABBIT_PASS rabbitmqctl set_permissions openstack ".*" ".*" ".*" 5、删除僵尸实例 OpenStack Juno 删除僵尸实例 注意:这里还有一个很关键的问题没解决,配额信息如何处理?查看僵尸实例占用了多少配额倒是比较简单,但如何把这些配额释放回去? 我目前只能人工计算删除之后的instance、cores、ram值,然后去reservations和quota_usages表中修改。 这个方法很二缺,而且容易出错,但暂时没有更好的办法,还望路过的前辈支个招。 操作之前,我也尝试在网上找了一些,很多都是同出一源,屏蔽外键(SET FOREIGN_KEY_CHECKS=0;),然后删除instances表中的记录。显而易见,这种方式很暴力,会留下相当多的数据库垃圾条目。 当然,也是有一些通过脚本,或者逐条清除的办法来解决的,但版本相对比较早,比如像这位前辈的blog中的记录(传送门),关联的数据库条目相对非常少。 所以,只好自己照着前辈的方法摸索着去处理了… 以下以demo1实例为例,测试删除僵尸实例 获取当前状态,尝试删除,状态仍然是ERROR技术分享 [root@controller ~(demo)]$ nova list |grep demo1 | 38887ca5-b697-451f-8d95-36b8b64aae3e | demo1 | ERROR | - | NOSTATE | | 回收floating ip,这个例子里面实例并没有分配到floating ip,但还是需要先提出来,避免出现更多的数据库外键错误 # nova remove-floating-ip demo1 192.168.8.101 # nova floating-ip-delete 192.168.8.101 确认需要删除的实例的id,在数据库的表中,它可能以uuid,instance_uuid,id等名称出现 # nova list | grep demo1 从上面图中可以看到id是 38887ca5-b697-451f-8d95-36b8b64aae3e 确认数据库中此实例的信息 mysql -uroot -pPASSWORD -e "USE nova; SELECT uuid, vm_state, display_name FROM instances WHERE uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" 逐条删除数据库表记录 mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM security_group_instance_association WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_info_caches WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM block_device_mapping WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_extra WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_actions_events WHERE action_id IN (SELECT id FROM instance_actions WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘) ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_actions WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_faults WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instances WHERE uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" 如果删除过程中提示还有其他外键,比如以下提示, ERROR 1451 (23000) at line 1: Cannot delete or update a parent row: a foreign key constraint fails (`nova`.`instance_system_metadata`, CONSTRAINT `instance_system_metadata_ibfk_1` FOREIGN KEY (`instance_uuid`) REFERENCES `instances` (`uuid`)) 在执行命令时,依次替换3个下划线的位置。第1个是关联外键所在表,第2个是该表中相关联的字段,第3个是被引用的表中对应的字段,就是前面查询到的instance_id。前两条直接复制,后面instance_id根据实际需要删除的实例的uuid去替换。执行的实际命令如下: mysql -uroot -pPASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid=‘38887ca5-b697-451f-8d95-36b8b64aae3e‘ ;" 接下来,删除实例所使用的镜像。默认位于 /var/lib/nova/instances 目录中,镜像文件仍然是以instance_id命名,删除整个instance_id的文件夹即可。保险起见,可以将文件夹先备份到其他位置保留一段时间。 最后,就是前面提到的,手动去处理配额用量信息。 6、cinder创建云硬盘一直显示创建中,查看debug去抓8776然后就不动了 cinder配置文件没关联到ceph 7、dashboard能正常登陆,能做一系列的操作,但在做删除操作时会报如下错误 解决:在/etc/openstack-dashboard/local_settings中的import os后加入相关模块三行 import sys reload(sys) sys.setdefaultencoding('utf-8') 然后重启httpd和memcached 8、dashbaord session过期后再无法登录,报错 在/etc/openstack-dashboard/local.settings 加上一行 AUTH_USER_MODEL='openstack_auth.User' 9、FWaas安装完后数据库没有对应的表,导致无法创建防火墙 su -s /bin/sh -c "neutron-db-manage --service fwaas --service_plugins openstack-neutron-fwaas upgrade head" neutron 10、raw格式的镜像修改实例密码 网络节点:yum install cloud-init 计算节点:vim /etc/nova/nova.conf 加force_config_drive=true/always 创建主机时引用文件: #cloud-config ssh_pwauth: true disable_root: 0 user: root password: abc123 chpasswd: expire: false 11、raw格式镜像地址 centos7:http://cloud.centos.org/centos/7/images/ centos6:http://cloud.centos.org/centos/6/images/ 删除clond.conf里users里的root ubuntu:http://cloud-images.ubuntu.com/daily/server 转换镜像格式:http://docs.openstack.org/image-guide/convert-images.html 12、rabbitmq报错 2016-08-12 23:13:26.072 3683 ERROR oslo_messaging._drivers.impl_rabbit [-] AMQP server on 172.16.0.1:5672 is unreachable: [Errno 104] Connection reset by peer. Trying again in 1 seconds : 配置文件里面rabbit-hosts 记得加“s” 13、neutron 9696端口与LB问题: LB需要调成7层模式,会话保持与openstack一致 14、HA环境中查看vnc界面失败,刷新几下才好,再刷新又不好 在所有controller上/etc/nova/nova.conf的default模块中添加:memcached_servers = 172.16.0.1:11211,172.16.0.2:11211,172.16.0.3:11211 如果还没好: 查看netstat -lntap |grep memcache 保证监听的是0.0.0.0:11211,如果监听的是127.0.0.1,则需要修改:/etc/sysconfig/memcached 将OPTIONS="-l 127.0.0.1,::1"改成OPTIONS="" 15、修改openstack默认配额 修改controller上的nova.conf文件里面的quota选项 网络相关选项在controller上的neutron.conf里 16、cinder存储节点日志报错:(OperationalError) (1040, 'Too many connections') None None 增加mysql最大连接数 17、ceilometer meter-list报错: The service catalog is empty 修改环境变量:vim ceilometer-openrc.sh unset OS_PROJECT_DOMAIN_ID unset OS_USER_DOMAIN_ID export OS_PROJECT_NAME=admin export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=Admin@1233 export OS_AUTH_URL=http://172.16.0.100:35357/v2.0 export OS_IMAGE_API_VERSION=2 export OS_VOLUME_API_VERSION=2 18、rabbitmq启动报错ERROR: node with name "rabbit" already running ps aux | grep erl kill -9 该进程 19、rabbitmq优化命令 rabbitmqctl stop rabbitmq-server -detached 20、创建实例一直显示scheduling,nova-schedul日志一直调度: 有一台计算节点坏了,但是dashboard上没有关闭这个坏的计算节点,先将其关闭,然后重启计算节点上的nova-compute服务 21、cinder-volumes云硬盘dashboard和命令都删不掉: 进入数据库: >UPDATE volumes SET attach_status='detached',status="available" WHERE id='647d95ff-851d-415c-aba6-9419e5541758'; 22、查看镜像报错:The resource could not be found. (HTTP 404) Deferring keystone exception: The plugin token_endpoint could not be found 删除当前环境变量: unset OS_TOKEN OS_URL 重新创建:. admin-openrc 23、通过libvirt-set-admin-password方式修改实例登录密码: 安装相关软件(计算+控制): libvirt 1.2.16+ 宿主机 python-libvirt 1.2.16+ 宿主机 qemu-guest-agent 2.3+ 虚机内部 https://launchpad.net/ubuntu/+source/qemu 虚机镜像除了要安装qemu-guest-agent外,镜像本身还要设置hw_qemu_guest_agent属性: json文件在控制节点/etc/glance/metadefs目录下 导入元数据文件:compute-libvirt-image.json # glance-manage db_load_metadefs 导入所有默认的元数据文件 在镜像处选择更新元数据: libvirt Driver Options for Images 下的hw_qemu_guest_agent的值为yes。 在控制节点: # nova list # nova root-password 实例名字 New password: Again: 24、使用ovs安全组策略不生效: 在计算节点的openvswitch_agent.ini文件里的[securitygroup]模块下添加:: enable_ipset = True enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver 开启所有计算节点的iptables服务 25、dashboard上面调整云主机大小不生效,计算节点报错: 原因: OpenStack的云主机配置类型的修改,其实相当于做了一个云主机在不同宿主机的迁移,所以需要在相关迁移云主机进行无密码访问,由于OpenStack是由Nova组件来管理云主机,所以需要对Nova用户进行无密码访问。 需要配置各节点的ssh无密码访问 26、更改云主机密码 nova meta 主机名 set changePasswd=True admin_pass=密码 27、云主机热迁移配置: 所有计算节点: vim /etc/nova/nova.conf 在[libvirt]下添加: live_migration_flag = VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED vim /etc/libvirt/libvirtd.conf 添加: listen_tls = 0 listen_tcp = 1 auth_tcp = "none" tcp_port = "16509" listen_addr = "本机IP" vim /etc/sysconfig/libvirtd 添加:LIBVIRTD_ARGS="--listen" # service openstack-nova-compute restart # service libvirtd restart # netstat -lntp|grep 16509 如果有端口就成功了 28、配置云主机实例cpu型号和物理机一致: 修改所有计算节点: # vim /etc/nova/nova.conf 在[libvirt]下添加cpu_mode=host-passthrough 如果想指定某个型号: cpu_mode=custom cpu_model=型号 (支持的型号列表文件: /usr/share/libvirt/cpu_map.xml) 注意:型号要和物理机兼容,否则云主机系统起不来 (责任编辑:IT) |