You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS6.10 64位Tigase Server集群配置故障排查

排查Tigase Server集群节点间5277端口无通信的问题

根据你描述的环境(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:22:41