作者:陈苏女士 | 来源:互联网 | 2014-05-27 20:14
本文总结了在多节点上部署openstack时碰到的一些问题,算是对自己前段时间的工作做一小结。转载请注明出处。1、假设当前主机名为“computer”,IP地址为“192.168.136.123”在当前主机安装mysqlserver,创建数据库nova,并执行如下语句:grantallonnov
本文总结了在多节点上部署openstack时碰到的一些问题,算是对自己前段时间的工作做一小结。
转载请注明出处。
1、假设当前主机名为“computer”,IP地址为“192.168.136.123”在当前主机安装mysql
server,创建数据库nova,并执行如下语句:
grant all on nova.* to 'nova'@'%' identified by 'nova';
在其他主机上通过如下语句:
mysql -h 192.168.136.123 -u nova -p
连接正常。但是在当前主机确连接失败,检查相关的日志后发现,当前主机会将192.168.136.123地址解析为当前主机的主机名,但是在mysql数据中,当前主机的主机名没有访问nova数据库的权限。
解决方法:
grant all on nova.* to 'nova'@'computer' identified by 'nova';
或者
在myql配置文件中添加
skip-name-resolve参数
2、根据官方的文档正常安装keystone认证系统后,测试却无法通过,显示“Connetion Refused”。
经检查,发现keystone认证模块的监听端口在新版本中已经发生变化。
解决方法:
在keystone的配置文件中,将认证端口,从5001改为35357
3、在采用keystone认证系统后,glance的操作必须通过Token进行,其中admin_token是在keystone初始化的时候设定的,改token记录在数据库当中。
4、rabbitmq-server初始的guest用户没有密码,更改密码:
rabbitmqctl change_password username newpassword
更改密码后,其他相关组件的配置文件须做出相应的修改,并重启。
5、根据官方文档,执行如下命令创建网络:
nova-manage network create 10.0.0.0/24 1 255
出现错误,Command Failed, Please check log for more information.
日志中:
NetworkNotCreated: --bridge_interface is required to create a
network
重新运行如下的命令:
nova-manage network create 10.0.0.0/24 1 255
--bridge_interface=br100
(其中br100为本机上设置的网桥,并绑定到内网接口)
又出现错误:Command Failed, Please check log for more information
日志中:
Value Error:the network range is not big enough to fit 255. network
size is 1
原因在于,新版本中,网络创建命令的格式发生了变化。
解决方法:
nova-manage network create public 10.0.0.0/24 1 255
--bridge_interface=br100
6、noVNC不能连接到虚拟机实例,显示“Connection Refuesd”提示。
原因是控制节点在收到vnc请求的时候,无法解析计算节点的主机名,从而无法和计算节点上的虚拟机建立连接。
另外一个原因是,当前浏览器不支持(如crhome浏览器,firefox11)
解决方法:
更换浏览器
将计算节点的ip和主机名的对应关系加入到控制节点的/etc/hosts文件中。
7、每个计算节点中的虚拟机会被分配不同的虚拟网卡接口,如vnet0, vnet1, vnet2等等。
而这些虚拟网卡接口都是绑定在一个虚拟的网桥上边的(如br100),以便虚拟机实例之间互相通信.
没有安装network服务的节点上的br100网桥都没有设置ip地址,而安装了network服务的br100网桥则被设置为网关。
8、noVNC连接虚拟机的一个大概流程:
(1)kvm启动的虚拟机在计算节点上启动了一个VNC服务
(2)控制节点noVNC对该VNC服务进行一个代理
(3)终端用户访问控制节点,控制节点返回给用户一个VNC界面
9、多节点部署完成后,通过nova-manage service
list命令发现,计算节点的各个服务时断时好,经检查,原因在于,计算节点和控制节点的时间不同步造成该问题。
解决方法:
通过ntp同步计算节点和控制节点的时间
10、上传ubuntu镜像的过程中,内核和内存盘可以成功上传,但是ubuntu的镜像文件上传失败,提示“”Failed to
connect to the Glance API server, is the server running?
经分析检查,原因在于,ubuntu镜像文件过大。
解决办法:
减小ubuntu镜像文件大小,或者重新设置glance中的chunk size,并重新启动服务
11、如果采用FlatManager的网络模式,则必须手动的建立相关的网桥,以便虚拟机实例之间以及和主机之间进行通信,此外,必须手动的将虚拟机实例的内部IP加入到nova数据库的fixed_ips表中。
此外,fiexed_ips表保着所有可供虚拟机实例使用的内部IP,每次发起一个新的虚拟机实例,openstack的网络服务部分,根据fixed_ips表中的内容分配给该虚拟机实例一个IP。如果用户希望保留特定的IP地址,那么需要将该IP对应的reserved字段设置为1。
12、restart nova-network
restart: Unknown instance
改为:
start nova-network
13、nova的配置文件默认存放在/etc/nova/nova.conf中,其中涉及到nova各个参数的配置。
nova所有的参数可以通过nova-api --help进行查看
14、flatdhcp模式下,network_size是整个fixed_ip
range中的所有ip数。例如在一个A类/12的网络中,有2^20个IP地址,所有的这些IP地址都要写入fixed_ips数据库表中,这将会花费很多的时间,导致假死。
15、keystone认证系统无法输出日志。
keystone.conf文件中设置了log_cOnfig=/etc/keystone/logging.conf,但是貌似该设置不起作用。
采用:
log_file=/var/log/keystone.log
16、虚拟机实例已经绑定了浮动IP,并且控制节点的对外网络接口上也发现了相关的浮动IP地址,但是通过ssh却无法进行连接。
解决:
在dashboard中添加相关的安全规则。security group -> edit rules
添加:icmp -1 -1 0/0;tcp 22 22 0/0
17、通过dashboard启动虚拟机实例,发现当虚拟机的内存设置为4G的时候,虚拟机无法启动。相关日志提示,无法创建内存大于4G的虚拟机。检查分析后发现,计算节点的操作系统为32位,因此,kvm上启动的虚拟机内存受到限制。
解决方法:
更改计算节点的操作系统为64位
18、在采用keystone认证前端的情况下,按照euca2ools官方的使用文档进行配置后,仍然无法使用euca工具集,相关日志显示,用户认证失败。原因在于,keystone用户认证系统的加入,对euca2ools工具集的配置产生的一定的影响。
解决:
将生成的novarc配置文件中的NOVA_USERNAME和NOVA_API_KEY分别改为keystone数据库的用户名和密码,而不再是一长串token
19、使用UEC镜像,虚拟机实例在启动后会通过169.254.169.254:80获取相关的metadata,?面包含instance
id 等??,但是该地址是在nova-api服务器上的,在某些情况下,虚拟机实例无法连接到该地址,日志中会出现如下的错误:
http://169.254.169.254′ failed: url error
解决方法:
在计算节点上配置iptable,使得该请求转向nova-api服务器。
iptables -t nat -A PREROUTING -d 169.254.169.254/32 -p tcp -m
tcp --dport 80 -j DNAT --to-destination $NOVA_API_IP:8773
20、单网卡且采用FlatDHCP方式部署openstack,在开放了icmp和ssh22端口的情况下,仍然无法通过控制节点连接到虚拟机实例。此时应该检查控制节点的ip配置信息。
ip addr
此时网卡上应该绑定有两个IP地址,一个是控制节点的IP,另外一个是虚拟机实例网络的网关。应该将虚拟机实例的网关放在IP列表的第一位。
解决方法:
ip addr del x.x.x.x dev device
ip addr del x.x.x.x dev device
ip addr add 虚拟机网关 dev device
ip addr add 控制节点IP dev device
21、openstack中,nova-manage
create用来创建虚拟机运行时所需的内网,并且将相关的IP地址记录到fixed_ips数据表中。但是,当调用nova-manage
delete 时,并不会自动的删除fixed_ips中的内容,需手动进行删除。
22、无法连接到虚拟机实例的时候,应该检查如下的环节:
a 公共IP是否已经绑定到了公共网卡接口上,ip addr
b 查看iptable的设置,NAT规则是否设置正确,iptables-save
c 检查安全组设置,euca-describe-groups
24、制作windows2008镜像的时候,如果采用raw格式,生成的镜像文件在计算节点中运行会出现蓝屏现象。应该采用如下格式创建磁盘并安装windows2008:
kvm-image create -f qcow2 windows2008.img 50G
此外在安装windwos2008的时候,应该加载virtio驱动。
windows镜像制作完成后,须在安全组里添加3389端口,以便windwos远程桌面访问。
25、keystone配置时,留意endpoint的设定,结尾不要有多余的"/”,否则会出现认证失败。
26、虚拟机在build阶段时,不要进行重启操作,否则会出现kernel panic现象。(bug)
27、在openstack中,nova失去rabbitmq连接后,会尝试重新进行连接,默认尝试12次,每次间隔10秒,到时间后,如果还没有连上,则抛出错误,退出。
#防止 rabbitmq重启导致 compute 死掉
rabbit_max_retries=0
相关文件:impl_kombu.py
28、在 openstack 下,重新启动compute,实例不会自动恢复,解决办法:
修改 /etc/nova.conf,添加两个选项:
start_guests_on_host_boot = True
resume_guests_state_on_host_boot =True
29、openstack的热迁移,关键是要把nfs配好,而且nfs所在的主机不能安装计算节点。
30、在PC目标机器上,kvm可以最多模拟255核的CPU,超过这个数目虚拟机将不能启动。此外,kvm虚拟机在启动的时候,会从宿主机申请所需的内存,如果申请失败,虚拟机也不能正常启动。