分享

OpenStack菜鸟级故障排除

徐超 发表于 2015-4-6 21:48:35 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 55008
本帖最后由 徐超 于 2015-4-6 21:50 编辑
问题导读:
1、你是如何解决OpenStack报错的?
2、谈谈你的方法吧?






写在前面的废话

本篇主要讲解OpenStack服务的一般故障排除,仅作抛砖引玉之用。亦是“OpenStack服务检查”的姐妹篇。下面的内容,大神请飘过。
OpenStack的故障排除和错误检查,确实是一件让我们这些菜鸟很头疼、很郁闷、纠结的事情,我连OpenStack都还未入门,当然大神除外,大神也不用看了。

好了,咱们节约时间,开始进入正题吧,你懂的。

一、Nova故障排除
1、不能ping通或ssh连到实例
1)当启动实例时,指定一个ssh、icmp、http等适合自己需求的规则及安全组。

2)检查是否启用了网络转发功能
  1. # sysctl -A | grep ip_forward
  2. net.ipv4.ip_forward = 1
复制代码

net.ipv4.ip_forward = 1应该设置为1,否则,应该检查/etc/sysctl.conf文件是否为上面那样的选项设置。
修改之后,执行如下命令,进行更新,你懂的:
  1. # sysctl -p
复制代码


3)Nova服务重启命令,centos 7版本
  1. # /bin/systemctl restart  openstack-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文件,来从操作系统中取消。
  1. # install ipv6 /bin/true
复制代码

6)检查neutron服务是否运行正常,以及是否使用了正确的IP命名空间。

2、实例启动时停在Building或Pending阶段
1)在控制节点上,执行如下命令
  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环境中的所有实例
  1. # nova-manage vm list
  2. # virsh list --all
复制代码

三、Swift故障排除
1)身份认证问题
应当查看keystone服务日志或从执行任务的报错信息中理解。

2)查看一个容器的ACL
  1. # 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
检查用户名或密码是否正确,比如:
  1. # echo $OS_USERNAME
  2. admin
复制代码

2、如果可以登录,但是界面提示”Something went wrong“,则要检查运行horizon的机器可以访问所有keystone的服务。
  1. # 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错误信息,则表示试图访问的服务不存在,导致客户端连接超时。为验证在每个区域中的端点,执行如下命令:
  1. # keystone endpoint-list
复制代码

什么,还有一个更加人性化和详细的命令,那又是什么东东,且看:
  1. # keystone catalog
复制代码

进一步判断服务的类型,例如,要显示所有区域中的计算服务的adminURL:
  1. # keystone endpoint-get --service compute --endpoint_type adminURL
  2. +------------------+--------------------------------------------------------------+
  3. |     Property     |                            Value                             |
  4. +------------------+--------------------------------------------------------------+
  5. | compute.adminURL | http://192.168.1.10:8774/v2/1f7e9eb5143c48a59c1b164d54f45e58 |
  6. +------------------+--------------------------------------------------------------+
复制代码

2)身份认证问题
首先,查看相关服务的日志,比如Nova、glance、keystone等。
账号相关的问题,可能包括账户丢失,因此使用如下命令:
  1. # keystone user-list
  2. +----------------------------------+---------+---------+-------------------+
  3. |                id                |   name  | enabled |       email       |
  4. +----------------------------------+---------+---------+-------------------+
  5. | 7a98251d2efd4385bb06128d5f98086d |  admin  |   True  |   root@localhost  |
  6. | 122832913025412fbfa5724667ce67ec |  cinder |   True  |  cinder@localhost |
  7. | da2ebf9f61b944628cba39961b6c6bb4 |  glance |   True  |  glance@localhost |
  8. | 32100e726d29424fb9e40413bd6ef8ec |  james  |   True  |                   |
  9. | 1d7fc8c3c4114bae9eb766bea9a555e4 |  jordan |   True  |                   |
  10. | 7f1629d7bc804f678f6168d937e9b3f4 |  kevin  |   True  |                   |
  11. | d28f1aaf44c9457b896542611309cec5 |   kobe  |   True  |                   |
  12. | c7dcb60dbf0045b88930f4bafe5d7a5d | neutron |   True  | neutron@localhost |
  13. | b257c18d85aa444f86736e89e6bbe240 |   nova  |   True  |   nova@localhost  |
  14. | 65c01f339609465387c80c0fab6647f0 |  swift  |   True  |  swift@localhost  |
  15. +----------------------------------+---------+---------+-------------------+
复制代码

如果该用户存在于用户列表中,则进一步查看该用户的详细信息:
  1. # keystone user-get  7a98251d2efd4385bb06128d5f98086d
  2. +----------+----------------------------------+
  3. | Property |              Value               |
  4. +----------+----------------------------------+
  5. |  email   |          root@localhost          |
  6. | enabled  |               True               |
  7. |    id    | 7a98251d2efd4385bb06128d5f98086d |
  8. |   name   |              admin               |
  9. | tenantId | 1f7e9eb5143c48a59c1b164d54f45e58 |
  10. | username |              admin               |
  11. +----------+----------------------------------+
复制代码

重置某个用户的密码
  1. # keystone user-password-update \
  2. --pass new_passwd \
  3. user_id
复制代码


六、Neutron故障排除
1)实例无法注入SSH密钥,而使用户无法登陆云主机。
检查实例的网关能否路由到元数据服务器,如果不能,则创建一条能到该网路的路由规则。

2)列出全部网络
  1. # neutron net-list
  2. +--------------------------------------+---------+-----------------------------------------------------+
  3. | id                                   | name    | subnets                                             |
  4. +--------------------------------------+---------+-----------------------------------------------------+
  5. | 64c2cbac-1b12-4086-bf28-52d59e3165f9 | public  | 61876d7f-22a2-4434-b7bf-ec30b9404daa 192.168.1.0/24 |
  6. | 39a288a4-8dfd-483d-9bc5-35610c5c1b72 | private | a5dcb304-24f5-4818-a9db-2bbe884404a2 10.10.10.0/24  |
  7. +--------------------------------------+---------+-----------------------------------------------------+
复制代码

3)列出全部子网
  1. # neutron subnet-list
  2. +--------------------------------------+----------+----------------+--------------------------------------------------+
  3. | id                                   | name     | cidr           | allocation_pools                                 |
  4. +--------------------------------------+----------+----------------+--------------------------------------------------+
  5. | 61876d7f-22a2-4434-b7bf-ec30b9404daa | external | 192.168.1.0/24 | {"start": "192.168.1.38", "end": "192.168.1.40"} |
  6. | a5dcb304-24f5-4818-a9db-2bbe884404a2 | internal | 10.10.10.0/24  | {"start": "10.10.10.2", "end": "10.10.10.254"}   |
  7. +--------------------------------------+----------+----------------+--------------------------------------------------+
复制代码


4)列出Neutron端口
  1. # neutron port-list
  2. +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------+
  3. | id                                   | name | mac_address       | fixed_ips                                                                           |
  4. +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------+
  5. | 282fddc6-a51c-4841-a688-b550605899d1 |      | fa:16:3e:e1:e0:de | {"subnet_id": "61876d7f-22a2-4434-b7bf-ec30b9404daa", "ip_address": "192.168.1.38"} |
  6. | aaf6ec6c-ee0d-46d9-9ff8-69313c3a7599 |      | fa:16:3e:b3:c2:41 | {"subnet_id": "a5dcb304-24f5-4818-a9db-2bbe884404a2", "ip_address": "10.10.10.1"}   |
  7. | ab49a6ba-fd13-411d-9436-0f26085953e8 |      | fa:16:3e:27:e4:4c | {"subnet_id": "a5dcb304-24f5-4818-a9db-2bbe884404a2", "ip_address": "10.10.10.4"}   |
  8. | cfc5a81a-e79c-4da4-9b4b-a26460ef2a18 |      | fa:16:3e:b5:95:ea | {"subnet_id": "a5dcb304-24f5-4818-a9db-2bbe884404a2", "ip_address": "10.10.10.3"}   |
  9. +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------+
复制代码

5)查看实例分配到的浮动IP地址
  1. # nova list
复制代码

什么,这些方法,都用完了,还是报错,还是不能ping度娘,还是各种错。那我也不知道了,你懂的,连OpenStack都没入门。

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









已有(4)人评论

跳转到指定楼层
feng01301218 发表于 2015-4-7 11:18:43
回复

使用道具 举报

zw2002 发表于 2015-4-24 16:03:54
学习了,谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条