当前位置: > 其它学习 > OpenStack >

部署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)
------分隔线----------------------------