LabHub
学习 学习路径 课程

网络排障

综合分诊:支付 API 故障

在 LabHub 中继续学习

目标

按层次缩小三种缺陷重叠的障碍,确定原因,进行修复,并留下固定的格式后的报告。一次性写下本课程中学到的所有工具。

为什么重要

实际障碍往往不是一个原因造成的。如果修复一个,然后说“没好转”,改变方向的话,甚至会怀疑已经修复的东西。所以最好把每个层都检查到最后,把发现的东西都写下来,这样最终会更快。然后修复后,要用重现失败的那个命令确认成功才能结束措施。

阶段

  1. bash /opt/fixtures/nt-triage/start-incident.sh再现障碍情况,/opt/fixtures/nt-triage/incident.md请阅读。/root/triage请创建目录。
  2. 用自己的接口IP进行3次ping的结果/root/triage/l3.txt请保存。损失率必须为0%。
  3. 分别按自己的接口IP的91019102端口,查看结果/root/triage/l4.txt请用两行写下来。 9101=<open|refused|timeout>/9102=<open|refused|timeout>
  4. pay-api.labhub.local确认的名称解释结果,/root/triage/name.txt请用两行写下来。 RESOLVED=<getent 가 돌려준 IP>/SOURCE=<그 값이 적혀 있는 파일의 절대 경로>
  5. 确认9101服务的监听地址/root/triage/bind.txt请在一行中写下。BIND=<리슨 주소:포트>是形式。(例如:BIND=127.0.0.1:9101)
  6. 到可接近的一边(9102)/ok请求状态代码/root/triage/http.txtcode=<코드>请写在一行。
  7. 请把两个都修好。
    • /etc/hostspay-api.labhub.local请将项目调整为本服务器的实际接口IP
    • 9101服务0.0.0.0请重新打开以听。(现有进程已结束) 还有curl -s http://pay-api.labhub.local:9101/ok确认成功后输出/root/triage/fixed.txt请保存为。
  8. /root/triage/report.txt请用以下6行组成。 SYMPTOM=remote-timeout/LAYER1=name/LAYER2=bind/CAUSE_NAME=<원래 hosts 에 적혀 있던 잘못된 IP>/CAUSE_BIND=127.0.0.1/FIXED=yes

参考

再现障碍情况

bash /opt/fixtures/nt-triage/start-incident.sh再现障碍情况,/opt/fixtures/nt-triage/incident.md请阅读。/root/triage请创建目录。

执行图片的开始脚本就会产生情况。请一起阅读报告书。

确认L3到达性

用自己的接口IP进行3次ping的结果/root/triage/l3.txt请保存。损失率必须为0%。

不是名字,而是要用IP来确认,这样就不会和名字问题混淆。请使用自己的接口地址。

按端口判断结果

分别按自己的接口IP的91019102端口,查看结果/root/triage/l4.txt请用两行写下来。 9101=<open|refused|timeout>/9102=<open|refused|timeout>

两个端口的结果不同。请准确区分refused、timeout和open。

姓名解释问题特定

pay-api.labhub.local确认的名称解释结果,/root/triage/name.txt请用两行写下来。 RESOLVED=<getent 가 돌려준 IP>/SOURCE=<그 값이 적혀 있는 파일의 절대 경로>

请比较getent返回的IP和这个服务器实际的IP。还要找到那个值写在哪里。

特定绑定问题

确认9101服务的监听地址/root/triage/bind.txt请在一行中写下。BIND=<리슨 주소:포트>是形式。(例如:BIND=127.0.0.1:9101)

ss输出中的Local Address列是答案。请指出哪个服务有问题。

应用程序层次确认

到可接近的一边(9102)/ok请求状态代码/root/triage/http.txtcode=<코드>请写在一行。

请先确认可接近的方向,以证明服务本身正常。

修改和验证

请把两个都修好。

必须同时修改两个。修改后,请务必再次确认外部地址。

事后报告

/root/triage/report.txt请用以下6行组成。 SYMPTOM=remote-timeout/LAYER1=name/LAYER2=bind/CAUSE_NAME=<원래 hosts 에 적혀 있던 잘못된 IP>/CAUSE_BIND=127.0.0.1/FIXED=yes

格式已经确定。每个值都必须是在前一步实际确认的。