[转帖]WebLogic多播地址是否可以和应用共用,比如JGroup
引自:http://www.oraclefmw.com/wls92/cluster/features.html
群集中的 WebLogic Server 通信
群集中的 WebLogic Server 实例使用两种基本网络技术互相通信:
•IP 多播,服务器实例使用该技术来广播服务和心跳(表明持续的可用性)的可用性。
•IP 套接口,这是群集服务器实例之间进行端到端通信的管道。
WebLogic Server 使用 IP 多播和套接口通信的方式会影响群集的配置方式。
使用 IP 多播的一对多通信
IP 多播是一种简单的广播技术,使多个应用程序能够“订阅”某个给定的 IP 地址和端口号,并监听消息。多播地址是一个介于 224.0.0.0 到 239.255.255.255 之间的 IP 地址。
注意: WebLogic Server 使用的默认多播值为 239.192.0.0。不应使用 x.0.0.1 范围内的多播地址。
IP 多播向应用程序广播消息,但是不能保证这些消息真正被接收到。如果应用程序的本地多播缓冲区已满,则新的多播消息则无法写入该缓冲区,当消息被“丢弃”时,也不会通知该应用程序。因为此限制,所以 WebLogic Server 实例允许存在偶尔丢失通过 IP 多播广播的消息的可能性。
WebLogic Server 对于群集中服务器实例之间的所有一对多通信均使用 IP 多播。此类通信包括:
■群集范围的 JNDI 更新 - 群集中的每个 WebLogic Server 实例均使用多播来公告本地部署或本地删除的群集对象的可用性。群集中的每个服务器实例都监视这些公告,并更新其本地 JNDI 树以反映群集对象的当前部署。有关详细信息,请参阅群集范围的 JNDI 命名服务。
■群集心跳 - 群集中的每个 WebLogic Server 实例均使用多播来广播通告其可用性的规律的“心跳”信号。群集中的服务器实例通过监视心跳信号来确定某个服务器实例的失效时间。(群集服务器实例也会监视 IP 套接口,以此作为确定服务器实例失败时间的一种更为即时的方法。)
多播和群集配置
因为多播通信控制着与检测故障和维护群集范围的 JNDI 树(如群集范围的 JNDI 命名服务中所述)相关的重要功能,所以确保群集配置和网络拓扑结构不干扰多播通信是极为重要的。以下部分提供了有关在群集中避免多播通信出现问题的指南。
如果群集跨越 WAN 中的多个子网
在很多部署中,群集服务器实例都位于一个子网中,从而确保了多播消息的可靠传输。但是,您可能希望将 WebLogic Server 群集分布在广域网(Wide Area Network,简称 WAN)中的多个子网中来增加冗余性,或者在一个更大的地理区域内分布群集服务器实例。
如果选择将群集分布在 WAN 上(或跨多个子网),则请对网络拓扑结构进行计划和配置,以确保多播消息可以可靠传输到群集中的所有服务器实例。具体来说,您的网络必须满足下列要求:
■完整支持 IP 多播数据包传播。换句话说,必须配置所有路由器和其他隧道技术以便将多播消息传播到群集服务器实例。
■网络滞后足够低,可以确保大多数多播消息均可在 200 到 300 毫秒内到达其最终目标。
■群集的多播生存时间(Time-To-Live,简称 TTL)值足够高,可以确保在多播数据包到达其最终目标之前路由器不会放弃这些数据包。有关设置多播 TTL 参数的说明,请参阅配置多播生存时间 (TTL)。
注意: 除了上述多播要求之外,在 WAN 上分布 WebLogic Server 群集可能还需要一些网络工具。例如,您可能想配置负载平衡硬件来确保客户端请求以最高效的方式指向服务器实例(以避免不必要的网络跃点)。
防火墙可能会中断多播通信
尽管可以使多播流量以隧道方式通过防火墙,但是对于 WebLogic Server 群集不推荐此方法。请将每个 WebLogic Server 群集视为向 Web 应用程序的客户端提供一个或多个独特服务的逻辑单元。不要在不同的安全区域之间拆分此逻辑单元。另外,可能延迟或中断 IP 流量的任何技术都可能会因为心跳丢失而生成错误故
障,从而干扰 WebLogic Server 群集的运行。
不要与其他应用程序共享群集多播地址
尽管多个 WebLogic Server 群集可以共享一个 IP 多播地址和端口,但是其他应用程序不应广播或订阅您的一个或多个群集使用的多播地址和端口。就是说,如果承载群集的一台或多台计算机同时承载着使用多播通信的其他应用程序,则请确保这些应用程序使用的多播地址和端口与该群集不同。
与其他应用程序共享群集多播地址会强制群集服务器实例处理不必要的消息,从而导致不必要的开销。共享多播地址还会使得 IP 多播缓冲区超载,并延迟 WebLogic Server 心跳信号的传输。这样的延迟会导致将 WebLogic Server 实例标记为失效,这仅仅是因为未及时收到其心跳信号。
因为上述原因,所以要分配一个专门的多播地址用于 WebLogic Server 群集,并确保该地址可以支持使用该地址的所有群集的广播流量。
如果发生多播风暴
如果群集中的服务器实例未及时处理传入的消息,则可能会导致网络流量增加,这些流量包括 NAK 消息和心跳重新传输。网络上重复传输多播数据包的现象称为“多播风暴”,它可能会加大网络和相连站的负担,从而可能导致端站��起或失败。增大多播缓冲区的大小可能会提高公告传输和接收的速率,防止发生多播风暴。请参阅配置多播缓冲区大小。