【问题标题】:Is it a good idea to run Cassandra inside an LXC or Docker, in production?在生产中在 LXC 或 Docker 中运行 Cassandra 是个好主意吗?
【发布时间】:2013-11-18 18:58:13
【问题描述】:

我知道它运行得很好,所以它可以很好地用于开发,但它不会因为 AuFS 而导致磁盘和/或网络 IO 性能更差吗?

【问题讨论】:

    标签: io cassandra virtualization docker lxc


    【解决方案1】:

    如果将 Cassandra 数据放在卷上,磁盘 I/O 性能将与容器外部完全相同,因为 AUFS 将被完全绕过。

    即使您不使用卷,只要您稍后不将 commitCassandra 数据转换为 run 那个图像的新图像,性能就会很好。即使你这样做了,性能只会在每个文件的第一次写入期间受到影响;之后,它将是原生的。

    您不会看到网络 I/O 性能有任何不同,除非您的容器每秒处理 100 兆比特/秒的网络流量和/或 1000 秒的连接。在这种情况下,您可以使用Pipework 等工具将 MAC VLAN 接口甚至本地物理接口分配给您的容器。

    【讨论】:

      【解决方案2】:

      我们实际上是在生产环境中的 Docker 中运行 Cassandra,并且不得不解决很多性能问题。

      网络:您应该将其设置为 --net=host 以使用主机网络。否则,您的网络速度将受到重大影响。有关推荐最佳实践的更多信息,请参阅this article

      数据量:您应该将数据量暴露给物理主机。如果您在云中操作,请注意您放置数据量的位置可能会限制您的 iops。

      JVM:仅仅因为您在容器中运行 Cassandra 并不意味着您可以摆脱对 jvm 的调整。您仍然需要对其进行修改以考虑主机上的系统资源。

      集群名称/种子:这些需要配置并且需要从硬编码值更改以使用 sed 查找和替换为环境变量。

      最大的收获是,与任何软件一样,您需要进行一些配置。这不是 100% 的即插即用。

      【讨论】:

        【解决方案3】:

        调查同样的事情,刚刚在slideshare 上找到了这个:

        “Docker 使用 Linux 以太网桥进行基本的软件路由。这将提高您的网络吞吐量。(命中率 50%) 改用主机网络堆栈(命中率 10%)"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-01
          • 2017-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-15
          • 2021-03-31
          • 1970-01-01
          相关资源
          最近更新 更多