2013-12-23 50 views
0

我们有2台Windows Server 2008 R2。两台PC都安装有Web应用程序的glassfish。第一台PC(PDC)的IP为192.168.1.7,第二台PC(BDC)的IP为192.168.1.8,用户使用ip 192.168.1.7登录到应用程序。如何在Windows服务器上进行故障转移

我们想要做的是如果pc用户不能使用ip 192.168.1.7访问应用程序,那么使用192.168.1.8而不需要用户做任何事情。

我们发现你可以用glassfish做,但它使用apache作为中介。如果具有apache的电脑出现故障,则无法进行故障转移或使用该应用程序。我们也看到,我们可以使用EasyDNS来使用域名,但网络没有互联网接入,所以我们也放弃了它。

有没有办法做到故障转移而不依赖于互联网或中央电脑的程序?

+0

请参阅[本页](http://technet.microsoft.com/en-us/library/cc731844(v = ws.10).aspx)和[本页](http://technet.microsoft.com/)。 COM/EN-US /库/ dd197465(v = ws.10)的.aspx)。 – Brian

回答

1

需要在一个共享IP地址上接收请求并将它们分布在多个节点(负载平衡/高可用性故障切换)的方式。

可选地,可以在LB/HA和后端服务之间分层中间功能,例如卸载静态内容,某些类型的请求过滤等。

对于刚刚在LB/HA一个通常使用两种

  • 软件附加在已经存在的平台,你的情况的Windows。 Windows具有内置的NLB功能,可分发负载并为多个相同的后端服务器提供故障转移。 NLB直接安装在每个后端服务器上,或者直接在前端节点上通过分离的Apache,IIS或其他前端服务来安装NLB。
  • 专用的冗余软件负载平衡器,例如面向应用程序服务器的HAproxy
  • 面向应用程序服务器的专用冗余硬件负载平衡器。

在你的问题中你不清楚你打算用Apache超越冗余解决什么问题,它通常无法解决,因为它本身往往是单点故障。 IIS有相同的困境,其中ARR add-on经常用于反向代理到后端服务器,但本身就是单点故障。就像Windows有NLB为几个相同配置的服务器(如Java服务器,带有ARR节点的IIS,Apache节点)提供冗余链接一样,Linux上的Apache也具有诸如described here等机制。

但是,这些功能并不像使用专用和专用的负载平衡器前端后端服务器和可选的IIS/Apache /其他前端Web节点那样功能丰富和高效。此外,他们倾向于创建自己的问题域,限制功能集并创建其他依赖性复合体。总之,他们倾向于过度消耗维护/开发时间,除非设置非常简单。

共享相同磁盘的群集服务(如注释中所建议的)通常不会用于Web冗余方案,因为它们可以更好地解决其他设计问题(如高可用性文件或打印服务)。在这个答案中讨论的使用网络冗余技术的一个原因是一次维护回收节点的容易程度,另一个是可扩展性因素,等等。唯一的缺点与群集解决方案相比,它们不会跟踪用户状态。然而,由于集群解决方案通常专用于特定的实现以保持用户会话感知,而Web传输解决方案具有广泛的会话感知分布,所以大部分时间这种争论是有争议的。

使用外围服务(如DNS)进行故障转移往往被认为具有充分的怀疑,因为除了极少数例外(例如mx指针),没有考虑到这种情况。专用变体可能仍然受到内置在DNS子系统中的广泛缓存的影响,这些子系统通常在使用中,并且在这种设置中形成薄弱环节。

DNS作为主要冗余机制仍然可以被认为,如果:

  • (非常)长的故障转移延迟是可以接受的,或者如果:
  • 一个处于在从客户端整个分布式DNS基础结构完全控制到服务器(可通过短TTL保证切换延迟),或者如果:
  • 可以通过编程方式确保客户端/服务器代码可以利用DNS进行快速故障切换。

提供LB/HA逻辑服务器端的替代方法是将其构建到客户端。