如何疑難排解 Route 53 中的加權路由政策的問題?

4 分的閱讀內容
0

在 Amazon Route 53 中測試加權路由政策的 DNS 解析時,我得到意想不到的結果。

簡短描述

假設您建立了名稱為「weighted.awsexampledomain.com」的文字 (TXT) 記錄。記錄的存留時間 (TTL) 為 300 秒,且加權設定如下:

名稱類型TTL價值權重運作狀態檢查狀態
weighted.awsexampledomain.com.TXT300「加權為 0 的記錄」加權 =0運作狀態檢查相關聯
weighted.awsexampledomain.com.TXT300「加權為 20 的記錄」加權=20運作狀態檢查相關聯
weighted.awsexampledomain.com.TXT300「加權為 50 的記錄」加權=50運作狀態檢查相關聯
weighted.awsexampledomain.com.TXT300「加權為 70 的記錄」加權=70運作狀態檢查相關聯

下列範例會參考此組態。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確定您使用的是最新的 AWS CLI 版本

測試您的加權路由政策以識別問題

傳送多個 (超過 10,000 個) 查詢以測試您的加權路由政策。從多個位置測試 DNS 解析,或直接查詢授權名稱伺服器以瞭解政策。請使用下列指令碼,針對您的域名稱傳送多個 DNS 查詢。

使用遞迴解析程式傳送 DNS 查詢:

#!/bin/bash
for i in {1..10000}
do
domain=$(dig <domain-name> <type> @RecursiveResolver_IP +short)
echo -e  "$domain" >> RecursiveResolver_results.txt
done

將 DNS 查詢直接傳送至授權名稱伺服器

#!/bin/bash
for i in {1..10000}
do
domain=$(dig <domain-name> <type> @AuthoritativeNameserver_IP +short)
echo -e  "$domain" >> AuthoritativeNameServer_results.txt
done

使用 AWS CLI 中的 awk 工具輸出範例:

$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @172.16.173.64 +short); echo -e  "$domain" >> RecursiveResolver_results.txt; done
$ awk ' " " ' RecursiveResolver_results.txt | sort | uniq -c
1344 "Record with Weight 20"
3780 "Record with Weight 50"
4876 "Record with Weight 70"

使用測試結果疑難排解您的特定問題

問題: 加權記錄的端點資源未收到預期的流量比率。

Route 53 根據分配給記錄的加權將流量傳送到資源,作為所有記錄總加權的比例。中繼 DNS 解析器快取 DNS 回應記錄 TTL 的持續時間。由於快取的回應,用戶端會在持續時間內僅導向至特定端點。

範例

您可以針對緩存 DNS 解析器 192.168.1.2 查詢:

$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e  "$domain" >> CachingResolver_results.txt; done

$ awk ' " " ' CachingResolver_results.txt | sort | uniq -c
3561 "Record with Weight 20"
1256 "Record with Weight 50"
5183 "Record with Weight 70"

請注意,因為遞迴 DNS 解析器上的快取,導致上述結果不如預期。

問題: 部分加權記錄不會傳回。

範例

有些運作狀態檢查失敗:

名稱類型TTL價值權重運作狀態檢查狀態
weighted.awsexampledomain.com.TXT300「加權為 0 的記錄」加權 =0運作狀態檢查成功
weighted.awsexampledomain.com.TXT300「加權為 20 的記錄」加權=20運作狀態檢查成功
weighted.awsexampledomain.com.TXT300「加權為 50 的記錄」加權=50運作狀態檢查失敗
weighted.awsexampledomain.com.TXT300「加權為 70 的記錄」加權=70運作狀態檢查成功
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e  "$domain" >> HealthCheck_results.txt; done

$ awk ' " " ' HealthCheck_results.txt | sort | uniq -c
3602 "Record with Weight 20"
6398 "Record with Weight 70"

在此範例中,Route 53 不會傳回「加權為 50 的記錄」,因為其運作狀態檢查失敗。

問題: 所有加權記錄都不正常。

即使一組記錄中沒有正常的記錄,Route 53 仍必須提供對 DNS 查詢的回應。但是,選擇一個記錄而不是另一條記錄沒有基礎。在這種情況下,Route 53 認為該組中的所有記錄都是正常的。系統會根據路由政策和您為每筆記錄指定的值來選取一條記錄。

範例

名稱類型TTL價值權重運作狀態檢查狀態
weighted.awsexampledomain.com.TXT300「加權為 0 的記錄」加權 =0運作狀態檢查失敗
weighted.awsexampledomain.com.TXT300「加權為 20 的記錄」加權=20運作狀態檢查失敗
weighted.awsexampledomain.com.TXT300「加權為 50 的記錄」加權=50運作狀態檢查失敗
weighted.awsexampledomain.com.TXT300「加權為 70 的記錄」加權=70運作狀態檢查失敗
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @205.251.194.16 +short); echo -e  "$domain" >> All_UnHealthy_results.txt; done

$ awk ' " " ' All_UnHealthy_results.txt | sort | uniq -c
1446 "Record with Weight 20"
3554 "Record with Weight 50"
5000 "Record with Weight 70"

在此範例中,Route 53 會將所有記錄視為正常 (開啟失敗)。路由 53 根據設定的比例回應 DNS 請求。不會傳回「加權 0」的記錄,因為其加權為零。

注意: 如果您將非零加權設為某些記錄,並將其他記錄設定為零加權,則運作狀態檢查的運作方式與所有記錄的加權都相同。但是,也有一些例外情況:

  • Route 53 最初只考慮正常的非零加權記錄(若有)。
  • 如所有非零記錄都不正常,則 Route 53 會考慮正常的零加權記錄。

範例

名稱類型TTL價值權重運作狀態檢查狀態
weighted.awsexampledomain.com.TXT300「加權為 0 的記錄」加權 =0運作狀態檢查合格
weighted.awsexampledomain.com.TXT300「加權為 20 的記錄」加權=20運作狀態檢查合格
weighted.awsexampledomain.com.TXT300「加權為 50 的記錄」加權=50運作狀態檢查失敗
weighted.awsexampledomain.com.TXT300「加權為 70 的記錄」加權=70運作狀態檢查失敗
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e  "$domain" >> HealthCheck_results.txt; done

$ awk ' " " ' HealthCheck_results.txt | sort | uniq -c
10000 "Record with Weight 20"

在此範例中,Route 53 不考慮加權為 0 的記錄。除非所有加權記錄都不正常,否則 Route 53 不會傳回零加權記錄。

如果您為群組中的所有記錄設定相等加權,則流量會以相同的可能性路由至所有正常的資源。如果將群組中所有記錄的「加權」設定為零,則流量會以相同的可能性路由至所有正常的資源。

相關資訊

選取路由原則

設定運作狀態檢查時,Amazon Route 53 如何選取記錄

AWS 官方
AWS 官方已更新 1 年前