Tigase负载均衡策略

作者:chszs

Tigase从5.2.0版开始,引入了负载均衡功能,可以把终端访问用户重定向到最适合的集群节点上。此负载均衡功能依赖于see-other-host的XMPP流错误消息(stream error message)。此机制背后的基本原则是如果用户当前正尝试连接的节点与返回消息的节点不是集群中 的同一个节点,那么用户将被重定向。此原则需要获得用户的JID实现重定向。

一、可用的实现

此Tigase的实现跟其他实现一样,是可扩展的,支持不同的、可插拨的重定向策略,实现了SeeOtherHostIfc接口。

当前有三种可用的策略:

1)SeeOtherHost策略

此策略是最基本的实现,它会返回init.properties配置文件中的单个主机名或当前的主机名。

2)SeeOtherHostHashed策略

这是Tigase默认使用的策略,它对用户的JID值的进行哈希计算,根据哈希值来把终端连接重定向到SeeOtherHostIfc的集群环境中的节点。所有有效的节点是根据默认的集群组成和所有连接到集群并工作的节点共同决定,也可以把所有的节点配置到init.properties中。

3)SeeOtherHostDB策略

此策略是SeeOtherHost策略的扩展实现,它根据Tigase数据库的user_id和node_id配对的形式来决定终端用户应该被重定向到哪一个节点。

二、配置选项

下面是实际的负载均衡重定向最基本的相关配置:

–cm-see-other-host=

它可能的值包括:

tigase.server.xmppclient.SeeOtherHost
tigase.server.xmppclient.SeeOtherHostHashed
tigase.server.xmppclient.SeeOtherHostDB
none - disables redirection

说明:前三行为三种重定向策略,最后一种是不使用重定向策略。

其余的所有选项都是以连接管理器per-connection-manager为基础进行配置的,因此这些选项都需要加上相应的连接管理器ID作为前缀,比如c2s、bosh、ws的配置,下面以c2s配置为例:

c2s/cm-see-other-host/default-host=host1;host2;host3
用分号来间隔重定向的主机节点名

c2s/cm-see-other-host/active=OPEN;LOGIN
用分号来间隔终端用户可以被重定向的阶段

当前可使用的值包括:
OPEN 它表示打开XMPP stream期间可以进行重定向
LOGIN 它表示在授权认证用户会话期间可以进行重定向

Tigase默认的重定向阶段是OPEN阶段。

SeeOtherHostDB策略附加的选项包括:

c2s/cm-see-other-host/db-url
JDBC连接的URI,用于查询重定向信息;如果没有配置,那么会使用–user-db-uri的值。

c2s/cm-see-other-host/get-host-query
SQL查询语句,它应该能返回重定向的主机名。

c2s/cm-see-other-host/get-all-data-query
SQL辅助器查询语句,它能够返回来自数据库所有的重定向数据。

c2s/cm-see-other-host/get-all-query-timeout
设置执行查询的超时时间。