在 AlwaysOn 集群環境下,我可以使用 Listeners 訪問文件流共享文件夾嗎?
擴展 SQL Server 集成服務 ( SSIS ) 控制流的最有效方法之一是使用腳本任務編寫自定義程式碼,以執行您無法使用內置組件執行的任務。但在AlwaysOn的情況下,這並不簡單配置的節點
以下是我目前的環境設置,可以幫助您理解問題。
我的環境
- 我將節點 1 和節點 2 配置為集群
- SQL Server 始終開啟並配置了可用性組
- 在名為 MYSHAREDNAME 的節點 1 和節點 2 上都啟用了 SQL Server 文件流
- 內部負載平衡偵聽器配置並授權為 MYACTIVENODE
問題陳述 集群中的一個節點(節點 1 或節點 2)可以隨時關閉。我們不確定哪一個會成為 PRIMARY。我正在嘗試按如下方式訪問共享文件夾
\NODE1\MYSHAREDNAME - 如果 NODE 1 是主節點,則有效 \NODE2\MYSHAREDNAME - 如果 NODE 2 是主節點,則有效
但是很難在路徑上方進行硬編碼,因為任何節點都可能出現故障。所以我使用了 LISTENER 名稱,以便它可以自動檢測 PRIMARY 節點來完成所需的工作,如下所示
所以我使用了LISTENER名稱,以便它可以自動檢測 PRIMARY 節點來完成所需的工作,如下所示
\\MYLISTENERNAME\MYSHAREDNAME
但我無法訪問它
我該如何解決?啟用埠 1433、5022、59999。
摘自https://msdn.microsoft.com/en-in/library/dn385720.aspx
只要您不向主數據庫添加新的數據庫文件,就支持 AlwaysOn 可用性組。如果數據庫操作需要在主數據庫中創建新文件,請首先在輔助節點中禁用 AlwaysOn 可用性組。然後,對主數據庫進行數據庫操作,並在主節點上備份數據庫。接下來,將數據庫還原到輔助節點,並在輔助節點中啟用 AlwaysOn 可用性組。請注意,在 Windows Azure 功能中使用 SQL Server 數據文件時不支持 AlwaysOn 故障轉移群集實例
但是我不明白上面的語句是什麼意思?
經過長時間的鬥爭和網路跟踪擷取,我有以下數據點
您可以使用本地機器名稱訪問文件流共享文件夾。您可以使用作為集群一部分的本地電腦的偵聽器名稱訪問****文件流共享文件夾。您不能從任何不屬於集群的機器訪問共享文件夾。您可以使用偵聽器名稱訪問 SQL 伺服器,但不能從不屬於集群的任何設備訪問文件資源管理器中的文件夾更新
我們可以從屬於其他雲服務的其他 VM 訪問文件共享
為此,我們需要在埠 445 (SMB 2.0)上建立端點
電源外殼腳本
首先獲取內部監聽器名稱
Get-AzureInternalLoadBalancer -servicename $servicename
然後,在下面的腳本中使用內部偵聽器名稱
$ServiceName = "ABCCS" # the name of the cloud service that contains the availability group nodes $AGNodes = "VM01","VM02" $ILBName = "ListenerLB" //get using Get-AzureInternalLoadBalancer ForEach ($node in $AGNodes) { Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name "ListenerEndpointFSL" -LBSetName "ListenerEndpointLBFSL" -Protocol tcp -LocalPort 445 -PublicPort 445 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName $ILBName -DirectServerReturn $true | Update-AzureVM }
我不相信您提取的報價與您的問題有關。
您的問題可能是您的偵聽器有多個 IP 地址。在預設配置下,監聽器在 DNS 中會有多條 A 記錄,你的客戶端只會記憶體其中一條。每次記憶體過期時,它都會隨機抓取其中一個 IP 地址,有時它會獲取活動 IP,有時它會獲取離線 IP。
這是偵聽器確認的MultiSubnetFailover參數背後的目的。