Elasticsearch群集的build议设置包含TB和更高级别的数据?

目前,我有几个Elasticsearch节点在几个裸机上运行,​​包含大小为TB的索引。 我们正在重build我们的基础设施,我不确定这是否是最好的方法。

我一直在寻找Docker,Mesos和Vagrant作为替代品,但我不确定它们是否可能。 我认为有四种情况是相关的(以及我遇到的问题):

  1. Mesos-Elasticsearch :这个包在Mesos上运行Elasticsearch。 这看起来不错,但它似乎只允许以小磁盘大小来扩展数据节点。 另外,没有主/客户端节点。 这个软件包目前在Github上是非常stream行的 – 我在默认设置中收到了“无路由到主机”和MasterNotDiscoveredException错误。 有没有人有这方面的经验?
  2. Docker :我不太熟悉容器,但是Dockerhub有几个Elasticsearch的容器。 而且,Mesos允许容器在其上运行。 我担心每个容器中的磁盘空间不足,因为我的数据处于TB的范围之内。 而且,数据是持久的。 正在调整容器的磁盘的大小是否可行或是否有不同的Docker容器设置?
  3. Vagrant虚拟机 :我会想象有一个适合分配资源的每个ES节点的虚拟机。 与使用裸机相比,是否有任何实质性的好处? 这似乎与Mesos不兼容。
  4. 裸机 :这是当前的设置。

我想知道在TB级别的Elasticsearch集群中,哪四个是您的首选设置。 每个选项的优缺点?

我是Apache Mesos Elasticsearch Framework的作者。 我build议你尝试所有这些方法,并select你有最好的经验。 当涉及性能时,请确保您考虑到性能要求,然后执行testing。 还有其他的事情要考虑。 我将在问题中谈到这一点。

  1. Elasticsearch框架是这四个选项中最具弹性的。 Elasticsearch节点作为Mesos任务运行。 如果任何任务失败(硬件或软件故障),则在Mesos群集内的其他地方重新启动它们。 如果要添加节点(以提高性能)或删除节点(以减less资源使用),这与发送单行curl请求一样简单。 数据非常安全。 默认configuration(可以覆盖)将所有数据复制到所有节点。 所以集群可能遭受灾难性的事件,并留下一个单一的节点,而不会丢失任何数据。 您也可以使用任何Docker卷插件将数据写入外部卷,以便在任务死亡时,数据仍包含在云卷上。 还有一些其他function,检查网站。 同时检查Container Solutions YouTube频道上的video。 我们也在开发帮助开发更容易的工具,参见minimesos 。

  2. 这是完全合理的,但是你必须考虑如何编排你的集群。 如果一个或多个容器死亡会发生什么? 你会遭受这种损失吗? 如果是这样,这可能是DevOps的最佳select(也就是说,您可以复制和testing看起来像真实的东西的群集)。

  3. 这是我会反对的唯一select。 开发会很好,但是在生产中你会看到一个重要的性能问题。 你可能会在另一个虚拟机(云)中有一个完整的堆栈虚拟机(vagrant)。 开销是不必要的。 链接1 , 链接2 。

  4. 这是Elastic推荐的官方方法,可能会为给定的硬件configuration提供最高的性能。 但是由于这些是静态部署,a)很多机器资源将被浪费(未使用的RAM / CPU等),b)在提供新实例方面存在重要的(特别是在较大的组织中)延迟api调用)和c)如果一个实例失败,它将不会被replace,直到有人修复它(与自动故障转移相比)才会被修复。 如果您对Elasticsearch的要求是固定的,那么您不需要类似DevOps的灵活性,并且您不必介意一点停机时间,那么这可能是最简单的方法(但要确保您的ESconfiguration正确)。

所以,如果是我,那么我会考虑dockerizedtesting,小POC和可能非常小的生产任务。 除此之外,我会每次都selectMesos Elasticsearch选项。

我的公司有不同的问题,但是当涉及到POC等时,可能还有更多的问题。

目前,我们正在通过Marathon在Mesos 0.27.1上运行一个3节点的ES集群,并使用自定义的Docker镜像 。 我们将主机卷(path)安装在容器中,这意味着您可以在Mesos Slave的主机上安装Ceph卷。 但这是一个非常手动的过程。 在我看来,最大的问题是数据安全性,因为默认情况下,数据只存储在主机本身,以及应用程序在Marathon中缩放时的行为(必须使用约束,因此每个Mesos只能运行一个节点奴隶等)。

几个月前,我们也尝试过提到的Mesos ES框架 ,但是当时对框架的状态并不满意。 从我看到的文档看,在过去的几个月里它有了很大的提高,但Mesos仍然缺less一些重要的function(例如对Docker卷驱动的持续卷支持)。但是这不是框架的问题,但是与Mesos。

我会马上给Mesos框架另一个尝试。 我特别喜欢设置--externalVolumeDriver的可能性,这意味着我们现在可以使用Docker RBD卷驱动程序(因为我们使用Ceph)…