我正在使用谷歌計算引擎。我已經設定了部署管理器,它設定了一個防火牆,允許網路LB 連接到Web 伺服器,Web 伺服器本身將它們新增到實例群組管理器,它設定了一個針對實例群組管理器的自動縮放器,設定了HTTP 運行狀況檢查將針對Web 伺服器實例執行,它將HTTP 運行狀況檢查添加到後端服務,並將實例組管理器添加到後端服務,它設置一個URL 映射,該URL 映射將後端服務作為默認服務,而url 映射器依序是新增到具有全域 IP 的轉送規則指向的 HTTP 代理。
此設定與此處所述的設定非常相似https://cloud.google.com/solutions/scalable-and-resilient-apps
現在我似乎可以解決此設定的問題。我有一個在 Web 伺服器上運行的 Nginx 伺服器,它會回應請求,我能夠建立到它的事件來源連接,但在 1 分鐘後,連接關閉,並出現錯誤 INCOMPLETE_CHUNKED_ENCODING。如果我直接連接到其中一台 Web 伺服器,則不會發生這種情況。我已將 tcp keepalive 的 sysconf 設定更改為:
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=5
看完這個https://cloud.google.com/compute/docs/troubleshooting#networktraffic
我在 nginx 配置中嘗試了無數的東西,但無法找到解決方案。
有人有任何想法或類似的問題嗎?
答案1
亞歷克斯分享該帖子連結是正確的,因為它導致了主要問題,但需要一些解釋。
您需要更改 Nginx 設定檔 (/etc/nginx/nginx.conf) 中的「keepalive_timeout」值(預設為 65)以增加 HTTP 連線逾時,以便您的逾時會比負載平衡器中的 600 秒逾時更長。這導致負載平衡器成為關閉空閒連線的一方,而不是 nginx。
調整 nginx keepalive 以與 Google Cloud Platform HTTP(S) 負載平衡器搭配使用。
設定“keepalive_timeout 650;”在 Nginx 中/etc/nginx/nginx.conf
keepalive_timeout 650;
keepalive_requests 10000;
更深入的資訊關於http持久性。
答案2
你nginx
可能需要一些調整。