12

记一次阿里云负载均衡502问题排查

 3 years ago
source link: https://www.wencst.com/archives/1840
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

记一次阿里云负载均衡502问题排查

作者: wencst 分类: linux,云计算 发布时间: 2019-09-11 17:02 阅读: 1,540 次

一.问题描述

阿里云负载均衡

CentOS7

Apache

使用Apache搭建了一个服务,两个负载均衡中配置http协议转发,两个使用的不同的域名,不同的端口,一个成功,一个报502 Bad Gateway。

二.排查步骤

1.检查两个负载均衡的配置是否一致

一检查果然存在不一致的地方,成功的配置是TCP协议的,失败的配置为HTTP协议的。

按理说服务应该是HTTP协议的服务,为什么HTTP协议的转发却不行呢?

2.检查端口是否是http协议

为了保险,检查一下端口是否是http协议,检查方法也比较简单,百度搜来的乱七八糟的都不靠谱,还是基于我的上一篇文章《网络相关操作》中检查端口开放的方法,使用nmap命令进行检查。

查看80端口确实是http协议的端口,一度怀疑人生。

3.检查网页是否可以正常打开

由于服务器是CentOS的服务器,所以使用curl命令尝试打开:

curl -sSL http://10.1.189.196

网页正常打开,二度怀疑人生。

4.检查域名解析问题

由于访问网页可以正常返回,开始怀疑是不是域名解析的问题,或者做了哪些限制。

正向检察:在负载均衡上将此域名指向地址改为一个已存在且访问正常的地址,发现访问正常。

反向检查:在服务器上,手动修改hosts文件将10.1.189.196指向域名,发现访问正常。

说明域名和安全配置都不是问题的根源,这个在预料之中,不用三度怀疑人生。

5.查找阿里云官方文档

https://help.aliyun.com/document_detail/27702.html?spm=a2c4g.11186623.2.21.1dfd4354FXi0ka#concept-u5c-f2d-xdb

官方文档对于返回502有一些解释和检测步骤。略过前面的N多步骤,比如查看端口是否打开、查看防火墙等等,因为有一个服务可以正常访问,所以排除这些问题。

最后一个检测端口方法,windows使用telnet,linux使用curl方法,抱着试试看的态度检测了一下。

对于七层协议:

Windows:直接在ECS上访问ECS的内网IP测试是否正常,本例中为:http://10.11.192.1

Linux:使用curl -I命令查看状态是否为HTTP/1.1 200 OK,本例是:curl -I 10.11.192.1

执行了一下curl -I命令,发现返回的是403 forbidden。好吧,问题找到症结。

三.解决方法

于是查找Apache的配置文档,根路径返回403,说明安装默认配置有问题。

根路径配置为/etc/httpd/conf.d/welcome.conf

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /.noindex.html
</LocationMatch>

<Directory /usr/share/httpd/noindex>
    AllowOverride None
    Require all granted
</Directory>

OK,403文件找到了,修改方法有两种,第一种就是将此处改为正常返回(不推荐,有可能影响正常业务),第二种就是解决403的问题(推荐)。

按照/etc/httpd/conf/httpd.conf文件中的配置,DocumentRoot “/var/www/html”,也就是说根路径指向/var/www/html路径下的index.html文件。

而Apache安装时,此路径默认是没有任何文件的,所以在打开根路径时是找不到根路径对应文件,默认返回错误,即403。

不评价Apache这个默认配置是否合理的问题,单纯从修改问题的角度,在/var/www/html路径下新建一个index.html文件即可,哪怕是空的文件也行。

问题解决,终于没有让我三度怀疑人生。

1.解析为什么TCP协议的会成功?答:因为阿里云负载均衡tcp和http的健康检查机制不一样,tcp只要端口开放即可

2.curl -sSL和curl -I的用法区别:前者注重内容,并不包含状态,后者关注的是返回状态,并不包含内容,因此如果检测问题用 -I 更合适

如果文章对您有用,扫一下支付宝的红包,不胜感激!

欢迎加入QQ群进行技术交流:656897351(各种技术、招聘、兼职、培训欢迎加入)

Leave a Reply Cancel reply

You must be logged in to post a comment.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK