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