在每次点击的基础上伪造DNS解析

时间:2010-10-06 21:32:35

标签: .net wcf dns

我正在编写一个应用程序,其唯一目的是确定我们的核心应用程序之一是否已投入生产。此应用程序是WCF应用程序。该应用程序在负载均衡器后面的两个不同的盒子上运行。每个盒子上的站点都配置为侦听以下DNS名称的流量:app.company.com。 DNS将app.company.com解析为我们的负载均衡器,然后以循环方式将请求交给两个盒子中的一个。在确定我们的核心应用程序是否已启动方面,仅仅通过请求命中负载均衡器是不可接受的,因为负载均衡器可能会将我们循环到活动服务器,即使其中一个服务器已关闭且我们的应用程序需要能够确定其中一个框是否已关闭。是的,负载均衡器已在有限的范围内检查服务器是否已启动,但并未涵盖所有方案。

我遇到的问题是我无法直接向每个盒子发送流量(通过IP或主机名),因为主机头(app.company.com)必须在请求中,或者目标服务器或WCF将拒绝它。如果我使用app.company.com而不是主机名或IP地址,我将点击负载均衡器,如果我在机器上修改主机文件,它只适用于一个盒子。

有没有办法在.Net或Windows中强制进行DNS解析,以便将app.company.com解析为我选择的IP地址,其方式可以针对每个请求进行微调,而不会影响整个系统的DNS?另外,我可能正在手工制作一个请求,以便我可以在一个请求中嵌入正确的主机头,而不是实际转到相同DNS名称的目标。

由于

2 个答案:

答案 0 :(得分:0)

它的负载均衡器是按每次命中分配DNS(正如你所说的那样,以循环方式),所以你不能从客户端超载它。您可以配置负载均衡器,以便来自特定IP的请求不会实现负载平衡,但如果您需要通过DNS检查两个负载均衡的应用程序,这没有太大帮助。

因此,您需要重新思考如何解决这个问题。

一种策略是让负载均衡的应用报告它们是可操作的,而不是单独的应用程序签入。

或者让每个应用程序定期将时间戳文件更新到服务器上,以便您的应用程序可以通过IP地址单独到达框,并检查是否存在带时间戳的文件。

答案 1 :(得分:0)

我找到了解决这个问题的好方法。我最后做的是在同一个Web应用程序中创建第二个服务,然后我更改了每台机器上的hosts文件,以包含指向localhost到app.company.com的一行。

127.0.0.1     app.company.com

然后我将此新服务配置为指向“app.company.com”。

这允许我通过第二个服务直接通过主机名或IP地址访问服务器,第二个服务通过主机名传递给受测试的服务。

这非常适合我们想要的东西。