gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:46:34 28 4
gpt4 key购买 nike

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

或者,如果您对在 Ubuntu 上安装和运行 Tigase 有任何一般性建议。

额外信息:

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

最初的用户数量很少,但有望增长。这就是系统需要可扩展的原因。大概只有几千个用户,您不需要 cc1.4xlarge EC2 实例? (否则运行起来会非常昂贵!)

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

我还计划创建一个用 Python 编写的外部 XMPP 组件,使用 SleekXMPP .这个外部组件将完成服务器的所有“工作”,因为我正在制作的应用程序与即时消息传递完全不同。对于这一部分,我还没有弄清楚如何将用 Python 编写的外部 XMPP 组件连接到 Tigase 服务器。 documentation似乎建议使用 XEP-0114: Jabber Component Protocol 专门为 Tigase 编写组件,而不是为通用 XMPP 服务器编写。 ,正如我所料。

有了这些额外的信息,如果你能想到我应该知道的任何其他信息,我会很高兴知道的。

谢谢 :)

最佳答案

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

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

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

当然,我指的是为数百万在线用户和每秒 10 万个 XMPP 数据包或更多的真正高流量的集群。通常对于大型安装,拥有专用服务器更便宜、更高效。

通常 Tigase 在 Amazon EC2 上运行得很好,但您确实需要最新的 SVN 代码,因为它添加了许多优化,尤其是在云上测试之后。如果您提供有关您的服务的更多详细信息,我可能会有更多建议。

更多评论:

如果涉及成本,专用服务器始终是持续运行服务的更便宜的选择。除非您打算按小时打开/关闭服务器,否则我建议您使用一些专用服务。成本更低,性能更可预测。

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

  • 5*cc1.4xlarge - 100 万在线用户
  • 1*c1.xlarge - 118k 在线用户
  • 2*c1.xlarge - 127k 在线用户
  • 2*m2.4xlarge(带有用于 Tigase 的 5GB RAM)- 236k 在线用户
  • 2*m2.4xlarge(带有 20GB RAM 用于 Tigase)- 315k 在线用户
  • 5*m2.4xlarge(带有用于 Tigase 的 60GB RAM)- 400k 在线用户
  • 5*m2.4xlarge(带有用于 Tigase 的 60GB RAM)- 312k 在线用户
  • 5*m2.4xlarge(带有用于 Tigase 的 60GB RAM)- 327k 在线用户
  • 5*m2.4xlarge(带有用于 Tigase 的 60GB RAM)- 280k 在线用户

  • 还有一些评论:
  • 为什么内存量那么重要?这是因为除 cc1.4xlarge 实例之外的所有实例的 CPU 能力都非常不可靠且不一致。您有 8 个虚拟 CPU,但是如果您查看 top 命令,您经常会看到一个 CPU 正在工作,而其余的则没有。这种 CPU 功率不足会导致 Tigase 中的内部队列增长。当 CPU 恢复供电时,Tigase 可以处理等待的数据包。 Tigase 的内存越多,可以排队的数据包就越多,它可以更好地处理 CPU 缺陷。
  • 为什么会有 5*m2.4xlarge 4次?这是因为我在一天中的不同日期和时间多次重复测试。正如您所看到的,根据时间和日期,系统可以处理不同的负载。我猜这是因为 Tigase 实例与其他一些服务共享 CPU 能力。如果他们很忙,Tigase 就会遭受 CPU 供电不足的问题。

  • 也就是说,我认为安装多达 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/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com