ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【实战经验系列】记一次打系统补丁引发的“血案”

2022-02-22 09:32:48  阅读:222  来源: 互联网

标签:ip 血案 补丁 实战经验 报错 ipv4 forward 系统 net


日前在客户生产环境,突然接到告警,系统宕机,查看所有微服务的日志都在报错“no route to host XXX”,根据经验判断,是网络不通相关问题,但是生产环境运行好好的,怎么会突然网络不通呢?

  • 首先排查网络连通性,发现服务器间网络是通的;

  • 排查微服务所运行的环境里的网关gateway服务,报错无法连接数据库(mysql),错误信息依然是“connect timeout”和无法获取JDBC连接错误;

  • 排查mysql数据库运行情况,正常,通过telnet 3306端口开放情况,正常;

  • 尝试重启网关gateway服务,依然无法启动,还是报连接mysql数据库错误;

  • 尝试重启mysql数据库,然后重启网关gateway,错误依然;

    由于此次发生故障涉及的面很广,20余个运行在k8s平台的docker容器微服务,和SpringCloud相关治理组件(nacos、gateway)等都在报错,起初以为是某个公共服务突然故障导致整个高可用架构的系统平台挂掉,但是思考良久没有找到哪个服务有如此大的“影响力”,如果有,那这微服务系统群的高可用涉及也太脆弱了......
    正当机房所有人都一筹莫展时,客户系统科的一条消息让事情发生转机,系统科下午18:20左右给生产环境服务器打了系统升级补丁!我第一时间反应,就它了!首先故障发生时间能对上,故障涉及面广和打补丁的系统级环境变动的影响范围吻合!同时我们已经把问题定向到net.ipv4.ip_forward整个参数,发现生产环境服务器整个参数全部都是0,而系统能运行的条件是net.ipv4.ip_forward=1。net.ipv4.ip_forward直接影响docker容器的ip转发,经验证当net.ipv4.ip_forward=0时,登录docker容器内部,ping外部其他的服务器ip是不通的,而net.ipv4.ip_forward=1时,是可以ping通的,这就解释了为什么之前一直报错连接不到数据库。

最终解决方案:系统级参数调整(永久生效方式),将net.ipv4.ip_forward设置为1。
系统全部恢复正常。

标签:ip,血案,补丁,实战经验,报错,ipv4,forward,系统,net
来源: https://www.cnblogs.com/hibugs/p/15921570.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有