%20%E8%B2%A0%E8%BC%89%E5%B9%B3%E8%A1%A1%E5%99%A8%E5%92%8C%20Apache%20%E5%87%BA%E7%8F%BE%E9%96%93%E6%AD%87%E6%80%A7%20HTTP%20502%20%E9%8C%AF%E8%AA%A4.png)
我在 AWS 中設定了一個負載平衡器,它將流量路由到 Apache Ubuntu 伺服器。
當我瀏覽我的 URL 時,有時一切都很順利。然後我點擊「刷新」按鈕,下載一些檔案時開始出現 502 錯誤。每次都是不同的文件。
然後我再次點擊“刷新”,一切正常。
目前我是唯一使用該伺服器的人。
我的負載平衡器設定如下:
- 可用區域:us-east-1a 和 us-east-1b
- 安全群組:開放80和443端口
- 偵聽器:連接埠 80 重定向到連接埠 443,連接埠 443 轉送到我的目標
我的目標群組配置如下:
- 目標類型:實例
- 協定:HTTP:80
- 負載平衡器:我的負載平衡器名稱
- 註冊目標:我在每個區域中運行 1 個實例。
我的 Auto Scaling 群組配置如下:
- 所需容量:2
- 最小容量:2
- 最大容量:5
- 可用區域:us-east-1a、us-east-1b
我的 apache 伺服器配置了預設安裝值,加上:
- 保持活動狀態
- 超時120
- 保持活動超時 120
- 最大保持活動請求數 100
- AcceptFilter http 無
- AcceptFilter https 無
我不是伺服器人員,我是程式設計師,所以我真的不知道要檢查什麼。我認為配置負載平衡器很簡單...
感謝您的協助
編輯 2020-08-27 15h39
我在 VPC 和負載平衡器上啟用了日誌,並刷新了頁面。我在特定文件上遇到 502 錯誤。
在負載平衡器日誌中,我看到特定檔案的 502 個條目。這是條目 - JSON 格式 - 我在其中替換了所有敏感數據
[
{
"type": "h2",
"time": "2020-08-27T19:20:52.547402Z",
"elb": "app/web-server-load-balancer/**my-load-balancer-id**",
"client:port": "*my-ip-address*:60831",
"target:port": "10.0.0.106:80",
"request_processing_time": 0,
"target_processing_time": 0.013,
"response_processing_time": -1,
"elb_status_code": 502,
"target_status_code": "-",
"received_bytes": 45,
"sent_bytes": 610,
"request": "GET https://**my-url** HTTP/2.0",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36",
"ssl_cipher": "ECDHE-RSA-AES128-GCM-SHA256",
"ssl_protocol": "TLSv1.2",
"target_group_arn": "**my-target-group-arn**",
"trace_id": "Root=1-5f480794-150df3bcad7fd0ac6bdfc41c",
"domain_name": "**my-domain-name**",
"chosen_cert_arn": "session-reused",
"matched_rule_priority": 0,
"request_creation_time": "2020-08-27T19:20:52.534000Z",
"actions_executed": "forward",
"redirect_url": "-",
"error_reason": "-",
"target:port_list": "10.0.0.106:80",
"target_status_code_list": "-",
"classification": "-",
"classification_reason": "-"
}
]
不知道這些數據能不能幫到你!
編輯 2020-08-31 (1)
我在防火牆中打開了兩個虛擬機器以直接存取它們。當我直接訪問每個伺服器時,我根本沒有收到 502 錯誤。當我透過負載平衡器存取時,我得到 502。
編輯 2020-08-31 (2)
我更改了負載平衡器,將 HTTP 流量路由到實例,而不是將其重定向到 443 連接埠。
在連接埠 80 上,我沒有收到 502 錯誤。我硬刷新了很多次,都沒有得到 502。我記得你當我直接用 https 存取虛擬機器時,我沒有得到 502。
答案1
我看到這個論壇帖子: AWS 開發者論壇
最後一篇文章其實給了我答案:
確保在 ALB/ELB 後面時沒有使用 Apache 的事件 MPM 模組(預設)。它動態關閉連線。嘗試工人 MPM。
我更改了 Apache 配置以使用 Worker MPM,就目前情況而言,我沒有遇到任何 502 錯誤。
答案2
我嘗試了工作 MPM 和事件 MPM,但它們都沒有完全消除隨機 502。這是在 Apache 上,位於 ALB 和 Tomcat 之間。