摘要:昨天遇到了一个端口转发导致失效的问题,今天记录下当时的排查思路。问题原因是删除容器后没有把转发规则删除。这次排查,用到了几个工具,都是之前的积累,所以排查显得顺畅多了。
昨天遇到了一个端口转发导致VIP失效的问题,今天记录下当时的排查思路。
因为要做升级,所以我删除了dokcer老容器,并启动新容器。之后访问VIP, 也就是LVS中的VIP,发现原先可以访问的站点不能访问了。
以上是故障表现,下面是具体排查过程
docker logs containerId 检查docker 中的应用是成功启动的,排除应用无法启动的问题
curl localhost:80 因为容器是以-p 80:80的方式启动的,所以接下来我尝试在物理机上访问自己的80端口,发现可以成功访问应用,排除了forward没设置的问题
接下来,我祭出了瑞士军刀nc -l 80, 然后在外部以VIP的方式访问,发现无法访问。 这时候怀疑是 iptables 的问题
先做下备份,service iptables save, 然后关掉service iptables stop
再起nc -l 80, 发现很快nc进程就结束了,trace nc -l 80 找出来源包IP,发现是LVS的心跳包。至此VIP恢复访问
接下来就是要找iptables里谁在搞鬼了。iptables -L, 因为怀疑是docker在搞鬼,所以把展示出和docker有关的都删了,但是问题没有解决
上面我犯了一个错误,那就是以为iptables -L展示的是所有的规则,但其实只展示了filter, 和转发有关的nat需要iptables -t nat -L来展示
把iptables -t nat -L中和docker有关的删掉。问题解决。问题原因是docker删除容器后没有把转发规则删除。
又重现了下这个问题,应该是docker的问题,删除实例没有把转发规则和proxy干掉。
这次排查,用到了几个工具,都是之前的积累,所以排查显得顺畅多了。主要时间花在了对iptables的不熟悉。
更多文章 http://kamushin.github.io/
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26658.html
摘要:当然,如果你的核心数够多,到个线程的并行度不满足的话,也可以自定义一个线程池来执行,不过这样的话,要注意自己维护这个线程池的初始化,释放等等操作了。 事情起源于一个bug排查,一个AsyncTask的子类,执行的时候发现onPreExecute方法执行了,doInBackground却迟迟没有被调用。懂AsyncTask一些表面原理的都知道,onPreExecute方法是在主线程执行,...
摘要:此时我想到了福尔摩斯说过的一句话当你排除掉各种不可能出现的情况之后,剩下的情况无论多么难以置信,都是真相。福尔摩斯冷静下来想一想,这个线程,有可能静悄悄地退出了吗,没留下半点异常日志从理论上来说,不可能。配置建议最后,附上一份配置建议。 1、事发 我们有个视频处理程序,基于 SpringBoot,会启动几个线程来跑。要退出程序时,会发送一个信号给程序,每个线程收到信号后会平滑退出,等全...
阅读 1292·2021-11-16 11:44
阅读 3758·2021-10-09 10:01
阅读 1744·2021-09-24 10:31
阅读 3832·2021-09-04 16:41
阅读 2510·2021-08-09 13:45
阅读 1209·2019-08-30 14:08
阅读 1775·2019-08-29 18:32
阅读 1640·2019-08-26 12:12