本章说明了为完成共同任务,都与建立一个集群。
本章包含以下各节:
设置群集概述
指定群集名称
指定群集成员的身份
配置组播通信
指定一个集群成员的单播地址
使用众所周知的地址
启用单服务器模式
配置死亡检测
指定群集日常生活
coherence提供了一个默认的方格簇配置用于演示目的。它允许集群来迅速创建,往往需要很少或根本没有配置变化。然而,除了示范,不应使用默认的设置。相反,独特的集群应设立基于网络环境中运行,并根据使用它们的应用程序的要求。可配置为单服务器模式运行的集群,单元测试和琐碎的发展。
至少,设置群集包括定义集群的名称和集群的组播地址。如果组播不良或无法使用的环境中,然后设置所熟知的地址(WKA)功能是必需的。其余本章中介绍的任务时,设立一个集群通常用于完成默认设置时,必须改变。
集群内的业务覆盖的文件(tangosol-coherence-override.xml)。每个群集成员使用一个的覆盖文件来指定覆盖默认配置的作战部署描述符中定义的唯一值。使用一个业务覆盖文件的详细信息,请参阅“指定运行配置文件”。此外,请参阅附录A“运行配置元素”,在本章中讨论的所有作战要素的描述和使用信息。
群集名称是一个用户定义的名称,唯一标识一个集群从其他网络上运行的集群。群集成员必须指定相同的群集名称加入集群。如果指定了错误的名称时,试图加入现有群集群集成员不启动。一个独特的集群的名字往往是用一个独特的组播端口在同一网络上创建不同的集群。
注意事项:
群集成员使用系统生成的群集名称,如果未明确指定一个名字。使用系统生成的名称(盒组播默认值)增加的机会在网络上有重叠的群集配置。这可能会导致群集成员意外加入一个意想不到的集群。
要指定一个集群名称,编辑业务覆盖文件和添加
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
tangosol.coherence.cluster系统属性用于指定的群集名称,而不是使用的业务覆盖文件。例如:
-Dtangosol.coherence.cluster=name
一组标识符是用来给一个群集成员身份在群集内。区分群集成员的身份信息被用来传达集群内成员的角色。有些标识符由群集服务也可用于执行群集任务时。最后,身份信息是有价值的,当显示的管理信息(例如,JMX),并便于解释日志条目。下面的列表描述了每个标识符:
网站名称 - 承载群集成员的地理站点的名称。如果没有指定名称,使用服务器的域名。对于广域网集群,这个值标识部件位于数据中心,可作为智能路由,负载平衡和灾难恢复计划(即明确的支持,在不同的地理网站数据)的基础。
机架名称 - 名称承载群集成员的地理站点内的位置。这通常是一个保持架,机架或BladeFrame提供标识符,可以用作智能路由,负载平衡和灾难恢复计划(即,在单独的bladeframes明确的支持数据)的基础。
机器名称 - 主机的群集成员服务器的名称。如果没有指定名称,使用服务器的主机名。该名称用于创建一个ID为基础。群集服务使用的ID,以确保数据备份在不同的计算机上,以防止单点故障。
程序名称 - JVM进程的名称承载群集成员。如果没有指定名称,使用JVM进程号。进程名称,使得它可以很容易区分在同一台计算机上运行多个JVM。
会员名称 - 集群成员的独特名称。这个名字可以很容易区分的集群成员,尤其是当多个成员在同一台计算机上运行,或在同一个JVM。始终指定成员名称(作为一种最佳做法),即使它不是必需这样做。
角色名称 - 集群成员的集群中的作用。角色名称,允许应用程序群集成员组织成专门的角色,如高速缓存服务器和缓存客户。如果没有指定角色名使用默认角色名(CoherenceServer for cache servers and application_class_name for cache clientse)。
要指定成员身份信息,编辑业务覆盖文件,并添加成员身份证明内
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
以下系统属性用于指定一个集群成员的身份信息,而不是使用的业务覆盖文件。
-Dtangosol.coherence.site=pa-1
-Dtangosol.coherence.rack=100A
-Dtangosol.coherence.machine=prod001
-Dtangosol.coherence.process=JVM1
-Dtangosol.coherence.member=C1
-Dtangosol.coherence.role=Server
使用多播通信的集群成员发现其他群集成员的消息时必须传达给多个成员的集群。该的集群协议使得非常明智地使用组播和避免的东西,如多播风暴。默认情况下,数据传输组播,如果它的目的是为超过25%的群集成员。绝大多数的流量使用单播,即使启动了组播传输。对于典型的基于分区的高速缓存集群,大多数传输点至点,并且仅集群成员和分区所有权广播到整个集群。
组播通信业务覆盖文件内
在本节包括以下主题:
指定群集的组播地址
禁用组播通信
指定组播时间到现场
指定组播注册超时
更改组播门槛
多播地址(IP地址和端口),可以指定一个集群成员。群集成员必须使用相同的组播地址和端口加入集群。在同一网络上的不同的集群,必须使用不同的组播地址。
群集成员使用默认的组播地址,如果没有明确指定一个地址he default value depends on the release version and follows the convention of {build}.{major version}.{minor version}.{patch} for the address and {major version}.{minor version}.{patch} for the port.
注意事项:
使用默认的组播地址和端口(和系统生成的群集名称),增加的机会在网络上有重叠的群集配置。这可能会导致群集成员意外加入一个意想不到的集群。始终使用唯一的端口值来创建一个独特的集群。
要指定群集多播地址,编辑业务覆盖文件,并添加一个<地址>
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
tangosol.coherence.clusteraddress和tangosol.coherence.clusterport的系统属性用于指定群集多播地址,而不是使用的业务覆盖文件。例如:
-Dtangosol.coherence.clusteraddress=224.3.6.0
-Dtangosol.coherence.clusterport=3059
7.4.1.1更改多播套接字接口
单播侦听器IP地址,多播套接字绑定到相同的网络接口(NIC)。组播可以配置一个不同的NIC,但罕见的例外,它是强烈反对,因为它可以导致局部故障集群。
两个NIC,用于组播流量的接口(因此网络)是用于单播(UDP / IP)和TCP-环(TCP / IP)通信的接口(因此网络)的不同。在一个接口(或网络)的通信继续成功,即使其他接口已经失败,这种情况下延长了故障检测和故障转移。由于聚类协议处理成员(接口)故障,最好是所有的通信失败,以便快速检测出的故障,并从集群中删除。
要改变的默认组播网络接口,编辑业务覆盖文件,并添加一个
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
组播流量可能是不可取的,或可能在某些网络环境不允许。在这种情况下,使用所熟知的地址使用组播功能,以防止连贯性。禁用多播发现,还可以禁用所有的数据传输组播,单播(点至点)来代替。连贯性的设计尽可能使用点至点的通讯,所以大多数应用程序配置文件中没有看到一个较大的性能影响。请参阅“使用众所周知的地址”。
注意事项:
禁用组播并在网络上提出了更高的应变。然而,这只能成为一个问题大于100个成员的大型集群。
时间值(TTL)设置指定,组播UDP / IP网络上的数据包可以走多远。 TTL表示包存活多少啤酒花每个网络接口,路由器和管理型交换机被认为是一个跳。
的TTL值应该被设置为最低的整数值,它的工作原理。设定值过高,可以使用其他LAN段和不必要的带宽,甚至可以导致操作系统或网络设备禁用组播流量。通常情况下,一个简单的交换骨干工程的TTL值。可能需要2个或更多的值了智能交换技术先进的骨干。用于单台服务器集群,用于开发和测试值为0。请参阅“启用单服务器模式”单一服务器集群的更多信息。
指定TTL,编辑操作的的override文件和添加的
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
tangosol.coherence.ttl系统属性是用来指定TTL值,而不是使用的业务覆盖文件。例如:
-Dtangosol.coherence.ttl = 3
组播连接超时定义一个群集成员等待多少时间加入群集。如果达到超时未检测到现有的集群,那么集群成员开始自己的集群,并选择自己的高级群集成员。开发和测试过程中,可以指定一个简短的超时。超时30秒一般是足够的生产环境。
注意事项:
集群的第一个成员加入超时时间等待之前假设的作用的高级成员。如果群集启动超时小于连接超时,那么集群的第一个成员在集群启动失败。群集成员超时被指定,使用分组的出版商超时(
要指定连接超时,编辑业务覆盖文件和添加
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
集群成员集群包发送时使用组播和单播通信。组播的阈值是用于确定是否要使用的数据包传送的组播或单播。设置的门槛较高或较低,可以迫使一个集群有利于比其他的沟通方式。阈值设置,如果不使用多播通信被禁用。
多播的阈值是一个百分比值,并在1%到100%的范围内。在集群中的n个成员,一个群集成员的,用于发送一个数据包到目的节点的一组(不计本身)的尺寸d(取值范围为0至n-1)使用多播发送一个数据包,仅当以下的保持真:
的数据包被发送,在网络上的多个节点(d > 1).
的节点的数量大于指定的阈值 (d > (n-1) * (threshold/100)).
例如,一个群集成员中的25个成员的集群与组播阈值的25%,使用多播包的目的地为6个或更多成员(24 * 0.25 = 6)。
将该值设置为1,允许群集使用组播基本上所有的多点通信。将此值设置为100部队集群使用单播的所有交通多点,除了明确的广播流量(例如,群集心跳线和发现),因为从来没有超过100%的门槛。随着25(默认)设置一个群集成员发送的数据包,如果它注定不到四分之一的所有节点使用单播,就注定了它的四分之一或以上的所有节点发送数据包使用多播。
指定组播阈值,编辑业务覆盖文件和添加
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
集群成员的直接成员成员(点至点)通信,这使得大多数集群通信使用单播。使用,但需要内
单播监听器,配置中,选择单播地址如下:
address - 试图获得群集成员的IP地址绑定到使用java.net.InetAddress.getLocalHost()调用。明确指定地址的计算机上有多个IP或NIC,如果需要的话。此外,本地设置可能无法正常工作系统定义localhost作为回送地址,在这种情况下,计算机的名称或特定的IP地址,必须指定。多播套接字绑定到相同的接口所定义的这个地址。请参阅“更改多播套接字接口”。
ports - 群集成员使用两个单播UDP端口。默认行为是尝试使用端口8088的第一个端口(端口)。如果8088端口不可用,自动调整端口是用来选择下一个可用端口。第二个端口(端口2)自动打开,默认端口1后的下一个可用端口(端口1 + 1如果可用)。自动调整端口可以被禁用。在这种情况下,端口1必须使用总是和第二端口端口1 + 1。
两个UDP端口被使用,因为:
它减少了争之间的入站和出站流量,并避免,做重型的传输和接收在同一端口上
它允许成员沟通的一致性基础上的操作系统的最大传输单元(MTU)在最佳的数 据包大小。一个UDP端口用于大包,另一个端口是数据包或根据该网络的MTU 尺寸。分离允许单独的数据包缓冲区大小。
它允许没有人为增加的socket缓冲区的大小要运行大型集群(500名成员)
要指定一个集群成员的单播地址,编辑业务覆盖文件,并添加
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
true
tangosol.coherence.localhost, tangosol.coherence.localport, and tangosol.coherence.localport.adjust 系统属性用于指定的单播地址,而不是使用的业务覆盖文件。例如:
-Dtangosol.coherence.localhost=192.168.0.1
-Dtangosol.coherence.localport=8090
-Dtangosol.coherence.localport.adjust=true
所熟知的地址(WKA)功能是一种机制,允许集群成员发现并加入一个集群,而不是使用单播组播。 WKA时最经常使用的多播网络的环境中是不可取的或不可或环境时,没有正确配置支持组播。所有群集多播通信被禁用,如果启用了WKA。
WKA启用指定群集成员的一小部分(简称WKA成员)能够启动群集。 WKA成员的最优数量的变化的基础上,簇的大小。一般来说,WKA成员应为约10%的群集。一个或两个WKA每个开关的建议。
WKA成员预计将保持可用在一生的集群,但并不需要在任何时间点上同时激活。只有一个的WKA成员必须是运行集群成员发现并加入集群。此外,在一个群集成员加入集群,集群所有成员,然后单独发送消息给每个群集成员进行广播接收的地址。这使得一个集群运行,即使所有的在WKA成员都停止。然而,新的群集成员无法加入集群,除非他们自己是WKA会员或开始直到WKA会员。在这种情况下,最高级的群集成员的轮询的WKA成员列表,并允许的WKA成员重新加入现有群集。
有两种方法可以指定WKA成员。第一种方法明确定义的地址的列表。第二种方法是使用一个地址提供商实现,获得WKA地址列表。这两种方法都配置在业务覆盖文件内
在本节包括以下主题:
指定WKA会员地址
指定WKA地址提供商
WKA成员明确指定内
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
192.168.0.101
注意事项:
当设置WKA会员,端口值必须符合被指定为成员的单播监听端口的端口值。设置单播端口的更多信息,请参阅“指定群集成员的单播地址”。
使用WKA系统属性
一个单一的的WKA成员可以使用tangosol.coherence.wka和tangosol.coherence.wka.port系统属性被指定的地址,而不是指定一个业务覆盖文件。系统属性的目的是用于演示和测试方案,以迅速指定一个单一的WKA成员。例如:
Dtangosol.coherence.wka = 192.168.0.100 Dtangosol.coherence.wka.port的= 8088
要创建更多的系统属性来指定多个的WKA成员地址,业务覆盖文件必须被用来定义多个的的WKA成员地址和系统属性的属性必须被定义为每个的WKA成员地址元素。属性必须包括系统属性名称被用来覆盖的元素。下面的例子中定义了两个地址,包括系统属性:
注意事项:
在测试过程中或在控制生产环境中定义额外的系统性能,可用于指定WKA成员名单。然而,最好的做法是只使用一个业务覆盖的文件指定WKA成员,在生产环境中。这确保在每个集群成员相同的的WKA成员名单存在。
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
对于上面的例子中,的WKA部件地址被指定使用的系统属性,如下所示:
-Dtangosol.coherence.wka=192.168.0.102 -Dtangosol.coherence.wka.port=8090 -Dtangosol.coherence.wka2=192.168.0.103 -Dtangosol.coherence.wka2.port=8094
定义系统属性的更多信息,请参阅“创建自定义系统属性”。
WKA地址提供商提供了一个编程的方式来定义WKA成员。 WKA地址提供商必须实现的com.tangosol.net.AddressProvider接口。实现可能是一个静态列表一样简单或复杂的使用动态发现协议。地址提供商必须返回一个空结尾的地址,表示已退回了所有可用的地址。地址提供商实现集群成员启动时调用。
注意事项:
实现必须格外小心,因为任何延迟退回或者未处理的异常导致发现延迟,并可能导致完全关闭上的群集服务会员。涉及更昂贵的操作(例如,网络获取)的实现可能选择这样做异步延长com.tangosol.net.RefreshableAddressProvider类。
要使用的WKA地址提供商的实施,加一个
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
作为替代方案,支持的
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
任何初始化参数可以指定使用
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
单服务器模式是一种集群被限制在一台计算机上运行,并且不访问网络。单服务器模式提供了一种快速的方式来启动和停止集群,用于开发和单元测试。
为了使单服务器模式,编辑业务覆盖文件,并添加
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
系统属性tangosol.coherence.ttl和tangosol.coherence.localhost的用于启用单服务器模式,而不是使用业务覆盖文件。例如:
-Dtangosol.coherence.ttl=0 -Dtangosol.coherence.localhost=127.0.0.1
在一些UNIX操作系统,包括Linux和Mac OS X的一些版本,设置TTL到零上可能没有足够的隔离集群到单台计算机。在这种情况下,唯一的集群名称,如电子邮件地址,还必须配置。如果它使用了不同的群集名称,群集成员无法加入现有群集。请参阅“指定名称”群集配置群集名称的详细信息。
死亡检测是一个群集一个群集成员失败时,能够快速检测机制。从集群中删除失败的集群成员和所有其他群集成员被通知离开的成员。死亡检测,集群可以区分实际的的成员失败和反应迟钝成员,如遇时,JVM进行垃圾收集。
死亡检测所有集群成员之间建立一个TCP连接环。 TCP通信发送相同的端口,用于集群UDP通信。每个群集成员的问题单播的心跳,和最高级的群集成员的问题的群集心跳,这是广播消息。每个群集成员使用TCP连接,检测两个过程的死亡(组件TcpRing)和另一个节点的心跳间隔内的硬件的死亡(IpMonitor组件)。在默认情况下是启用的死亡检测和被配置内
在本节包括以下主题:
更改TCP戒指戒
更改心跳间隔
禁用死亡检测
设置是用来更改默认的TCP环监听行为。这包括改变之前的尝试和时间量确定主机群集成员的计算机上已成为不可达。这些默认3和15秒,分别也可以设置TCP / IP服务器插座backlog队列,默认值由操作系统使用。
要更改TCP环设置,编辑业务覆盖文件,并添加以下TCP环元素:
注意事项:
值的
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd"> 25s
tangosol.coherence.ipmonitor.pingtimeout系统属性用于指定超时,而不是使用业务覆盖文件。例如:
Dtangosol.coherence.ipmonitor.pingtimeout = 20S
死亡检测心跳间隔可以改变的。较高的时间间隔,可以减轻网络流量最小,但也可能延长检测失败的成员。默认的心跳值是1秒。
注意事项:
技术上心跳设置控制多久评估是否需要输出心跳。实际的心跳间隔可能会或可能不会在指定的时间间隔取决于评估过程等离子体发射。
要改变的死亡检测心跳间隔,编辑业务覆盖文件和添加
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
在默认情况下是启用的死亡检测,必须明确禁用。禁用死刑检测缓解网络流量只有很少的,并延长检测失败的成员。如果禁用,集群成员使用的数据包发行的重发超时时间间隔,以确定另一名成员已停止响应的UDP数据包。默认情况下,超时间隔设置为5分钟。请参阅“更改包重发超时”的更多细节。
注意事项:
使用包出版商的重发超时检测到一个失败的群集成员一般不推荐使用,因为它是错误上当受骗,由于高的垃圾收集间隔时间可以产生误报。
要禁用死亡检测,编辑业务覆盖文件,并添加一个
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
群集中的优先级机制允许一个集群成员不同的线程内运行的成员被分配到的优先级值。
在本节包括以下主题:
指定群集会员优先级
指定线程的优先级
群集成员的优先级作为成员之间确定领带断路器的基础。如果情况发生时,其中两个成员之一的是,从集群中喷出,并在罕见的情况下,这是不可能的,客观地确定其中的两个是错了,应被弹出,则低优先级的部件喷射。
要指定一个集群成员的优先级,编辑业务覆盖文件,并添加
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">
tangosol.coherence.priority系统属性也可以用于指定的群集成员的优先级,而不是使用业务覆盖文件。例如:
-Dtangosol.coherence.priority = 1
多个群集组件支持线程的优先级。优先级用于确定Java线程执行的重要性的基础。这些组件包括:组播侦听器,单播监听的TCP环监听器,包音箱包出版商,传入的消息处理程序。默认的优先级设置,使数据包发布者的最高优先级,其次是传入消息处理程序,然后由剩余组分。
线 程的优先级内指定每个组件的配置元素(
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/ coherence-operational-config coherence-operational-config.xsd">