本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障診斷:一般 Amazon MQ
請使用此節中的資訊,協助診斷在使用 Amazon MQ 代理程式時可能遇到的常見問題,例如連線到代理程式的問題,以及代理程式重新啟動。
我無法連線至代理程式 Web 主控台或端點。
如果您在使用 Web 主控台或線路層級端點連線至代理程式時遇到問題,建議您執行下列步驟。
-
檢查您是否嘗試從防火牆後面連線到代理程式。您可能需要將防火牆設定為允許存取代理程式。
-
檢查您是否嘗試使用 FIPS 端點連線到代理程式。Amazon MQ 僅在使用 API 操作時支援 FIPS 端點,而不支援與代理程式執行個體本身的線路連線。
-
檢查 Public Accessibility (公開存取性) 選項是否設定為 Yes (是)。如果此選項設定為 No (否),請檢查子網路的網路存取控制清單 (ACL)規則。如果您已建立自訂網路 ACL,您可能需要變更網路 ACL 規則,以提供代理程式的存取權。如需 Amazon VPC 聯網的詳細資訊,請參閱《Amazon VPC 使用者指南》中的啟用網際網路存取。
-
檢查代理程式的安全群組規則。請確定您允許連線到下列連接埠:
下列連接埠會根據引擎類型分組,因為 Amazon MQ 上的 ActiveMQ 和 Amazon MQ 上的 RabbitMQ 會使用不同的連接埠進行連線。 Amazon MQ Amazon MQ
Amazon MQ 上的 ActiveMQ Amazon MQ
Web 主控台 – 連接埠 8162
OpenWire – 連接埠 61617
AMQP – 連接埠 5671
STOMP – 連接埠 61614
MQTT – 連接埠 8883
WSS – 連接埠 61619
Amazon MQ 上的 RabbitMQ Amazon MQ
-
針對您的代理程式引擎類型執行下列網路連線測試。
對於沒有公開存取性的代理程式,請從與 Amazon MQ 代理程式相同的 Amazon VPC 內的 Amazon EC2 執行個體執行測試,然後評估回應。
- ActiveMQ on Amazon MQ
-
在 Amazon ActiveMQ上測試 ActiveMQ Amazon MQ
-
開啟新的終端機或命令列視窗。
-
執行下列 nslookup
命令來查詢代理程式 DNS 記錄。對於作用中/待命部署,測試作用中端點和待命端點。作用中/待命端點會以新增至唯一代理程式 ID 的尾碼 -1
或 -2
識別。以您的資訊取代端點。
$
nslookup b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
如果查詢成功,您會看到類似以下的輸出。
Non-authoritative answer:
Server: dns-resolver-corp-sfo-1.sfo.corp.amazon.com
Address: 172.10.123.456
Name: ec2-12-345-123-45.us-west-2.compute.amazonaws.com
Address: 12.345.123.45
Aliases: b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
解析的 IP 地址應符合 Amazon MQ 主控台中提供的 IP 位址。這表示 DNS 伺服器上的網域名稱解析正確,而且您可繼續下一個步驟。
-
執行下列 telnet
命令來測試代理程式的網路路徑。以您的資訊取代端點。以 Web 主控台的連接埠號碼 8162
,或其他線路層級連接埠取代連接埠
,視需要測試其他通訊協定。
對於作用中/待命部署,如果您使用待命端點執行 telnet
,則會收到 Connect failed
錯誤訊息。這是可預期的,由於待命執行個體本身正在執行,但 ActiveMQ 程序並未執行,且無法存取代理程式的 Amazon EFS 儲存磁碟區。對 -1
和 -2
端點執行命令,以確保您同時測試作用中執行個體和待命執行個體。
$
telnet b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
port
對於作用中執行個體,您會看到類似以下的輸出。
Connected to b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com.
Escape character is '^]'.
-
執行下列其中一項操作。
-
如果 telnet
命令成功,請檢查 EstablishedConnectionsCount 指標並確認代理程式尚未達到最大的線路層級連線限制。您也可藉由檢閱代理程式 General
日誌,確認是否已達到限制。如果此指標大於零,則至少有一個用戶端目前連線至代理程式。如果指標顯示零連線,則再次執行 telnet
路徑測試,並等待至少一分鐘再中斷連線,因為代理程式指標會每分鐘發佈一次。
-
如果 telnet
命令失敗,請檢查代理程式的彈性網路界面狀態,並確認狀態為 in-use
。針對每個執行個體的網路界面建立 Amazon VPC 流程日誌,並檢閱所產生的流程日誌。尋找在您執行 telnet
命令時代理程式的 IP 地址,並確認連線封包為 ACCEPTED
,包括傳回封包。如需詳細資訊,以及查看流程日誌範例,請參閱《Amazon VPC 開發人員指南》中的流程日誌記錄範例。
-
執行下列 curl
命令來檢查與 ActiveMQ 管理 Web 主控台的連線。
$
curl https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
:8162/index.html
如果此命令成功,輸出應該是類似以下的 HTML 文件。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Apache ActiveMQ</title>
...
- RabbitMQ on Amazon MQ
-
在 Amazon MQ 代理程式的網路連線上測試 RabbitMQ Amazon MQ
-
開啟新的終端機或命令列視窗。
-
執行下列 nslookup
命令來查詢代理程式 DNS 記錄。以您的資訊取代端點。
$
nslookup b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
如果查詢成功,您會看到類似以下的輸出。
Non-authoritative answer:
Server: dns-resolver-corp-sfo-1.sfo.corp.amazon.com
Address: 172.10.123.456
Name: rabbit-broker-1c23e456ca78-b9000123b4ebbab5.elb.us-west-2.amazonaws.com
Addresses: 52.12.345.678
52.23.234.56
41.234.567.890
54.123.45.678
Aliases: b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
-
執行下列 telnet
命令來測試代理程式的網路路徑。以您的資訊取代端點。您可以 Web 主控台的連接埠 443
及 5671
取代連接埠
,以測試線路層級 AMQP 連線。
$
telnet b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
port
如果命令成功,您會看到類似以下的輸出。
Connected to b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com.
Escape character is '^]'.
-
執行下列其中一項操作。
如果 telnet
命令成功,請檢查 ConnectionCount 指標,並確認代理程式尚未達到 max-connections 預設政策中設定的值。您也可藉由檢閱代理程式 Connection.log
日誌群組,確認是否已達到限制。如果此指標大於零,則至少有一個用戶端目前連線至代理程式。如果指標顯示零連線,則再次執行 telnet
路徑測試。如果連線在代理程式將新的連線指標發佈至 CloudWatch 之前關閉,您可能需要重複此程序。指標每分鐘發佈一次。
-
對於沒有公開存取性的代理程式,如果 telnet
命令失敗,請檢查代理程式的彈性網路界面狀態,並確認狀態為 in-use
。針對每個網路界面建立 Amazon VPC 流程日誌,並檢閱所產生的流程日誌。尋找在叫用 telnet
命令時代理程式的私有 IP 地址,並確認連線封包為 ACCEPTED
,包括傳回封包。如需詳細資訊,以及查看流程日誌範例,請參閱《Amazon VPC 開發人員指南》中的流程日誌記錄範例。
此步驟不適用於 Amazon MQ 代理程式上的 RabbitMQ,具有公有存取能力。 Amazon MQ
-
執行下列 curl
命令來檢查與 RabbitMQ 管理 Web 主控台的連線。
$
curl https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
:443/index.html
如果此命令成功,輸出應該是類似以下的 HTML 文件。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>RabbitMQ Management</title>
...
我的代理程式正在執行,我可以使用 telnet
驗證連線能力,但我的用戶端無法連線並傳回 SSL 例外狀況。
您的代理程式端點憑證可能已經在代理程式維護時段更新。Amazon MQ 代理程式憑證會定期輪換,以確保代理程式的持續可用性和安全性。
建議使用 Amazon Trust Services 中的 Amazon 根憑證授權機構 (CA),在用戶端的信任存放區中進行身分驗證。所有 Amazon MQ 代理程式憑證都使用此根 CA 進行簽署。透過使用 Amazon 根 CA,您不再需要在每次代理程式上有憑證更新時下載新的 Amazon MQ 代理程式憑證。
我建立了代理程式,但代理程式建立失敗。
如果您的代理程式處於 CREATION_FAILED
狀態,請執行下列動作。
檢查您的 IAM 許可。若要建立代理程式,必須使用 AWS 受管 IAM 政策,AmazonMQFullAccess
或在自訂 IAM 政策中擁有正確的 Amazon EC2 許可集。若要進一步了解您所需的 Amazon EC2 許可,請參閱建立 Amazon MQ 代理程式所需的 IAM 許可。
-
檢查您為代理程式選擇的子網路是否位於共用的 Amazon Virtual Private Cloud (VPC) 中。若要在共用的 Amazon VPC 中建立 Amazon MQ 代理程式,您必須在擁有 Amazon VPC 的帳戶中建立它。
我的代理程式重新啟動,但我不確定原因。
如果您的代理程式已自動重新啟動,可能是由於以下原因之一。
-
您的代理程式可能因為排定的每週維護時段而重新啟動。Amazon MQ 會定期對訊息代理程式的硬體、作業系統或引擎軟體執行維護。維護的持續時間會有所不同,但最多可能持續兩小時,視您針對訊息代理程式排程的操作而定。代理程式可能會在兩小時維護期間的任何時候重新啟動。如需代理程式維護時段的詳細資訊,請參閱 排程 Amazon MQ 代理程式的維護時段。
-
您的代理程式執行個體類型可能不適合您的應用程式工作負載。例如,在 mq.t2.micro
上執行生產工作負載可能會導致代理程式耗盡資源。高 CPU 使用率或高代理程式記憶體使用量可能會導致代理程式意外重新啟動。若要查看代理程式正在使用多少 CPU 和記憶體,請針對您的引擎類型使用下列 CloudWatch 指標。
-
Amazon MQ 上的 ActiveMQ Amazon MQ – 檢查代理程式目前使用的已配置 Amazon EC2 運算單位CpuUtilization
百分比。檢查 HeapUsage
,了解代理程式目前使用的 ActiveMQ JVM 記憶體限制的百分比。
-
Amazon MQ 上的 RabbitMQ Amazon MQ – 檢查代理程式目前使用的已配置 Amazon EC2 運算單位SystemCpuUtilization
百分比。檢查 RabbitMQMemUsed
,了解已使用的 RAM 數量 (以位元組為單位),並除以 RabbitMQMemLimit
來取得 RabbitMQ 節點使用的記憶體百分比。
如需代理程式執行個體類型以及如何針對工作負載選擇正確執行個體類型的詳細資訊,請參閱 Broker instance types。