

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 故障診斷 Classic Load Balancer
<a name="elb-troubleshooting"></a>

下表列出故障診斷資源，有助您尋找使用 Classic Load Balancer 的實用資訊。


**API 錯誤**  

| 錯誤 | 
| --- | 
| [CertificateNotFound：未定義](ts-elb-error-api-response.md#ts-elb-error-message-certificate) | 
| [OutofService：發生暫時性錯誤](ts-elb-error-api-response.md#ts-elb-error-message-service) | 


**HTTP 錯誤**  

| 錯誤 | 
| --- | 
| [HTTP 400: BAD\$1REQUEST](ts-elb-error-message.md#ts-elb-errorcodes-http400) | 
| [HTTP 405: METHOD\$1NOT\$1ALLOWED](ts-elb-error-message.md#ts-elb-errorcodes-http405) | 
| [HTTP 408：請求逾時](ts-elb-error-message.md#ts-elb-errorcodes-http408) | 
| [HTTP 502：無效的閘道](ts-elb-error-message.md#ts-elb-errorcodes-http502) | 
| [HTTP 503：服務無法使用](ts-elb-error-message.md#ts-elb-errorcodes-http503) | 
| [HTTP 504：閘道逾時](ts-elb-error-message.md#ts-elb-errorcodes-http504) | 


**回應代碼指標**  

| 回應代碼指標 | 
| --- | 
| [HTTPCode\$1ELB\$14XX](ts-elb-http-errors.md#ts-elb-error-metrics-ELB_4XX) | 
| [HTTPCode\$1ELB\$15XX](ts-elb-http-errors.md#ts-elb-error-metrics-ELB_5XX) | 
| [HTTPCode\$1Backend\$12XX](ts-elb-http-errors.md#ts-elb-error-metrics-Backend_2XX) | 
| [HTTPCode\$1Backend\$13XX](ts-elb-http-errors.md#ts-elb-error-metrics-Backend_3XX) | 
| [HTTPCode\$1Backend\$14XX](ts-elb-http-errors.md#ts-elb-error-metrics-Backend_4XX) | 
| [HTTPCode\$1Backend\$15XX](ts-elb-http-errors.md#ts-elb-error-metrics-Backend_5XX) | 


**運作狀態檢查問題**  

| 問題 | 
| --- | 
| [運作狀態檢查目標頁面錯誤](ts-elb-healthcheck.md#ts-elb-healthcheck-targetpage) | 
| [與執行個體的連線已經逾時。](ts-elb-healthcheck.md#ts-elb-healthcheck-failed) | 
| [公有金鑰身分驗證失敗](ts-elb-healthcheck.md#ts-elb-healthcheck-publickey) | 
| [執行個體不會接收負載平衡器的流量](ts-elb-healthcheck.md#ts-elb-healthcheck-securitygroup) | 
| [執行個體上未開啟連接埠](ts-elb-healthcheck.md#ts-elb-healthcheck-ports) | 
| [Auto Scaling 群組中的執行個體未通過 ELB 運作狀態檢查](ts-elb-healthcheck.md#ts-elb-healthcheck-autoscaling) | 


**連線問題**  

| 問題 | 
| --- | 
| [用戶端無法連接到面向網際網路的負載平衡器](ts-elb-connection-failed.md#client-cannot-connect) | 
| [負載平衡器不會收到傳送至自訂域的請求](ts-elb-connection-failed.md#custom-domain-request) | 
| [傳送至負載平衡器的 HTTPS 要求會傳回 "NET::ERR\$1CERT\$1COMMON\$1NAME\$1INVALID"](ts-elb-connection-failed.md#https-cert-invalid) | 


**執行個體註冊問題**  

| 問題 | 
| --- | 
| [時間太長而無法註冊 EC2 執行個體](ts-elb-register-instance.md#ts-elb-register-too-long) | 
| [無法註冊從已支付 AMI 啟動的執行個體](ts-elb-register-instance.md#ts-elb-paid-ami-instance) | 

# 故障診斷 Classic Load Balancer：API 錯誤
<a name="ts-elb-error-api-response"></a>

以下是 Elastic Load Balancing API 傳回的錯誤訊息、可能原因，以及解決問題所需採取的步驟。

**Topics**
+ [CertificateNotFound：未定義](#ts-elb-error-message-certificate)
+ [OutofService：發生暫時性錯誤](#ts-elb-error-message-service)

## CertificateNotFound：未定義
<a name="ts-elb-error-message-certificate"></a>

**原因 1**：當使用 AWS 管理主控台建立憑證時，傳播憑證到所有區域發生延遲。當發生此延遲，建立負載平衡器的程序的最後一個步驟出現錯誤訊息。

**解決方案 1**：等待約 15 分鐘，然後再試一次。如果問題仍存在，請前往 [AWS 支援 Center](https://console.aws.amazon.com/support/home#/) 尋求協助。

**原因 2**：如果您直接使用 AWS CLI 或 API，如果您為不存在的憑證提供 Amazon Resource Name (ARN)，則會收到此錯誤。

**解決方案 2**：使用 AWS Identity and Access Management (IAM) 動作 [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html) 取得憑證 ARN，並確認您已為 ARN 提供正確的值。

## OutofService：發生暫時性錯誤
<a name="ts-elb-error-message-service"></a>

**原因**：在 Elastic Load Balancing 服務或基本網路內發生暫時性內部問題。當 Elastic Load Balancing 查詢負載平衡器及其已註冊的執行個體的運作狀態時，這也可能發生暫時性問題。

**解決方案**：重試 API 呼叫。如果問題仍存在，請前往 [AWS 支援 Center](https://console.aws.amazon.com/support/home#/) 尋求協助。

# 故障診斷 Classic Load Balancer：HTTP 錯誤
<a name="ts-elb-error-message"></a>

HTTP 方法 (也稱為 *verb*) 指定要在接收 HTTP 請求的資源上執行的動作。適用於 HTTP 請求的標準方法是在 RFC 2616 [方式定義](http://tools.ietf.org/html/rfc2616#section-9)中定義的。此標準方法包括 GET、POST、PUT、HEAD 及 OPTIONS。有些 Web 應用程式要求 (有時介紹) 的方法是 HTTP/1.1 方法的延伸。常見 HTTP 延伸方法的範例包括 PATCH、REPORT、MKCOL、PROPFIND、MOVE 和 LOCK。Elastic Load Balancing 接受所有標準和非標準 HTTP 方法。

HTTP 要求和回應使用標頭欄位來傳送有關 HTTP 訊息的資訊。標頭欄位是以冒號分隔的名稱值組，以歸位字元 (CR) 和換行 (LF) 分隔。一組以 RFC 2616 定義的標準 HTTP 標頭欄位，[訊息標頭](http://tools.ietf.org/html/rfc2616#section-4.2)。如需詳細資訊，請參閱[HTTP 標頭和 Classic Load Balancer](x-forwarded-headers.md)。

當負載平衡器收到 HTTP 請求時，它會檢查錯誤的請求及方法的長度。負載平衡器的 HTTP 請求的總方法長度，不得超過 127 個字元。如果 HTTP 請求同時通過兩項檢查，負載平衡器會傳送請求至 EC2 執行個體。如果請求中的方法欄位格式不正確，負載平衡器會回應[HTTP 400: BAD\$1REQUEST](#ts-elb-errorcodes-http400)錯誤。如果請求中的方法長度超過 127 個字元，負載平衡器會回應[HTTP 405: METHOD\$1NOT\$1ALLOWED](#ts-elb-errorcodes-http405)錯誤。

EC2 執行個體會透過實作請求的方法並傳送回應回到用戶端，以處理有效的請求。必須設定您的執行個體，以處理這兩種支援和不支援的方法。

以下是您的負載平衡器傳回的錯誤訊息、可能原因，以及解決問題所需採取的步驟。

**Topics**
+ [HTTP 400: BAD\$1REQUEST](#ts-elb-errorcodes-http400)
+ [HTTP 405: METHOD\$1NOT\$1ALLOWED](#ts-elb-errorcodes-http405)
+ [HTTP 408：請求逾時](#ts-elb-errorcodes-http408)
+ [HTTP 502：無效的閘道](#ts-elb-errorcodes-http502)
+ [HTTP 503：服務無法使用](#ts-elb-errorcodes-http503)
+ [HTTP 504：閘道逾時](#ts-elb-errorcodes-http504)

## HTTP 400: BAD\$1REQUEST
<a name="ts-elb-errorcodes-http400"></a>

**Description**：表示用戶端傳送錯誤的請求。

**原因 1**：用戶端傳送不符合 HTTP 規格的格式錯誤請求。例如，請求不可在 URL 中包含空格。

**原因 2**：用戶端使用 HTTP CONNECT 方法，但 Elastic Load Balancing 不支援該方法。

**解決方案**：直接連接到您的執行個體，並擷取用戶端請求的詳細資訊。檢閱錯誤的請求的標頭和 URL 格式。請確認請求符合 HTTP 規格。請確認未使用 HTTP CONNECT。

## HTTP 405: METHOD\$1NOT\$1ALLOWED
<a name="ts-elb-errorcodes-http405"></a>

**描述**：表示方法長度無效。

**原因**：請求標頭中的方法長度超過 127 個字元。

**解決方案**：檢查方法的長度。

## HTTP 408：請求逾時
<a name="ts-elb-errorcodes-http408"></a>

**描述**：表示用戶端取消請求，或無法傳送完整的請求。

**原因 1**：網路中斷或錯誤的請求建構，例如部分的格式標頭；指定的內容大小不符實際傳輸的內容大小，以此類推。

**解決方案 1**：檢查提出請求的程式碼，並嘗試直接傳送到您註冊的執行個體 (或開發/測試環境)，其讓您更能掌控檢查實際的請求。

**原因 2**：與用戶端連線已關閉 (負載平衡器無法傳送回應)

**解決方案 2**：利用發出請求的機器上的封包偵測程式來確認用戶端未在傳送回應之前關閉連線。

## HTTP 502：無效的閘道
<a name="ts-elb-errorcodes-http502"></a>

**描述**：指出負載平衡器無法剖析從已註冊之執行個體傳送的回應。

**原因**：來自執行個體的錯誤回應，或可能的負載平衡器問題。

**解決方案**：確認從執行個體傳送的回應符合 HTTP 規格。前往 [AWS 支援 Center](https://console.aws.amazon.com/support/home#/) 尋求協助。

## HTTP 503：服務無法使用
<a name="ts-elb-errorcodes-http503"></a>

**描述**：指出執行個體或已註冊的負載平衡器造成錯誤。

**原因 1**：負載平衡器中的容量不足，無法處理請求。

**解決方案 1**：這應該是暫時性問題，不應持續超過幾分鐘時間。如果問題仍存在，請前往 [AWS 支援 Center](https://console.aws.amazon.com/support/home#/) 尋求協助。

**原因 2**：沒有已註冊的執行個體。

**解決方案 2**：在您的負載平衡器設定為回應的每個可用區域中，至少註冊一個執行個體。請透過查看 CloudWatch 中的 `HealthyHostCount` 指標來確認。如果您無法確保在每個可用區域註冊執行個體，我們建議啟用跨區域的負載平衡。如需詳細資訊，請參閱[為 Classic Load Balancer 設定跨區域負載平衡。](enable-disable-crosszone-lb.md)。

**原因 3**：沒有正常運作的執行個體。

**解決方案 3**：請確定在您的負載平衡器設定為回應的每個可用區域中，都有運作狀況良好的執行個體。請透過查看 `HealthyHostCount` 指標來確認。

**原因 4**：突增佇列已滿。

**解決方案 4**：確認您的執行個體有足夠的容量能處理請求速率。請透過查看 `SpilloverCount` 指標來確認。

## HTTP 504：閘道逾時
<a name="ts-elb-errorcodes-http504"></a>

**描述**：指出負載平衡器已關閉連線，因為請求未在閒置逾時期間內完成。

**原因 1**：應用程式需要比設定的閒置逾時更長時間來回應。

**解決方案 1**：監控 `HTTPCode_ELB_5XX` 和 `Latency` 指標。如果這些指標有提高，原因可能是由於應用程式內沒有在閒置逾時時間內回應。如需有關即將逾時的請求的詳細資訊，請在負載平衡器上啟用存取日誌，並檢閱 Elastic Load Balancing 所產生的日誌中的 504 回應碼。如有需要，您可以增加容量或增加設定的閒置逾時，讓冗長的操作 (例如，上傳大型檔案) 可以完成。如需詳細資訊，請參閱[為 Classic Load Balancer 設定閒置連線逾時](config-idle-timeout.md)及[如何排除 Elastic Load Balancing 高延遲問題](https://repost.aws/knowledge-center/elb-latency-troubleshooting)。

**原因 2**：註冊的執行個體關閉與 Elastic Load Balancing 的連線。

**解決方案 2**：啟用在 EC2 執行個體上的持續作用設定，並確保持續作用逾時大於您的負載平衡器的閒置逾時設定。

# 故障診斷 Classic Load Balancer：回應代碼指標
<a name="ts-elb-http-errors"></a>

您的負載平衡器針對傳送到用戶端的 HTTP 回應代碼，傳送指標到 Amazon CloudWatch，將錯誤的來源識別為負載平衡器或註冊的執行個體。您可以使用 CloudWatch 傳回的指標，為您的負載平衡器排除問題。如需詳細資訊，請參閱[Classic Load Balancer 的 CloudWatch 指標](elb-cloudwatch-metrics.md)。

以下是 CloudWatch 為您的負載平衡器傳回的回應代碼指標、可能原因，以及您解決問題所採取的步驟。

**Topics**
+ [HTTPCode\$1ELB\$14XX](#ts-elb-error-metrics-ELB_4XX)
+ [HTTPCode\$1ELB\$15XX](#ts-elb-error-metrics-ELB_5XX)
+ [HTTPCode\$1Backend\$12XX](#ts-elb-error-metrics-Backend_2XX)
+ [HTTPCode\$1Backend\$13XX](#ts-elb-error-metrics-Backend_3XX)
+ [HTTPCode\$1Backend\$14XX](#ts-elb-error-metrics-Backend_4XX)
+ [HTTPCode\$1Backend\$15XX](#ts-elb-error-metrics-Backend_5XX)

## HTTPCode\$1ELB\$14XX
<a name="ts-elb-error-metrics-ELB_4XX"></a>

**原因**：來自用戶端的格式錯誤或已取消的請求。

**解決方案**
+ 請參閱 [HTTP 400: BAD\$1REQUEST](ts-elb-error-message.md#ts-elb-errorcodes-http400)。
+ 請參閱 [HTTP 405: METHOD\$1NOT\$1ALLOWED](ts-elb-error-message.md#ts-elb-errorcodes-http405)。
+ 請參閱 [HTTP 408：請求逾時](ts-elb-error-message.md#ts-elb-errorcodes-http408)。

## HTTPCode\$1ELB\$15XX
<a name="ts-elb-error-metrics-ELB_5XX"></a>

**原因**：負載平衡器或已註冊的執行個體造成錯誤，或負載平衡器無法剖析回應。

**解決方案**
+ 請參閱 [HTTP 502：無效的閘道](ts-elb-error-message.md#ts-elb-errorcodes-http502)。
+ 請參閱 [HTTP 503：服務無法使用](ts-elb-error-message.md#ts-elb-errorcodes-http503)。
+ 請參閱 [HTTP 504：閘道逾時](ts-elb-error-message.md#ts-elb-errorcodes-http504)。

## HTTPCode\$1Backend\$12XX
<a name="ts-elb-error-metrics-Backend_2XX"></a>

**原因**：來自註冊的執行個體的正常且成功的回應。

**解決方案**：無。

## HTTPCode\$1Backend\$13XX
<a name="ts-elb-error-metrics-Backend_3XX"></a>

**原因**：從已註冊的執行個體傳送的重新導向回應。

**解決方案**：檢視您執行個體上的存取日誌或錯誤日誌，以判定原因。直接傳送請求到執行個體 (繞過負載平衡器)，以檢視回應。

## HTTPCode\$1Backend\$14XX
<a name="ts-elb-error-metrics-Backend_4XX"></a>

**原因**：從已註冊的執行個體傳送的用戶端錯誤回應。

**解決方案**：檢視您執行個體上的存取日誌或錯誤日誌，以判定原因。直接傳送請求到執行個體 (繞過負載平衡器)，以檢視回應。

**注意**  
如果用戶端取消使用 `Transfer-Encoding: chunked` 標頭起始的 HTTP 請求，眾所周知當負載平衡器轉發請求到執行個體時會產生問題，即使用戶端取消請求。這可能導致後端錯誤。

## HTTPCode\$1Backend\$15XX
<a name="ts-elb-error-metrics-Backend_5XX"></a>

**原因**：從已註冊的執行個體傳送的伺服器錯誤回應。

**解決方案**：檢視您執行個體上的存取日誌或錯誤日誌，以判定原因。直接傳送請求到執行個體 (繞過負載平衡器)，以檢視回應。

**注意**  
如果用戶端取消使用 `Transfer-Encoding: chunked` 標頭起始的 HTTP 請求，眾所周知當負載平衡器轉發請求到執行個體時會產生問題，即使用戶端取消請求。這可能導致後端錯誤。

# 故障診斷 Classic Load Balancer：運作狀態檢查
<a name="ts-elb-healthcheck"></a>

您的負載平衡器會檢查其已註冊執行個體的運作狀態，使用方式是透過 Elastic Load Balancing 所提供預設的運作狀態檢查組態，或是您指定的自訂運作狀態檢查組態。運作狀態檢查組態包含資訊，例如通訊協定、ping 連接埠、ping 路徑、回應逾時及運作狀態檢查間隔。如果在運作狀態檢查間隔內傳回 200 個回應代碼，執行個體會被視為運作狀態良好。如需詳細資訊，請參閱[Classic Load Balancer 執行個體的運作狀態檢查](elb-healthchecks.md)。

如果部分或所有執行個體目前狀態是 `OutOfService`，且描述欄位顯示訊息`Instance has failed at least the Unhealthy Threshold number of health checks consecutively`，則表示執行個體的負載平衡器運作狀態檢查失敗。以下是要尋找的問題、可能原因，以及解決問題所需採取的步驟。

**Topics**
+ [運作狀態檢查目標頁面錯誤](#ts-elb-healthcheck-targetpage)
+ [與執行個體的連線已經逾時。](#ts-elb-healthcheck-failed)
+ [公有金鑰身分驗證失敗](#ts-elb-healthcheck-publickey)
+ [執行個體不會接收負載平衡器的流量](#ts-elb-healthcheck-securitygroup)
+ [執行個體上未開啟連接埠](#ts-elb-healthcheck-ports)
+ [Auto Scaling 群組中的執行個體未通過 ELB 運作狀態檢查](#ts-elb-healthcheck-autoscaling)

## 運作狀態檢查目標頁面錯誤
<a name="ts-elb-healthcheck-targetpage"></a>

**問題**：在指定的 ping 連接埠和 ping 路徑 (例如，HTTP：80/index.html) 上對執行個體發出的 HTTP GET 請求，接收非 200 回應代碼。

**原因 1**：未在執行個體上設定目標頁面。

**解決方案 1**：在每個註冊執行個體建立目標頁面 (例如， `index.html`)，並指定其路徑做為 ping 路徑。

**原因 2**：在回應中未設定 Content-Length 標頭的值。

**解決方案 2**：如果回應包含內文，然後將 Content-Length 標頭設為大於或等於零的值，或設定 Transfer-Encoding 值為「區塊」。

**原因 3**：應用程式未設定為從負載平衡器接收請求，或傳回 200 回應代碼。

**解決方案 3**：檢查您執行個體上的應用程式以調查原因。

## 與執行個體的連線已經逾時。
<a name="ts-elb-healthcheck-failed"></a>

**問題**：從您的負載平衡器到 EC2 執行個體的運作狀態檢查請求將逾時，或產生間歇性故障狀況。

首先，直接連接執行個體以驗證該問題。我們建議您使用執行個體的私有 IP 地址，從網路內連接到您的執行個體。

使用下列適用於 TCP 連的命令：

```
telnet private-IP-address-of-the-instance port
```

使用下列適用於 HTTP 或 HTTPS 連線的命令：

```
curl –I private-IP-address-of-the-instance:port/health-check-target-page
```

如果您正在使用 HTTP/HTTPS 連線，並取得非 200 回應，請參閱[運作狀態檢查目標頁面錯誤](#ts-elb-healthcheck-targetpage)。如果您能夠直接連接到執行個體，請檢查下列各項：

**原因 1**：執行個體在設定的回應逾時時間內沒有回應。

**解決方案 1**：在負載平衡器的運作狀態檢查的組態中調整回應逾時設定。

**原因 2**：執行個體承受極大的負載，並使用超過您設定的回應逾時時間來回應。

**解決方案 2**：
+ 檢查 CPU 過度使用的監控圖形。如需詳細資訊，請參閱《Amazon [ EC2 使用者指南》中的取得特定 EC2 執行個體的統計資料](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/US_SingleMetricPerInstance.html)。 *Amazon EC2 *
+ 連接到您的 EC2 執行個體，檢查其他應用程式資源的使用率，例如記憶體或限制。
+ 如有必要，新增更多執行個體或啟用 Auto Scaling。如需詳細資訊，請參閱 [Amazon EC2 Auto Scaling 使用者指南](https://docs.aws.amazon.com/autoscaling/ec2/userguide/)。

**原因 3**：如果您使用的是 HTTP 或 HTTPS 連線，且在 ping 路徑欄位中指定的目標頁面上執行運作狀態檢查 (例如，`HTTP:80/index.html`)，目標頁面可能會使用比您設定的逾時更長時間來回應。

**解決方案 3**：使用較簡單的運作狀態檢查目標頁面，或調整運作狀態檢查間隔設定。

## 公有金鑰身分驗證失敗
<a name="ts-elb-healthcheck-publickey"></a>

**問題**：負載平衡器設定為使用已啟用後端身分驗證之 HTTPS 或 SSL 通訊協定，但未通過公有金鑰身分驗證。

**原因**：在 SSL 憑證上的公有金鑰，與負載平衡器上設定的公有金鑰不符。使用 `s_client` 命令查看憑證鏈中的伺服器憑證清單。如需詳細資訊，請參閱 OpenSSL 文件中的 [s\$1client](https://www.openssl.org/docs/man1.1.1/man1/openssl-s_client.html)。

**解決方案**：您可能需要更新您的 SSL 憑證。如果您的 SSL 憑證是目前最新的，請嘗試將它重新安裝在負載平衡器上。如需詳細資訊，請參閱[更換 Classic Load Balancer 的 SSL 憑證](elb-update-ssl-cert.md)。

## 執行個體不會接收負載平衡器的流量
<a name="ts-elb-healthcheck-securitygroup"></a>

**問題**：執行個體的安全群組封鎖來自負載平衡器的流量。

在執行個體上擷取封包以確認問題。使用下列命令：

```
# tcpdump port health-check-port
```

**原因 1**：與執行個體關聯的安全群組不允許負載平衡器的流量。

**解決方案 1**：編輯執行個體安全群組，以允許來自負載平衡器的流量。新增規則以允許來自負載平衡器安全群組的所有流量。

**原因 2**：負載平衡器的安全群組不允許流向 EC2 執行個體的流量。

**解決方案 2**：編輯您的負載平衡器的安全群組，以允許流量流往子網路和 EC2 執行個體。

如需管理安全群組的資訊，請參閱 [設定您的 Classic Load Balancer 的安全群組](elb-vpc-security-groups.md)。

## 執行個體上未開啟連接埠
<a name="ts-elb-healthcheck-ports"></a>

**問題**：由負載平衡器傳送到 EC2 執行個體的運作狀態檢查，已遭連接埠或防火牆封鎖。

使用下列命令以確認問題：

```
netstat –ant
```

**原因**：指定的運作狀態連接埠或接聽程式連接埠 (如果設定不同) 未開啟。兩個指定的連接埠的運作狀態檢查和接聽程式連接埠，必須開啟和接聽。

**解決方案**：在您的執行個體上開啟接聽程式連接埠，和您的運作狀態檢查組態中指定的連接埠 (如果設定不同)，以接收負載平衡器流量。

## Auto Scaling 群組中的執行個體未通過 ELB 運作狀態檢查
<a name="ts-elb-healthcheck-autoscaling"></a>

**問題**：您的 Auto Scaling 群組中的執行個體，通過預設的 Auto Scaling 運作狀態檢查，但未通過 ELB 運作狀態檢查。

**原因**：Auto Scaling 使用 EC2 狀態檢查來偵測硬體和軟體的執行個體問題，但負載平衡器執行運作狀態檢查方式是傳送請求到執行個體，並等待 200 個回應代碼，或建立 TCP 連線 (針對以 TCP 為基礎的運作狀態檢查)。

執行個體可能不會通過 ELB 運作狀態檢查，因為在執行個體上執行的應用程式問題造成負載平衡器認定執行個體已停止服務。此執行個體可能通過 Auto Scaling 運作狀態檢查，它不會被取代為 Auto Scaling 政策，因為它是根據 EC2 狀態檢查而被認定運作狀態正常。

**解決方案**：使用您的 Auto Scaling 群組適用的 ELB 運作狀態檢查。當您使用 ELB 運作狀態檢查，Auto Scaling 會透過檢查執行個體狀態檢查和 ELB 運作狀態檢查的結果，判斷您的執行個體的運作狀態。如需詳細資訊，請參閱 *Amazon EC2 Auto Scaling 使用者指南*中的[為 Auto Scaling 群組新增 Elastic Load Balancing 運作狀態檢查](https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html)。

# 故障診斷 Classic Load Balancer：用戶端連線能力
<a name="ts-elb-connection-failed"></a>

## 用戶端無法連接到面向網際網路的負載平衡器
<a name="client-cannot-connect"></a>

如果負載平衡器未回應請求，則請檢查下列問題：

**您的面向網際網路的負載平衡器已連接到私有子網路**  
您必須為負載平衡器指定公有子網路。公有子網路具有適用您虛擬私有雲端 (VPC) 對網際網路閘道的路由。

**安全群組或網路 ACL 不允許流量**  
負載平衡器的安全群組和負載平衡器子網路的任何網路 ACL，必須允許來自用戶端的傳入流量和連至接聽程式連接埠上用戶端的傳出流量。如需詳細資訊，請參閱[設定您的 Classic Load Balancer 的安全群組](elb-vpc-security-groups.md)。

## 負載平衡器不會收到傳送至自訂域的請求
<a name="custom-domain-request"></a>

如果負載平衡器未收到傳送至自訂域的請求，則請檢查下列問題：

**自訂域名稱未解析為負載平衡器 IP 地址**  
+ 使用命令列介面確認自訂域名稱解析的目標 IP 地址。
  + **Linux、macOS 或 Unix** – 您可以在終端內使用 `dig` 命令。例如 `dig example.com`
  + **Windows** – 您可以在命令提示內使用 `nslookup` 命令。例如 `nslookup example.com`
+ 使用命令列介面確認負載平衡器 DNS 名稱解析的目標 IP 地址。
+ 比較兩種輸出的結果。IP 地址必須相符。

## 傳送至負載平衡器的 HTTPS 要求會傳回 "NET::ERR\$1CERT\$1COMMON\$1NAME\$1INVALID"
<a name="https-cert-invalid"></a>

如果 HTTPS 請求從負載平衡器接收 `NET::ERR_CERT_COMMON_NAME_INVALID`，則請檢查下列可能的原因：
+ HTTPS 請求中使用的域名稱與在關聯 ACM 憑證之接聽程式中指定的替代名稱不相符。
+ 正在使用負載平衡器預設 DNS 名稱。預設 DNS 名稱無法用於提出 HTTPS 請求，因為無法針對 `*.amazonaws.com` 域請求公有憑證。

# 故障診斷 Classic Load Balancer：執行個體註冊
<a name="ts-elb-register-instance"></a>

當您向負載平衡器註冊的執行個體，需要採取好幾個步驟後，負載平衡器才能開始傳送請求到您的執行個體。

以下是您的負載平衡器在註冊 EC2 執行個體時可能遇到的問題、可能原因，以及您解決問題所採取的步驟。

**Topics**
+ [時間太長而無法註冊 EC2 執行個體](#ts-elb-register-too-long)
+ [無法註冊從已支付 AMI 啟動的執行個體](#ts-elb-paid-ami-instance)

## 時間太長而無法註冊 EC2 執行個體
<a name="ts-elb-register-too-long"></a>

**問題**：註冊 EC2 執行個體在 `InService` 狀態的時間比過預期的更久。

**原因**：您的執行個體可能無法通過執行運作狀態檢查。在初次完成執行個體註冊步驟後 (最多約 30 秒)，負載平衡器會開始傳送運作狀態檢查請求。您的執行個體不是 `InService`，直到一個運作狀態檢查成功。

**解決方案**：請參閱[與執行個體的連線已經逾時。](ts-elb-healthcheck.md#ts-elb-healthcheck-failed)。

## 無法註冊從已支付 AMI 啟動的執行個體
<a name="ts-elb-paid-ami-instance"></a>

**問題**：Elastic Load Balancing 未註冊使用已支付 AMI 啟動的執行個體。

**原因**：您的執行個體可能已使用已支付 AMI 從 [Amazon DevPay](https://aws.amazon.com/devpay/) 啟動。

**解決方案**：Elastic Load Balancing 不支援從 [Amazon DevPay](https://aws.amazon.com/devpay/) 使用已支付 AMI 啟動來註冊執行個體。請注意，您可以從 [AWS Marketplace](https://aws.amazon.com/marketplace) 使用已支付 AMI。如果您已經使用來自 的付費 AMI， AWS Marketplace 且無法註冊從該付費 AMI 啟動的執行個體，請前往 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)尋求協助。