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 的設定有兩個主要步驟:
修改 DNS 伺服器的
named.conf
檔案,將查詢的循環順序設定為 HPC Cache。 此選項會使伺服器循環處理所有可用的 IP 值。 加入陳述式,如下所示:options { rrset-order { class IN A name "hpccache.contoso.com" order cyclic; }; };
如下列範例所示,設定每個可用 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 檢查。
下圖顯示此設定的基本結構。
設定 RRDNS 系統之後,請告知用戶端電腦使用其來解析其掛接命令中的 HPC Cache 位址。
下一步
- 如需對用戶端負載進行平衡的說明,請連絡支援人員。
- 若要將資料移至快取的儲存體目標,請閱讀填入新的 Azure Blob 儲存體。