tigase8集群高可用

tigase8集群化搭建按官方文档来看,是很容易整的,但实际上,坑不少。摸索了好几天终于把tigase8集群化搞出来了。

主要参考官方文档来安装:

集群配置

Tigase Administration Guide

集群搭建

我的环境如下,在/etc/hosts文件中将地址和域名配置上去

IP地址主机名和域名
192.168.43.23ubuntu
192.168.43.24ubuntu24

先按正常方法把两个节点给安装好,安装方法可参考此专栏内的内容。然后两个节点分别创建好自己的管理员用户,此时将配置文件改成如下后再重启。

方案一,不同节点使用不同的用户数据源

23节点

admins = [
    'admin@ubuntu'
]
'config-type' = 'default'
debug = [ 'server', 'cluster' ]
'default-virtual-host' = 'ubuntu'

dataSource () {
    default () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb2'
    }
    
    'ubuntu' () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb2'
    }
    
    'ubuntu24' () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb3'
    }
}
userRepository {
    ubuntu () {}
    ubuntu24 () {}
    
}
authRepository {
  ubuntu () {
    'data-source' = 'ubuntu'
  }
  ubuntu24 () {
    'data-source' = 'ubuntu24'
  }
  
}

http () {
    setup () {
        'admin-password' = '666'
        'admin-user' = 'admin@ubuntu'
    }
}
pubsub () {
    trusted = [ 'http@{clusterNode}' ]
}

'cluster-mode' = true
'cluster-nodes' = [ 'ubuntu' , 'ubuntu24' ]
'cl-comp' {
    'connect-all' = true
}

24节点

admins = [
    'admin24@ubuntu24'
]
'config-type' = 'default'
debug = [ 'server', 'cluster' ]
'default-virtual-host' = 'ubuntu24'

dataSource () {
    default () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb2'
    }
    
    'ubuntu' () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb2'
    }
    
    'ubuntu24' () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb3'
    }
}
userRepository {
    ubuntu () {}
    ubuntu24 () {}
    
}
authRepository {
  ubuntu () {
    'data-source' = 'ubuntu'
  }
  ubuntu24 () {
    'data-source' = 'ubuntu24'
  }
  
}

http () {
    setup () {
        'admin-password' = '666'
        'admin-user' = 'admin24@ubuntu24'
    }
}
pubsub () {
    trusted = [ 'http@{clusterNode}' ]
}

'cluster-mode' = true
'cluster-nodes' = [ 'ubuntu' , 'ubuntu24' ]
'cl-comp' {
    'connect-all' = true
}

按这两个配置文件,集群就已经搭建成功了。成功的关键是,两个节点都要使用相同的默认数据库tigasedb2,这样可以确保全部节点都注册到相同数据库的tig_cluster_nodes表。这样两个节点才可以相互感知。

此时,使用psi客户端来测试发现无论是单聊还是群聊都可以正常了。注意,使用spark不行,可能是spark客户端对集群化不支持。

测试如下,使用psi,分别登录admin和admin24,设置host的时候,admin设置23节点,admin24设置为24节点,确保两个用户登录到不同的服务器。然后测试单聊和群聊,发现消息正常在集群中流转。

单聊测试图片

 上面单聊测试没问题了,接下来测试一下群聊。先在23上创建一个固定群组testroom@muc.ubuntu,从jid可以看出,这个群是ubuntu这个域名上创建的,我们使用psi先先admin加入到群聊。右键选中Groupchat-->Join Groupchat即可。填写内容如下

这样admin就可以顺利的进入testroom了,下一步,演示将admin24加入群聊,但是admin24是另一个服务节点的用户,是否可以顺利加入?

发现是可以正常进入群聊并收发消息的。 

 

发布订阅功能经测试也是正常的。 

方案二,使用相同数据库搭建集群

两个节点配置如下

23

admins = [
    'admin@ubuntu'
]
'config-type' = 'default'
debug = [ 'server', 'cluster' ]
'default-virtual-host' = 'ubuntu'

dataSource () {
    default () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb'
    }
}

http () {
    setup () {
        'admin-password' = '666'
        'admin-user' = 'admin@ubuntu'
    }
}
pubsub () {
    trusted = [ 'http@{clusterNode}' ]
}

'cluster-mode' = true
'cluster-nodes' = [ 'ubuntu' , 'ubuntu24' ]
'cl-comp' {
    'connect-all' = true
}

24

admins = [
    'admin24@ubuntu24'
]
'config-type' = 'default'
debug = [ 'server', 'cluster' ]
'default-virtual-host' = 'ubuntu24'

dataSource () {
    default () {
        uri = 'mongodb://root:666@192.168.43.23:28017/tigasedb'
    }
}

http () {
    setup () {
        'admin-password' = '666'
        'admin-user' = 'admin24@ubuntu24'
    }
}
pubsub () {
    trusted = [ 'http@{clusterNode}' ]
}

'cluster-mode' = true
'cluster-nodes' = [ 'ubuntu' , 'ubuntu24' ]
'cl-comp' {
    'connect-all' = true
}

测试正常,不同域名注册的用户可以随意使用一个节点进行登录,然后消息收发均正常。群聊等均正常,这种安装方法好处是没有多数据库,管理不复杂。暂时没出现说有数据包循环的问题。另外,实测使用ip地址作为domain在集群化的时候会有问题。

高可用配置

高可用只需要配置nginx4层负载即可,使用keepalived做统一虚拟IP入口。nginx.conf配置如下

stream {
    upstream tigaseSocket {
       server 192.168.43.23:5222;
       server 192.168.43.24:5222;
    }
    server {
    listen 5222;
    proxy_pass tigaseSocket;
   }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值