

如需與 Amazon Timestream for LiveAnalytics 類似的功能，請考慮使用 Amazon Timestream for InfluxDB。它提供簡化的資料擷取和單一位數毫秒查詢回應時間，以進行即時分析。[在這裡](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)進一步了解。

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

# 管理叢集端點的 DNS 解析
<a name="timestream-for-influx-managing-dns"></a>

InfluxDB 3 多節點叢集的 InfluxDB Timestream 使用 DNS 型流量分佈來平衡節點之間的連線。當容錯移轉發生或節點遭到取代時，DNS 記錄會自動更新以指向可用的執行個體。為了確保您的應用程式可以探索這些變更並維持最佳流量分佈，適當的 DNS 解析組態至關重要。

## 了解 DNS 快取
<a name="timestream-for-influx-dns-caching-issue"></a>

許多程式設計環境快取 DNS 查詢以改善效能。不過，此快取可能會讓您的應用程式無法在容錯移轉後探索更新的 IP 地址，或無法將連線分散到多個叢集節點。影響因語言和執行時間而異：
+ **Java/JVM 型應用程式** — JVM 快取可設定time-to-live(TTL) 的 DNS 查詢。有些組態會無限期快取，直到 JVM 重新啟動為止。
+ **其他語言**：Python、Go、Node.js 和其他執行時間通常依賴作業系統 DNS 解析，可能不會顯示相同的快取行為。

## 解決方案 1：設定 JVM DNS TTL (Java 應用程式）
<a name="timestream-for-influx-jvm-ttl"></a>

對於連線至 Timestream for InfluxDB for InfluxDB 3 叢集端點的 Java 應用程式，請將 JVM DNS 快取 TTL 設為**零**。這可確保每個連線都會觸發新的 DNS 查詢，進而啟用適當的流量分佈和立即容錯移轉偵測。

檢查您目前的 TTL 設定：

```
String ttl = java.security.Security.getProperty("networkaddress.cache.ttl");
```

使用下列其中一種方法來設定 TTL：
+ **全域組態** — 在 `networkaddress.cache.ttl`中設定`$JAVA_HOME/jre/lib/security/java.security`：

  ```
  networkaddress.cache.ttl=0
  ```
+ **應用程式特定的組態** — 在建立網路連線之前，在應用程式初始化程式碼中設定 屬性：

  ```
  java.security.Security.setProperty("networkaddress.cache.ttl", "0");
  ```
+ **JVM 引數** — 啟動應用程式時將 做為系統屬性傳遞：

  ```
  java -Dsun.net.inetaddr.ttl=0 -jar your-application.jar
  ```

**注意**  
對於非叢集端點或一般 AWS 資源，TTL 60 秒通常就足夠了。零 TTL 建議專屬於 InfluxDB 3 叢集端點，其中流量分佈和快速容錯移轉偵測至關重要。

## 解決方案 2：透過授權名稱伺服器直接解析
<a name="timestream-for-influx-direct-resolution"></a>

如果 TTL 組態不足，例如由於中繼作業系統層級快取，或您的程式設計語言未顯示 DNS 快取問題，您可以直接查詢授權名稱伺服器，強制新的 DNS 解析。只有在標準 TTL 組態無法解決問題時，才使用此方法。

**直接解析工作流程**

1. 識別叢集端點的授權名稱伺服器：

   ```
   dig <cluster-endpoint> NS
   ```

   在輸出`AUTHORITY SECTION`的 中，記下 後面列出的名稱伺服器`IN SOA`。例如：`ns-1458.awsdns-54.org`。

1. 直接查詢授權名稱伺服器以略過快取：

   ```
   dig @ns-1458.awsdns-54.org <cluster-endpoint>
   ```

   這會傳回端點目前的 IP 地址，以反映實際的 DNS 型流量分佈。

1. 為您的應用程式連線使用已解析的 IP 地址 (IP 地址）。定期或在發生連線錯誤以重新整理地址時重複此解析。

**範例**：

```
# Find authoritative nameserver
dig my-cluster.timestream-influxdb.us-east-1.amazonaws.com NS

# Resolve using authoritative nameserver
dig @ns-1458.awsdns-54.org my-cluster.timestream-influxdb.us-east-1.amazonaws.com

# Use returned IP addresses in your application
```

## 處理節點 IP 變更
<a name="timestream-for-influx-handling-ip-changes"></a>

**重要**  
節點 IP **地址不是靜態**的。它們會在容錯移轉、節點重新啟動、維護操作和叢集擴展期間變更。切勿無限期快取已解析的 IP 地址。

實作這些實務來處理 IP 變更：
+ **定期重新解析** — 使用背景任務每 30-60 秒重新解析一次端點。比較新的 IP 地址與快取的值，並相應地更新您的連線集區。
+ **錯誤驅動的重新解析** — 當連線失敗 （逾時、連線遭拒、重設） 時，請立即重新解析端點，並使用更新的 IP 地址重試。
+ **正常連線耗盡** — 當 DNS 記錄集中不再有 IP 地址時，允許處理中的請求完成，但停止對該 IP 建立新的連線。
+ **建立新的連線** — 重新解析後，使用更新的 IP 地址建立新的連線。固定到舊 IPs現有連線將不會受益於重新解析。

## 最佳實務
<a name="timestream-for-influx-dns-best-practices"></a>
+ 從 **TTL 組態開始** — 對於 Java 應用程式，請務必`networkaddress.cache.ttl=0`先嘗試設定。這是最簡單且最有效的解決方案。
+ **謹慎使用直接解析** — 只在 TTL 組態不足或處理持久性中繼快取時，才使用授權名稱伺服器查詢。
+ **自動化名稱伺服器探索** — 請勿硬式編碼名稱伺服器地址。動態探索它們，因為名稱伺服器指派可能會變更。
+ **僅適用於叢集端點** — 這些技術適用於使用 DNS 型分佈的叢集層級端點 （寫入和讀取）。直接鎖定個別節點的節點特定端點不需要此組態。
+ **測試您的實作** — 確認您的應用程式已正確將連線分散到多個節點，並從模擬節點故障中復原。