20.11.4. 服务器端的负载平衡

重要的群集拓扑结构:
  • 对称型群集:在对称型群集里,每个群集节点都直接连接到群集里其它节点。要创建对称型群集,群集里的每个节点都要定义一个群集连接并将属性 max-hops 设置为 1。

    注意

    在对称型群集里,每个节点都知道存在于其它节点上的所有队列及它们拥有哪些消费者。因此,群集可以确定在节点间如何平衡负载及重新分发消息。

20.11.4.1. 配置群集连接

群集连接是在服务器配置文件(standalone.xmldomain.xml)的 cluster-connection 元素里定义的。每个 HornetQ 服务器可以定义零或多个群集连接。
<cluster-connections>
  <cluster-connection name="my-cluster">
    <address>jms</address>
    <connector-ref>netty-connector</connector-ref>
    <check-period>1000</check-period>
    <connection-ttl>5000</connection-ttl>
    <min-large-message-size>50000</min-large-message-size>
    <call-timeout>5000</call-timeout>
    <retry-interval>500</retry-interval>
    <retry-interval-multiplier>1.0</retry-interval-multiplier>
    <max-retry-interval>5000</max-retry-interval>
    <reconnect-attempts>-1</reconnect-attempts>
    <use-duplicate-detection>true</use-duplicate-detection>
    <forward-when-no-consumers>false</forward-when-no-consumers>
    <max-hops>1</max-hops>
    <confirmation-window-size>32000</confirmation-window-size>
    <call-failover-timeout>30000</call-failover-timeout>
    <notification-interval>1000</notification-interval>
    <notification-attempts>2</notification-attempts>
     <discovery-group-ref discovery-group-name="my-discovery-group"/>
   </cluster-connection>
</cluster-connections>

下表定义了可配置属性:

表 20.13. 群集连接的可配置属性

属性 描述 默认值
address 每个群集连接都只适用于发送到以这个值开始的地址的消息。这个地址可以是任何值,您可以有许多具有不同地址值的群集连接同时在这些地址间或不同的群集服务器间平衡消息负载。这个值不使用通配符匹配。
connector-ref 这是一个强制属性,它引用发送到群集里其他节点使其具有正确群集拓扑结构的连接器。
check-period 它指定用来检验群集连接从其他服务器接收 ping 是否失败的时间周期(毫秒)。 30,000 毫秒
connection-ttl 它指定如果群集连接停止从群集里的特定节点接收消息,群集连接必须保持在线的时间。 60,000 毫秒
min-large-message-size 如果消息大小(字节)大于这个值,在通过网络发送到其他群集成员时它将被分成多个片段。 102,400 毫秒
call-timeout 它指定通过群集连接发送的数据包在抛出异常前等待回应的时间(毫秒)。 30,000 毫秒
retry-interval 如果在群集节点间创建群集连接,而目标节点还没有启动或正在重启,那么其他节点的群集连接将重新连接目标节点,直至它恢复。retry-interval 定义了重试之间的时间间隔(毫秒)。 500 毫秒
retry-interval-multiplier 这个值是每次重试后的时间间隔 retry-interval 的增量。 1
max-retry-interval 它指定重试的最长延迟(毫秒) 2,000 毫秒
reconnect-attempts 它定义系统试图连接群集里节点的次数 -1(无限次重试)
use-duplicate-detection 群集连接使用桥来链接节点,您可以配置桥在转发的每条消息里添加一个 Duplicate ID。如果桥的目标节点崩溃后并恢复,消息可能从源节点再次发送。启用了重复检测后,目标节点将过滤和忽略任何重复的消息。 True
forward-when-no-consumers 这个参数指定消息是否将用 Round Robin 算法在群集的其他节点间分布而不管它们是否匹配其他节点上任何消费者。 False
max-hops 它指定消息如何在连接到这个服务器的其他 HornetQ 服务器间进行负载平衡。 -1
confirmation-window-size 用于发送确认信息的窗口的大小(字节) 1048576
call-failover-timeout 在尝试失效切换期间进行调用时使用的超时时间 -1(永不超时)
notification-interval 它指定当附加到群集时群集连接必须广播自己的频率(毫秒) 1,000 毫秒
notification-attempts 它指定当附加到群集时群集连接必须广播自己的最大次数 2
discovery-group-ref 这个参数指定使用哪个发现组来获取当前群集连接将连接的群集里其他节点的列表。
在群集里节点间创建连接来组成群集连接时,HornetQ 使用在服务器配置文件(standalone.xmldomain.xml)里定义的一个群集用户和群集密码。
<cluster-user>HORNETQ.CLUSTER.ADMIN.USER</cluster-user>
<cluster-password>NEW USER</cluster-password>

警告

修改这些凭证的默认值来阻止远程客户使用默认值连接服务器是很重要的。