徐超 发表于 2015-4-6 21:48:35

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都没入门。

如果,看完这篇后,你想要吐槽,可以在这里,也可以在我的另一个地方吐槽,那个地方不告诉你!









feng01301218 发表于 2015-4-7 11:18:43

还没用到该技术哈
{:soso_e179:}

lingfeng 发表于 2015-4-8 16:04:10

不错。。。

zw2002 发表于 2015-4-24 16:03:54

学习了,谢谢。

superyongzhe 发表于 2017-2-26 22:08:28

谢谢分享!!!
页: [1]
查看完整版本: OpenStack菜鸟级故障排除