OpenStack菜鸟级故障排除
本帖最后由 徐超 于 2015-4-6 21:50 编辑问题导读:
1、你是如何解决OpenStack报错的?
2、谈谈你的方法吧?
static/image/hrline/4.gif
写在前面的废话
本篇主要讲解OpenStack服务的一般故障排除,仅作抛砖引玉之用。亦是“OpenStack服务检查”的姐妹篇。下面的内容,大神请飘过。
OpenStack的故障排除和错误检查,确实是一件让我们这些菜鸟很头疼、很郁闷、纠结的事情,我连OpenStack都还未入门,当然大神除外,大神也不用看了。
好了,咱们节约时间,开始进入正题吧,你懂的。
一、Nova故障排除
1、不能ping通或ssh连到实例
1)当启动实例时,指定一个ssh、icmp、http等适合自己需求的规则及安全组。
2)检查是否启用了网络转发功能
# sysctl -A | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward = 1应该设置为1,否则,应该检查/etc/sysctl.conf文件是否为上面那样的选项设置。
修改之后,执行如下命令,进行更新,你懂的:
# sysctl -p
3)Nova服务重启命令,centos 7版本
# /bin/systemctl restartopenstack-nova-compute.service
如果,重启服务之后,创建VM时,还是报错,则重启系统试试。
4)如果设置了正确的安全组和规则,仍不能ping通实例,则检查路由器的外部网关状态是否为”ACTIVE“,否则,则需要修正。
5)此外,还有可能是IPV6问题,如果环境中不需要,则应该取消。添加--use_ipv6=false到/etc/nova/nova.conf文件中,并重启Nova-compute和Nova-network服务。此外,也可通过修改/etc/modprobe.d/ipv6.conf文件,来从操作系统中取消。
# install ipv6 /bin/true
6)检查neutron服务是否运行正常,以及是否使用了正确的IP命名空间。
2、实例启动时停在Building或Pending阶段
1)在控制节点上,执行如下命令
#nova-manage logs errors
2)当故障实例未能正常启动时,可查看日志文件/var/log/nova/nova-compute.log文件。该文件可能包含实例堵塞在Building状态的原因。如果环境繁忙,可以tail 日志文件并用实例的ID号过滤日志信息。
3)检查/var/log/nova/nova-network.log文件,如果实例没有正确的分配到IP地址,可能是dhcp服务无法分配地址或者IP配额已满的问题。应该检查/var/log/neutron/*.log文件。
二、403、500等错误代码
1、40X:指一个服务已经正常运行,但用户执行的命令或调度任务出错。例如,401是身份认证失败。
2)50X:指一个服务没有正常运行,所以请检查该服务是否运行正常。
查看openstack环境中的所有实例
# nova-manage vm list
# virsh list --all
三、Swift故障排除
1)身份认证问题
应当查看keystone服务日志或从执行任务的报错信息中理解。
2)查看一个容器的ACL
# swift -V 2.0 -A http://192.168.1.10:5000/v2.0 -U tenant:admin -K admin stat container
3)处理磁盘故障
当openstack swift环境中的磁盘出现故障时,首先确认磁盘已经被卸载,然后替换掉磁盘并重新调整ring。
4)处理服务器故障并重启系统
四、Horizon故障排除
1、无法登陆到Dashboard
检查用户名或密码是否正确,比如:
# echo $OS_USERNAME
admin
2、如果可以登录,但是界面提示”Something went wrong“,则要检查运行horizon的机器可以访问所有keystone的服务。
# for i in 'keystone endpoint-list | grep http | awk {'print $6'} | cut -d / -f 3,3 | cut -d : -f 1';do ping -c 1 $i;done
3、还可以编辑horizon的配置文件/etc/openstack-dashboard/local_settings中的LOGGING部分,来打开更详细的日志输出来定位错误。
五、Keystone故障排除
1)错误配置端点
如果在日志中出现http 500错误信息,则表示试图访问的服务不存在,导致客户端连接超时。为验证在每个区域中的端点,执行如下命令:
# keystone endpoint-list
什么,还有一个更加人性化和详细的命令,那又是什么东东,且看:
# keystone catalog
进一步判断服务的类型,例如,要显示所有区域中的计算服务的adminURL:
# keystone endpoint-get --service compute --endpoint_type adminURL
+------------------+--------------------------------------------------------------+
| Property | Value |
+------------------+--------------------------------------------------------------+
| compute.adminURL | http://192.168.1.10:8774/v2/1f7e9eb5143c48a59c1b164d54f45e58 |
+------------------+--------------------------------------------------------------+
2)身份认证问题
首先,查看相关服务的日志,比如Nova、glance、keystone等。
账号相关的问题,可能包括账户丢失,因此使用如下命令:
# keystone user-list
+----------------------------------+---------+---------+-------------------+
| id | name| enabled | email |
+----------------------------------+---------+---------+-------------------+
| 7a98251d2efd4385bb06128d5f98086d |admin| True| root@localhost|
| 122832913025412fbfa5724667ce67ec |cinder | True|cinder@localhost |
| da2ebf9f61b944628cba39961b6c6bb4 |glance | True|glance@localhost |
| 32100e726d29424fb9e40413bd6ef8ec |james| True| |
| 1d7fc8c3c4114bae9eb766bea9a555e4 |jordan | True| |
| 7f1629d7bc804f678f6168d937e9b3f4 |kevin| True| |
| d28f1aaf44c9457b896542611309cec5 | kobe| True| |
| c7dcb60dbf0045b88930f4bafe5d7a5d | neutron | True| neutron@localhost |
| b257c18d85aa444f86736e89e6bbe240 | nova| True| nova@localhost|
| 65c01f339609465387c80c0fab6647f0 |swift| True|swift@localhost|
+----------------------------------+---------+---------+-------------------+
如果该用户存在于用户列表中,则进一步查看该用户的详细信息:
# keystone user-get7a98251d2efd4385bb06128d5f98086d
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
|email | root@localhost |
| enabled| True |
| id | 7a98251d2efd4385bb06128d5f98086d |
| name | admin |
| tenantId | 1f7e9eb5143c48a59c1b164d54f45e58 |
| username | admin |
+----------+----------------------------------+
重置某个用户的密码
# keystone user-password-update \
--pass new_passwd \
user_id
六、Neutron故障排除
1)实例无法注入SSH密钥,而使用户无法登陆云主机。
检查实例的网关能否路由到元数据服务器,如果不能,则创建一条能到该网路的路由规则。
2)列出全部网络
# neutron net-list
+--------------------------------------+---------+-----------------------------------------------------+
| id | name | subnets |
+--------------------------------------+---------+-----------------------------------------------------+
| 64c2cbac-1b12-4086-bf28-52d59e3165f9 | public| 61876d7f-22a2-4434-b7bf-ec30b9404daa 192.168.1.0/24 |
| 39a288a4-8dfd-483d-9bc5-35610c5c1b72 | private | a5dcb304-24f5-4818-a9db-2bbe884404a2 10.10.10.0/24|
+--------------------------------------+---------+-----------------------------------------------------+
3)列出全部子网
# neutron subnet-list
+--------------------------------------+----------+----------------+--------------------------------------------------+
| id | name | cidr | allocation_pools |
+--------------------------------------+----------+----------------+--------------------------------------------------+
| 61876d7f-22a2-4434-b7bf-ec30b9404daa | external | 192.168.1.0/24 | {"start": "192.168.1.38", "end": "192.168.1.40"} |
| a5dcb304-24f5-4818-a9db-2bbe884404a2 | internal | 10.10.10.0/24| {"start": "10.10.10.2", "end": "10.10.10.254"} |
+--------------------------------------+----------+----------------+--------------------------------------------------+
4)列出Neutron端口
# neutron port-list
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------+
| id | name | mac_address | fixed_ips |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------+
| 282fddc6-a51c-4841-a688-b550605899d1 | | fa:16:3e:e1:e0:de | {"subnet_id": "61876d7f-22a2-4434-b7bf-ec30b9404daa", "ip_address": "192.168.1.38"} |
| aaf6ec6c-ee0d-46d9-9ff8-69313c3a7599 | | fa:16:3e:b3:c2:41 | {"subnet_id": "a5dcb304-24f5-4818-a9db-2bbe884404a2", "ip_address": "10.10.10.1"} |
| ab49a6ba-fd13-411d-9436-0f26085953e8 | | fa:16:3e:27:e4:4c | {"subnet_id": "a5dcb304-24f5-4818-a9db-2bbe884404a2", "ip_address": "10.10.10.4"} |
| cfc5a81a-e79c-4da4-9b4b-a26460ef2a18 | | fa:16:3e:b5:95:ea | {"subnet_id": "a5dcb304-24f5-4818-a9db-2bbe884404a2", "ip_address": "10.10.10.3"} |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------+
5)查看实例分配到的浮动IP地址
# nova list
什么,这些方法,都用完了,还是报错,还是不能ping度娘,还是各种错。那我也不知道了,你懂的,连OpenStack都没入门。
如果,看完这篇后,你想要吐槽,可以在这里,也可以在我的另一个地方吐槽,那个地方不告诉你!
还没用到该技术哈
{:soso_e179:} 不错。。。 学习了,谢谢。 谢谢分享!!!
页:
[1]