CentOS6.10 64位Tigase Server集群配置故障排查
根据你描述的环境(CentOS 6.10、JDK 1.8.0_60、两个节点mc2.imrggn.com/192.168.4.109和mc1.imrggn.com/192.168.4.111),结合配置和现象,我整理了几个关键排查方向:
1. 嵌入式数据库Derby不支持集群共享(核心问题)
你的dataSource配置用的是本地Derby数据库:
dataSource () { default () { uri = 'jdbc:derby:tigasedb;create=true' } }
Derby是嵌入式单节点数据库,无法被多个Tigase节点同时访问。Tigase集群要求所有节点连接同一个共享数据库(比如MySQL、PostgreSQL),用于同步集群状态、用户数据、路由信息等。没有共享数据库,节点之间根本无法完成集群握手,自然不会有5277端口的通信。
解决步骤:
- 部署一个共享数据库(如MySQL),创建tigasedb数据库和对应权限的用户
- 修改所有节点的
dataSource配置为共享数据库的JDBC URI,例如:dataSource () { default () { uri = 'jdbc:mysql://192.168.4.x:3306/tigasedb?user=tigase&password=your-password&useUnicode=true&characterEncoding=UTF-8' } } - 确保所有节点都能正常连接这个共享数据库
2. 主机名解析失败
你的cluster-nodes配置用的是主机名:
'cluster-nodes' = [ -'mc2.imrggn.com', -'mc1.imrggn.com']
如果两个节点无法互相解析对方的主机名,Tigase就无法发起集群连接。
检查步骤:
- 在mc2节点执行
ping mc1.imrggn.com,在mc1节点执行ping mc2.imrggn.com,看是否能返回对应IP - 如果ping不通,需要在两个节点的
/etc/hosts文件中添加对方的主机名和IP映射:192.168.4.109 mc2.imrggn.com 192.168.4.111 mc1.imrggn.com
3. 防火墙/SELinux拦截5277端口
CentOS 6.10默认开启iptables防火墙和SELinux,可能会阻止节点间的5277端口通信。
临时测试步骤:
- 关闭iptables:
service iptables stop - 关闭SELinux:
setenforce 0 - 重启Tigase服务后,再用Wireshark抓包测试是否有流量
永久解决:
- 在iptables中开放5277端口:
iptables -A INPUT -p tcp --dport 5277 -s 192.168.4.0/24 -j ACCEPT iptables -A OUTPUT -p tcp --dport 5277 -d 192.168.4.0/24 -j ACCEPT service iptables save - 配置SELinux允许Tigase的网络连接(如果需要保留SELinux):
setsebool -P httpd_can_network_connect on
4. TDSL配置语法错误
看你的配置里有不少带减号-的项,比如:
'cluster-nodes' = [ -'mc2.imrggn.com', -'mc1.imrggn.com']
在Tigase的TDSL语法中,减号-用于移除默认配置项,而不是添加。这里你想指定集群节点列表,应该去掉减号,写成:
'cluster-nodes' = [ 'mc2.imrggn.com', 'mc1.imrggn.com']
同样,dns-resolver和stun配置里的减号也可能导致配置失效,比如:
'dns-resolver' { -'tigase-resolver-class' = -'tigase.util.DNSResolverDefault' -'tigase-primary-address' = -'192.168.4.109' -'tigase-secondary-address' = -'192.168.4.109' }
如果是要强制指定DNS解析地址,应该去掉减号:
'dns-resolver' { 'tigase-resolver-class' = 'tigase.util.DNSResolverDefault' 'tigase-primary-address' = '192.168.4.109' 'tigase-secondary-address' = '192.168.4.109' }
5. 查看Tigase日志找具体错误
最直接的方式是查看Tigase的日志文件(默认在logs/tigase.log),搜索cluster、5277、connect等关键词,会找到节点尝试建立集群连接时的具体错误信息(比如数据库连接失败、主机名解析错误、连接超时等)。
按照上述步骤逐一排查,尤其是共享数据库的问题,这是Tigase集群运行的基础。
内容的提问来源于stack exchange,提问作者shutup1

