一次RabbitMQ重啓引發的網關雪崩覆盤
刷到《一次RabbitMQ重啓引發的網關雪崩覆盤》,內容很實在,值得細讀。這篇把它的關鍵做法提煉出來,幫你省下通讀的時間,結尾附行動建議。
晚上生產告警羣裏突然開始刷屏。網關 Pod 不斷重啓,有客戶反饋操作頁面時好時壞,K8s 事件裏清一色的: [代碼示例略] 打開網關的日誌查看原來是MQ連不上,一直在報異常;突然想起來今晚運維在做MQ的升級,評估升級不超過3分鐘,但以現在情況看已經超過8分鐘;之前提前將management.health.rabbit.enabled 明明已經設成 false 了啊。當時第一反應是:RabbitMQ 重啓跟你們的健康檢查有什麼關係? 服務框架:線上 Kubernetes 集羣跑着一套微服務架構,Spring Cloud Gateway 做網關,base-server 做基礎服務,Nacos 做註冊中心和配置中心,RabbitMQ 做消息總線。整體跑了幾個月,沒出過什麼大問題。 直到今晚運維那邊的 RabbitMQ 升級做了一次滾動重啓。
晚上生產告警羣裏突然開始刷屏。網關 Pod 不斷重啓,有客戶反饋操作頁面時好時壞,K8s 事件裏清一色的: [代碼示例略] 打開網關的日誌查看原來是MQ連不上,一直在報異常;突然想起來今晚運維在做MQ的升級,評估升級不超過3分鐘,但以現在情況看已經超過8分鐘;之前提前將management.health.rabbit.enabled 明明已經設成 false 了啊。當時第一反應是:RabbitMQ 重啓跟你們的健康檢查有什麼關係? 服務框架:線上 Kubernetes 集羣跑着一套微服務架構,Spring Cloud Gateway 做網關,base-server 做基礎服務,Nacos 做註冊中心和配置中心,RabbitMQ 做消息總線。整體跑了幾個月,沒出過什麼大問題。 直到今晚運維那邊的 RabbitMQ 升級做了一次滾動重啓。 排查網關:connection reset by peer 先看日誌connection reset by peer 說明 TCP 連接被 Pod 內的進程直接拒絕了,內核發的 RST。
晚上生產告警羣裏突然開始刷屏。網關 Pod 不斷重啓,有客戶反饋操作頁面時好時壞,K8s 事件裏清一色的: [代碼示例略] 打開網關的日誌查看原來是MQ連不上,一直在報異常;突然想起來今晚運維在做MQ的升級,評估升級不超過3分鐘,但以現在情況看已經超過8分鐘;之前提前將management.health.rabbit.enabled 明明已經設成 false 了啊。當時第一反應是:RabbitMQ 重啓跟你們的健康檢查有什麼關係? 服務框架:線上 Kubernetes 集羣跑着一套微服務架構,Spring Cloud Gateway 做網關,base-server 做基礎服務,Nacos 做註冊中心和配置中心,RabbitMQ 做消息總線。整體跑了幾個月,沒出過什麼大問題。 直到今晚運維那邊的 RabbitMQ 升級做了一次滾動重啓。 排查網關:connection reset by peer 先看日誌connection reset by peer 說明 TCP 連接被 Pod 內的進程直接拒絕了,內核發的 RST。通常意味着進程要麼沒啓動完,要麼根本沒能力處理新連接。
晚上生產告警羣裏突然開始刷屏。網關 Pod 不斷重啓,有客戶反饋操作頁面時好時壞,K8s 事件裏清一色的: [代碼示例略] 打開網關的日誌查看原來是MQ連不上,一直在報異常;突然想起來今晚運維在做MQ的升級,評估升級不超過3分鐘,但以現在情況看已經超過8分鐘;之前提前將management.health.rabbit.enabled 明明已經設成 false 了啊。當時第一反應是:RabbitMQ 重啓跟你們的健康檢查有什麼關係? 服務框架:線上 Kubernetes 集羣跑着一套微服務架構,Spring Cloud Gateway 做網關,base-server 做基礎服務,Nacos 做註冊中心和配置中心,RabbitMQ 做消息總線。整體跑了幾個月,沒出過什麼大問題。 直到今晚運維那邊的 RabbitMQ 升級做了一次滾動重啓。 排查網關:connection reset by peer 先看日誌connection reset by peer 說明 TCP 連接被 Pod 內的進程直接拒絕了,內核發的 RST。通常意味着進程要麼沒啓動完,要麼根本沒能力處理新連接。 pod的探針路徑 /actuator/health,initialDelaySeconds: 40。
晚上生產告警羣裏突然開始刷屏。網關 Pod 不斷重啓,有客戶反饋操作頁面時好時壞,K8s 事件裏清一色的: [代碼示例略] 打開網關的日誌查看原來是MQ連不上,一直在報異常;突然想起來今晚運維在做MQ的升級,評估升級不超過3分鐘,但以現在情況看已經超過8分鐘;之前提前將management.health.rabbit.enabled 明明已經設成 false 了啊。當時第一反應是:RabbitMQ 重啓跟你們的健康檢查有什麼關係? 服務框架:線上 Kubernetes 集羣跑着一套微服務架構,Spring Cloud Gateway 做網關,base-server 做基礎服務,Nacos 做註冊中心和配置中心,RabbitMQ 做消息總線。整體跑了幾個月,沒出過什麼大問題。 直到今晚運維那邊的 RabbitMQ 升級做了一次滾動重啓。 排查網關:connection reset by peer 先看日誌connection reset by peer 說明 TCP 連接被 Pod 內的進程直接拒絕了,內核發的 RST。通常意味着進程要麼沒啓動完,要麼根本沒能力處理新連接。 pod的探針路徑 /actuator/health,initialDelaySeconds: 40。40 秒的啓動延遲,正常情況下綽綽有餘。
行動建議:收藏這篇,下次碰到同類問題先翻出來對照做一遍。好經驗的價值,在於用起來。你最近被這類問題卡過嗎? 來源|博客園《一次RabbitMQ重啓引發的網關雪崩覆盤》,https://www.cnblogs.com/zhangs1986/p/22947591.html
評論(0)
暫無評論,來搶第一條。