LabHub
学习 学习路径 课程

网络排障

分诊的顺序与记录

在 LabHub 中继续学习

一句话总结

在应对障碍时,实力差异不是在工具上,而是在顺序和记录上。有顺序的话就不会再看同一个地方两次,有记录的话下一个人也不会从头开始。

概念图: 顺序和记录 · 事先确定的顺序 · 名字 · 到达

为什么需要这个?

如果在凌晨3点收到来的报告,任何人都会感到着急。着急的话,顺序就会崩溃,顺序崩溃的话,就会反复问“刚才确认了吗?”所以熟练者会机械地遵循事先确定的顺序。判断是在收集数据后再做。

怎么行动

顺序从下面向上排列,因为如果下面楼层坏了,就不需要看上面楼层了。

  1. 名字getent hosts <이름>dig +short <이름>并行执行。两个结果不同,差异就是原因的位置。
  2. 到达ping -c 3 <IP>.即使失败也不会马上得出结论。可能是ICMP阻止。
  3. 港口nc -zv -w 2 <IP> <포트>. 是否是refused或timeout一定要区分清楚写出来。这个单字决定了下一步调查的方向。
  4. 绑定 — 在目标主机上ss -ltnp | grep <포트>. Local Address127.0.0.1如果是的话,就到此为止。
  5. 回复curl -o /dev/null -s -w '...'. 一起查看状态代码和各段时间的信息。

在每个阶段都**保留命令及其输出。**只有写着“已确认”的记录对下一个人没有任何价值。相反,如果附有命令和输出,下一个人也可以重新阅读该输出并得出不同的结论。

事后报告至少应该有这五项。

项目 内容
症状 用户实际看到的(不是猜测)
层次 在哪个层停止了?
原因 伴随着成为依据的命令输出
措施 改变了什么,怎么改变的
防止复发 为了不让同样的事情再次发生

按层次敲什么呢

有缩小“不行”的顺序。从下往上走的话,每个阶段候选人都会 减少。

确认命令 如果在这里失败的话
1. 姓名 getent hosts api.example.com DNS·/etc/hosts·搜索域名
2.路线 ip route get 10.0.3.12 路由·基本网关
3. 到达 ping -c1 10.0.3.12 ICMP可能被堵住了(即使失败也会继续下一个)
4. 端口 nc -zv 10.0.3.12 8080或者curl -v telnet://… 不使用防火墙、安全群组、听取意见
5.服务 curl -sv http://10.0.3.12:8080/healthz 应用程序

即使在第3次失败也不停止很重要。ICMP通常被堵住,所以“ping不能 “是网络问题”经常是错误的。4号才是真正的判断

nc的结果分为三种,各自含义不同。

仅仅区分这三个就大大不同了调查范围。

确认在哪里听

Connection refused出来后,服务器方会查看。

ss -ltnp | grep 8080
LISTEN 0 4096 127.0.0.1:8080 0.0.0.0:* users:(("app",pid=42,fd=3))
                ↑ 여기가 함정

127.0.0.1:8080这样的话只能触及自己。在容器内curl localhost:8080 은 되는데 밖에서는 안 되는 전형적인 원인입니다. 0.0.0.0:8080 李娜[::]:8080要戴上才能在外面粘住。

在应用程序设置中选择绑定地址(--host 0.0.0.0bind = "0.0.0.0"). 无论如何修改端口映射,这个都不能出错。

在容器管理中再多一层

如果两个设备之间无法连接,首先怀疑网络政策。基本阻止(default deny) 在这个被锁定的命名空间中,政策中没有记载的通信全部是timeout

kubectl -n <ns> get networkpolicy
kubectl -n <ns> describe networkpolicy <이름>   # from/to 를 읽는다

如果症状“偶尔发生”,不是政策,而是看终端。只有其中一个Pad设置 如果不是Ready,只有请求用那个去失败,在外面看起来是间歇性错误。

kubectl -n <ns> get endpoints <svc>    # 주소가 몇 개 있나

在现场相遇的样子

假设原因只有一个。实际障碍经常是两个以上的原因重叠的情况。如果修复一个,然后说“没好转”,转向其他方向,就会怀疑已经修复的东西。所以最好彻底检查每个层,把发现的东西都写下来,最终会更快。

修改后不进行验证。修改hosts后getent再次确认,修改绑定后,必须再次输入外部地址。用同样的命令重现失败并确认成功是措施的最后一步。

下次实习要做的事情

接受同时出现三个缺陷的障碍。逐个缩小层次,确定原因,进行修复,以确定的形式留下事后报告。