有没有人有在Amazon的Tigase上运行群集的EC2 XMPP服务器的经验,主要是我想了解任何可能使我绊倒的不明显的事情。 (例如,显然在EC2上运行Ejabberd可能会因Mnesia而引起问题。)
或者,如果您对在Ubuntu上安装和运行Tigase有任何一般性建议。
附加信息:
我正在开发的系统使用XMPP只是为了在移动应用程序和服务器之间(近乎实时地)通信。
用户数量最初将很小,但希望会增长。这就是为什么系统需要可伸缩的原因。大概只有几千个用户,您将不需要cc1.4xlarge EC2实例吗? (否则,这将非常昂贵!)
我计划将Amazon RDS中托管的MySQL数据库用于XMPP服务器数据库。
我还计划使用SleekXMPP创建一个用Python编写的外部XMPP组件。外部组件将完成服务器的所有“工作”,因为我正在开发的应用程序与即时消息传递完全不同。对于这一部分,我还没有弄清楚如何将用Python编写的外部XMPP组件连接到Tigase服务器。 documentation似乎建议组件是专门为Tigase编写的,而不是为通用XMPP服务器编写的,使用XEP-0114: Jabber Component Protocol,正如我所期望的那样。
有了这些额外的信息,如果您能想到其他我应该知道的信息,我将很高兴知道。
谢谢 :)
最佳答案
我有很多经验。我认为有很多非显而易见的问题。像Tigase这样运行应用程序的唯一可靠实例是cc1.4xlarge。其他人则导致CPU可用性出现问题,这是否很幸运,是否足以让您在不忙于其他人工作的服务器上运行服务。
另外,您需要一个具有尽可能高的I/O的实例,以确保它可以应付网络流量。高I /O特别适用于数据库实例。
不知道这是否显而易见,但是EC2上的主机名存在此问题,每次启动实例时,主机名都会更改,而IP地址也会更改。 Tigase群集对主机名非常敏感。有一种方法可以强制/更改实例的主机名,因此这可能是解决问题的一种方法。
当然,我所谈论的是一个群集,该群集具有数百万在线用户和每秒100k XMPP数据包或更高的高流量。通常,对于大型安装,拥有专用服务器会更便宜,更高效。
通常,Tigase在Amazon EC2上可以很好地运行,但是您确实需要最新的SVN代码,因为它添加了很多优化功能,尤其是在云上进行测试之后。如果您提供有关服务的更多详细信息,我可能会提供更多建议。
更多评论:
如果涉及成本,则专用服务器对于持续运行的服务而言总是便宜的选择。除非您计划每小时打开/关闭服务器,否则我建议您使用一些专用服务。成本更低,性能更可预测。
但是,如果您确实想要/需要使用Amazon EC2,请给我一些具体数字,以下是实例列表以及集群能够可靠处理的在线用户数量:
其他一些评论:
就是说,我认为安装多达1万名在线用户应该没问题。但是,诸如名册大小之类的其他因素也非常重要,因为它们会影响流量和负载。同样,如果您还有其他产生大量流量的元素,这将给您的系统带来负担。
无论如何,如果不进行一些测试,就不可能说出系统的实际运行情况或它是否可以处理负载。
还有关于组件的最后一个问题:
当然,Tigase确实支持XEP-0114和XEP-0225来连接外部组件。因此,用不同语言编写的组件应该不会有问题。另一方面,我建议使用Tigase的API编写组件。它们既可以部署为内部Tigase组件,也可以部署为外部组件,这对开发人员来说是透明的,您不必在开发时就担心这一点。这是API和框架的一部分。
此外,您可以使用Tigase框架中的所有产品,脚本功能,监视,统计信息,并且开发更加容易,因为您可以轻松地将代码部署为测试的内部组件。
您真的不必担心任何XMPP特定的东西,只需填充processPacket(...)方法的主体即可。
在Tigase网站上应该有足够的在线文档供所有这些使用。
另外,我建议阅读有关Python对多线程的支持及其在非常高的负载下的行为。它曾经不是那么好。
关于amazon-ec2 - 在Amazon EC2上扩展Tigase XMPP服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8670234/