美文网首页
ingress异常导致整体网络不可用

ingress异常导致整体网络不可用

作者: 洛子墟 | 来源:发表于2019-08-23 18:24 被阅读0次

k8s中刷新nginx失败,导致整个网络不可用

测试环境中所有新发布的应用全都不可用,瘫痪的1个小时左右.
一路查下来发现问题是nginx刷新异常,记录一下.

基础环境

  • Kubernetes 1.10

现象

新发布的应用无法访问,频繁出现504错误.

  • 查询后台日志
    发现后台大量的刷新Nginx配置失败问题.问题瞬间定位了.
  • upstream不存在
    删除了不存在的upstream后网络恢复正常

问题描述

k8s的集群中使用了Nginx作为反向代理.
如果你发布一个新的应用,Ingress会根据规则动态的把配置文件写入到Nginxdefault.conf中,此时会校验upstream是否存在,如果不存在则会刷新失败.

  • Ingress有bug?
    这套流程正常的话,endpoint的访问都是由k8s控制的,原则上是不会有异常的,那么怎么出的问题?
  • A/B Testing惹的祸
    我们实现灰度发布的方案是依赖于在Nginx中实现Lua脚本,如下:
location / {
    ....
    if ($http_foo = "bar") {  //完全匹配
    #if ($http_foo ~ "bar") {  //正则匹配
           proxy_pass http://default-new-nginx-80;
           break;
    }
    proxy_pass http://default-old-nginx-80;
    ....
}

问题来了,除了k8s的正常流程外,我们还会通过发布系统来控制应用的生命周期,相当于废除了k8s的控制.
实现了此套方案后只要通过k8s系统直接删除pod或者扩容等操作都会造成异常.
所以现在考虑更优解.

相关文章

  • ingress异常导致整体网络不可用

    k8s中刷新nginx失败,导致整个网络不可用 测试环境中所有新发布的应用全都不可用,瘫痪的1个小时左右.一路查下...

  • 【编程】Java异步的学习和实践

    当系统达到一定规模后,系统间的依赖关系变得复杂,任一子系统异常都可能导致整体系统不可用,而系统产生异常是常态。 本...

  • 六十、Docker Swarm-ingress网络详解

    概述 docker swarm的ingress网络又叫 Ingress Routing Mesh 主要是为了实现把...

  • SpringCloud高可用学习

    雪崩效应 基础服务的故障导致的级联故障,最终导致服务的不可用。 形成原因:1、服务提供者不可用2、服务调用者不可用...

  • K8S学习之Ingress入门

    ingress网络 什么是Ingress? K8s集群对外暴露服务的方式目前只有三种:loadblancer、no...

  • RabbitMQ消息可靠性处理

    1. 服务端 如果RabbitMQ集群中只有一个Broker节点,那么该节点的失效将导致整体服务的临时性不可用,并...

  • spring cloud hystrix

    微服务存在大量级联调用的情况,hystrix 主要解决单一服务导致整体服务不可用或延迟的情况。 目标 通过客户端对...

  • 分布式基础

    一、基本概念 异常 1. 服务器宕机 内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。...

  • 熔断

    场景分析 当一个服务出现异常,就会出现请求堆积从而导致整个服务不可用的问题。 引入熔断机制 熔断机制指当下游服务因...

  • spring 动态注册bean,动态删除bean,自动ioc

    前言 有一种情况当ioc的一个bean由于异常原因导致的不可用,必须需要重新注册一个bean,来替换当前的bean...

网友评论

      本文标题:ingress异常导致整体网络不可用

      本文链接:https://www.haomeiwen.com/subject/dboshctx.html