Amazon ec2 在Amazon EC2上扩展Tigase XMPP服务器

Amazon ec2 在Amazon EC2上扩展Tigase XMPP服务器,amazon-ec2,xmpp,tigase,Amazon Ec2,Xmpp,Tigase,有没有人有在Amazon上运行集群XMPP服务器的经验,主要是我想知道一些不明显的可能会绊倒我的事情。(例如,在EC2上运行Ejabberd可能会由于记忆障碍而导致问题。) 或者如果你对在Ubuntu上安装和运行Tigase有什么一般性的建议 额外信息: 我正在开发的系统使用XMPP只是在移动应用程序和服务器之间进行通信(近乎实时) 用户数量最初将很小,但有望增长。这就是为什么系统需要具有可伸缩性。大概对于几千个用户来说,您不需要一个cc1.4x1大型EC2实例?(否则这将是非常昂贵的运行!)

有没有人有在Amazon上运行集群XMPP服务器的经验,主要是我想知道一些不明显的可能会绊倒我的事情。(例如,在EC2上运行Ejabberd可能会由于记忆障碍而导致问题。)

或者如果你对在Ubuntu上安装和运行Tigase有什么一般性的建议


额外信息:

我正在开发的系统使用XMPP只是在移动应用程序和服务器之间进行通信(近乎实时)

用户数量最初将很小,但有望增长。这就是为什么系统需要具有可伸缩性。大概对于几千个用户来说,您不需要一个cc1.4x1大型EC2实例?(否则这将是非常昂贵的运行!)

我计划在XMPP服务器数据库中使用托管在中的MySQL数据库

我还计划使用创建一个用Python编写的外部XMPP组件。正是这个外部组件完成了服务器的所有“工作”,因为我正在开发的应用程序与即时消息非常不同。对于这一部分,我还没有解决如何将用Python编写的外部XMPP组件连接到Tigase服务器的问题。这似乎表明,组件是专门为Tigase编写的,而不是像我预期的那样,为通用XMPP服务器编写的

有了这些额外的信息,如果你能想到其他我应该知道的事情,我很乐意知道


谢谢:)

我有很多经验。我认为有很多不明显的问题。像Tigase这样运行应用程序的唯一可靠实例是cc1.4XL。其他的会导致CPU可用性问题,这只是一个抽签,看你是否幸运地在一个不忙于其他人工作的服务器上运行你的服务

您还需要一个具有最高可能I/O的实例,以确保它能够处理网络流量。高I/O特别适用于数据库实例

不确定这是否明显,但EC2上的主机名存在此问题,每次启动实例时,主机名和IP地址都会发生变化。Tigase集群对主机名非常敏感。有一种方法可以强制/更改实例的主机名,因此这可能是解决问题的一种方法

当然,我说的是一个面向数百万在线用户的集群,以及每秒100k或更多的高流量XMPP数据包。一般来说,对于大型安装,使用专用服务器更便宜、更高效

一般来说,Tigase在AmazonEC2上运行得很好,但您确实需要最新的SVN代码,因为它添加了很多优化,特别是在云测试之后。如果你能提供更多关于你的服务的细节,我可能会有更多的建议

更多评论:

若说到成本,一个专用服务器对于持续运行服务来说总是比较便宜的选择。除非您计划每小时打开/关闭服务器,否则我建议您使用一些专用服务。成本更低,性能更可预测

但是,如果您真的想/需要坚持使用Amazon EC2,让我给您一些具体的数字,下面是一个实例列表,以及集群能够可靠地处理多少在线用户:

  • 5*cc1.4XL-1mln 700k在线用户
  • 1*c1.xlarge-118k在线用户
  • 2*c1.xlarge-127k在线用户
  • 2*m2.4xlarge(配有5GB RAM供Tigase使用)-236k在线用户
  • 2*m2.4XL(Tigase配备20GB内存)-315k在线用户
  • 5*m2.4x1大容量(Tigase使用60GB内存)-400k在线用户
  • 5*m2.4x100大容量(Tigase使用60GB内存)-312k在线用户
  • 5*m2.4x1大容量(Tigase使用60GB内存)-327k在线用户
  • 5*m2.4x1大容量(Tigase使用60GB内存)-280k在线用户
还有几点意见:

  • 为什么记忆量如此重要?这是因为除了cc1.4X大型实例外,所有实例的CPU电源都非常不可靠且不一致。您有8个虚拟CPU,但是如果您查看top命令,您经常会看到一个CPU正在工作,而其余的CPU没有工作。CPU功率不足导致Tigase中的内部队列增加。当CPU电源恢复时,Tigase可以处理等待的数据包。Tigase的内存越多,可以排队的数据包就越多,它可以更好地处理CPU不足的问题
  • 为什么有5*m2.4xlarge4次?这是因为我在一天中的不同时间重复了多次测试。正如您所看到的,根据时间和日期,系统可以处理不同的负载。我猜这是因为Tigase实例与其他一些服务共享CPU资源。如果他们很忙,Tigase会因CPU电源不足而受损
  • 也就是说,我认为安装了多达1万名在线用户后,你应该会很好。然而,其他因素,如花名册的大小非常重要,因为它们会影响流量和负载。此外,如果您有其他元素生成大量流量,这将给您的系统带来负载

    在任何情况下,如果没有一些测试,就不可能知道您的系统的实际行为如何,或者它是否能够处理负载

    最后一个关于组件的问题是:

    当然,Tigase支持连接外部组件的XEP-0114和XEP-0225。因此,对于用不同语言编写的组件,这应该不是问题。另一方面,我建议使用Tigase的API来编写组件。它们既可以作为内部Tigase组件部署,也可以作为外部组件部署,这对开发人员来说是透明的,您不必在开发时担心这一点。这是API和框架的一部分。 此外,您还可以使用Tigase框架的所有功能、脚本功能、监控、统计以及更简单的开发,因为您可以轻松地将代码部署为测试的内部组件。 您真的不必担心任何特定于XMPP的东西,只需填充processPa的主体