共用方式為


HPC Cache 用戶端流量的負載平衡

本文說明一些將用戶端流量平衡到 Azure HPC Cache 上所有掛接點的基本方法。

每個 HPC Cache 至少有三個不同的 IP 位址,且具有較大輸送量值的快取最多可以有 12 個。 請務必使用所有 IP 位址來獲得 Azure HPC Cache 的完整優點。

有各種選項可讓用戶端掛接取得負載平衡:

  • 手動為每個用戶端選擇不同的掛接 IP
  • 在用戶端掛接指令碼中包含 IP 位址輪替
  • 設定 DNS 系統,以自動路由傳送所有可用位址之間的用戶端要求 (循環配置資源 DNS)

正確的負載平衡系統取決於工作流程的複雜度、快取中的 IP 位址數目,以及大量的其他因素。 如果您需要協助來決定哪一種方法最適合您,請洽詢 Azure 顧問。

手動指派 IP 位址

快取的掛接 IP 位址會顯示在 Azure 入口網站的快取 [概觀] 和 [掛接指示] 頁面,以及當您使用 Azure CLI 或 PowerShell 建立快取時所列印的成功訊息上。

您可以使用 [掛接指示] 頁面,為每個用戶端產生自訂掛接命令。 建立多個命令時,請選取所有快取掛接位址值。

如需詳細資料,請參閱掛接 Azure HPC Cache

使用已編寫指令碼的負載平衡

有數種方式可以透過程式設計方式在可用的 IP 位址之間輪替用戶端掛接。 以下提供兩個範例。

掛接命令指令碼 cksum 範例

此範例掛接命令會使用雜湊函數 cksum 和用戶端主機名稱,在 HPC Cache 上的所有可用 IP 位址之間自動散發用戶端連線。 如果所有用戶端電腦都有唯一的主機名稱,您可以在每個用戶端上執行此命令,以確保使用所有可用的掛接點。

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.0.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/${NAMESPACE} /mnt

若要在工作流程中使用此範例,請自訂這些字詞:

  • X= 運算式中,請依排序使用所有快取掛接位址的依空格分隔的清單。

    運算式 (X=(10.0.0.{7..9}) 會將變數 X 設定為這個掛接位址集:{10.0.0.7, 10.0.0.8, 10.0.0.9}。 使用快取的基底 IP 位址和快取 [概觀] 頁面中顯示的確切位址。 如果位址不是連續的,請以數值順序列出這些位址。

  • %3 字詞中,請使用快取的掛接 IP 位址實際數字 (通常為 3、6、9 或 12)。

    例如,如果快取公開九個用戶端掛接 IP 位址,請使用 %9

  • 針對運算式 ${NAMESPACE},請使用用戶端將存取的儲存體目標命名空間路徑。

    您可以使用您已定義的變數 (範例中的 NAMESPACE),或改為傳遞常值。

    本節結尾的命令範例會使用命名空間路徑的常值 (/blob-target-1)。

  • 如果您想要在用戶端電腦上使用自訂本地路徑,請將值 /mnt 變更為您想要的路徑。

以下是填入用戶端掛接命令的範例:

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.7.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/blob-target-1 /hpc-cache/blob1 

循環配置資源函數範例

此程式碼範例使用用戶端 IP 位址作為隨機產生的元素,將用戶端分配到所有 HPC Cache 的可用 IP 位址。

function mount_round_robin() {

  # to ensure the clients are spread out somewhat evenly the default
  # mount point is based on this client's IP octet4 % number of HPC cache mount IPs.

  declare -a MOUNT_IPS="($(echo ${NFS_IP_CSV} | sed "s/,/ /g"))"
  HASH=$(hostname | cksum | cut -f 1 -d ' ')
  DEFAULT_MOUNT_INDEX=$((${HASH} % ${#MOUNT_IPS[@]}))
  ROUND_ROBIN_IP=${MOUNT_IPS[${DEFAULT_MOUNT_INDEX}]}

  DEFAULT_MOUNT_POINT="${BASE_DIR}/default"

  # no need to write again if it is already there
  if ! grep --quiet "${DEFAULT_MOUNT_POINT}" /etc/fstab; then
      echo "${ROUND_ROBIN_IP}:${NFS_PATH} ${DEFAULT_MOUNT_POINT} nfs hard,proto=tcp,mountproto=tcp,retry=30 0 0" >> /etc/fstab
      mkdir -p "${DEFAULT_MOUNT_POINT}"
      chown nfsnobody:nfsnobody "${DEFAULT_MOUNT_POINT}"
  fi
  if ! grep -qs "${DEFAULT_MOUNT_POINT} " /proc/mounts; then
      retrycmd_if_failure 12 20 mount "${DEFAULT_MOUNT_POINT}" || exit 1
  fi
}

使用 DNS 負載平衡

本節說明設定 DNS 系統的基本概念,以將用戶端連線散發到 Azure HPC Cache 上所有掛接點。 此方法不會考慮每個用戶端產生的流量,但確實會確保將用戶端平均分散到所有快取的介面上,而不只是使用一或兩個介面。

本文件不包含在 Azure 環境中為用戶端設定和管理 DNS 伺服器的指示。

不需要 DNS,就能使用 NFS 通訊協定和 IP 位址來掛接用戶端。 如果您想要使用網域名稱 (而非 IP 位址) 來連線到硬體 NAS 系統,或如果工作流程包含特定的進階通訊協定設定,需要 DNS。

HPC Cache 不需要存取您用來將位址散發給用戶端的 DNS 系統。 在某些情況下,您可能想要針對快取本身使用自訂 DNS 系統,但設定該系統比設定這種用戶端循環配置資源系統更為複雜。 如果您考慮HPC Cache 的 DNS 伺服器變更為自訂系統,則必須詢問 Azure 支援。

設定快取掛接點的循環配置資源散發

循環配置資源 DNS (RRDNS) 系統會自動在多個位址之間路由傳送用戶端要求。

若要設定此系統,您需要自訂 DNS 伺服器的設定檔,以便在將要求掛接至 HPC Cache 的主要網域位址時,其會指派所有 HPC Cache 系統掛接點之間的流量。 用戶端會使用其網域名稱作為伺服器引數來掛接 HPC Cache,並會自動路由傳送至下一個掛接 IP。

RRDNS 的設定有兩個主要步驟:

  1. 修改 DNS 伺服器的 named.conf 檔案,將查詢的循環順序設定為 HPC Cache。 此選項會使伺服器循環處理所有可用的 IP 值。 加入陳述式,如下所示:

    options {
        rrset-order {
            class IN A name "hpccache.contoso.com" order cyclic;
        };
    };
    
  2. 如下列範例所示,設定每個可用 IP 位址的 A 記錄和指標 (PTR) 記錄。

    這些 nsupdate 命令提供為 HPC Cache (網域名稱為 hpccache.contoso.com,三個掛接位址為 10.0.0.10、10.0.0.11 和 10.0.0.12) 正確設定 DNS 的範例:

    update add hpccache.contoso.com. 86400 A 10.0.0.10
    update add hpccache.contoso.com. 86400 A 10.0.0.11
    update add hpccache.contoso.com. 86400 A 10.0.0.12
    update add client-IP-10.contoso.com. 86400 A 10.0.0.10
    update add client-IP-11.contoso.com. 86400 A 10.0.0.11
    update add client-IP-12.contoso.com. 86400 A 10.0.0.12
    update add 10.0.0.10.in-addr.arpa. 86400 PTR client-IP-10.contoso.com
    update add 11.0.0.10.in-addr.arpa. 86400 PTR client-IP-11.contoso.com
    update add 12.0.0.10.in-addr.arpa. 86400 PTR client-IP-12.contoso.com
    

    這些命令會為每個 HPC Cache 的掛接位址建立 A 記錄,並同時設定指標記錄,以適當地支援反向 DNS 檢查。

    下圖顯示此設定的基本結構。

    Diagram showing client mount point DNS configuration.

設定 RRDNS 系統之後,請告知用戶端電腦使用其來解析其掛接命令中的 HPC Cache 位址。

下一步