2010-10-06 49 views
2

我正在編寫一個應用程序,其唯一目的是確定我們的某個核心應用程序是否在生產中正常運行。這個應用程序是一個WCF應用程序。該應用程序已啓動並在負載平衡器後面的兩個不同框中運行。每個盒子上的站點都配置爲監聽以下DNS名稱的流量:app.company.com。 DNS將app.company.com解析到我們的負載均衡器,負載均衡器然後以循環方式將請求交給兩個盒子中的一個。在確定我們的核心應用程序是否運行起來的情況下,只是在請求負載均衡器時纔會接受,因爲負載平衡器可能會將我們循環到活動服務器,即使其中一臺服務器出現故障並且我們的應用程序需要能夠運行以確定其中一個箱子是否停機。是的,負載平衡器已經在有限程度上檢查了服務器已啓動,但未涵蓋所有方案。在每個命中的基礎上僞造DNS解析

我遇到的問題是我無法直接發送流量到每個框(通過IP或主機名),因爲主機頭(app.company.com)必須位於請求中或者是目標服務器或WCF會拒絕它。如果我使用的是app.company.com而不是主機名或IP地址,那麼我會點擊負載平衡器,如果我修改了機器上的hosts文件,它只能用於一個盒子。

有沒有一種方法可以在.Net或Windows中強制DNS解析來將app.company.com解析爲我選擇的IP地址,並且可以針對每個請求進行微調,而不會影響整個系統的DNS ?否則,我可能會在手邊製作一個請求,以便我可以將正確的主機頭嵌入到實際上不會進入相同DNS名稱目標的請求中。

感謝

回答

0

我找到了一個很好的解決方案來解決這個問題。我最終做的是在同一個Web應用程序中創建第二個服務,然後我更改了每臺計算機上的hosts文件,以包含指向localhost到app.company.com的一行。

127.0.0.1  app.company.com 

然後,我將這個新服務配置爲指向「app.company.com」。

這允許我直接通過主機名或IP地址通過第二個服務命中服務器,第二個服務通過主機名通信到被測服務。

這適用於我們想要的東西。

0

它是每個打的基礎上分配DNS(如你所說,在循環方式),所以你不能超載,從客戶端的負載均衡。您可以配置您的負載平衡器,從一個特定的IP請求沒有得到負載平衡,但這並沒有太大的幫助,如果你需要檢查都通過負載均衡DNS應用..

因此,您需要重新思考如何解決這個問題。

一種策略是具有負載均衡的應用報告,他們是工作,而不是一個單獨的應用程序的檢查。

或者讓每個應用程序定期更新一個時間戳的文件到服務器,這樣您的應用程序可以達到這些框分別由IP地址和檢查是否存在時間戳文件。

+0

那麼負載平衡器就是DNS查找的目標。我正在尋找一種以本地化方式更改目標的方法。我可以做到這一點沒有問題,但沒有動態修改主機文件,我不能爲兩個盒子做。我必須檢查的具體事項要求我按照客戶打的方式來完成服務。只是檢查應用程序的其他部分似乎是不會給我我需要的。例如,在WCF中,如果我有一個配置文件錯誤,儘管應用程序的其他方面可能會完美響應,但在模擬真實請求時可能會出錯 – omatase 2010-10-06 22:33:47