在LXC或Docker中运行Cassandra是否是一个好主意?

我知道它运行得很好,所以开发很好,但是不会因为AuFS而导致磁盘和/或networkingIO性能大大降低?

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

即使你不使用音量,只要你没有commit Cassandra的数据commit到一个新的图像来run这个图像,性能就会很好。 即使你这样做,只有在每个文件的第一次写入时才会影响性能。 之后,这将是本地的。

除非您的容器处理的是每秒100 Mb的networkingstream量和/或每秒1000个连接,否则您将不会看到networkingI / O性能有任何不同。 在这种情况下,您可以使用像Pipework这样的工具为您的容器分配MAC VLAN接口,甚至是本地物理接口。

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

networking:你应该这样做–net =主机使用主机networking。 否则,你会大大打击你的networking速度。 有关推荐最佳做法的更多信息,请参阅本文 。

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

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

群集名称/种子:这些需要configuration,需要从硬编码值改变,find并使用sedreplace环境variables。

大的带走就像任何软件你需要做一些configuration。 这不是100%即插即用。

看着同样的事情,刚刚在slideshare上find了这个:

“Docker使用Linux以太网桥来进行基本的软件路由,这样可以提高networking的吞吐量(命中率达到50%)使用主机networking堆栈(10%命中)”