我的ES群集有20台机器,有50个节点(ES实例),我不确定应该设置多少个机架。两个架子够吗?或3或4个机架更好。
据我所知,如果我在ES配置中设置rack_id,它可以提供以下功能:
1, Select data location or relocation(to make sure replicas in different racks)
2, Use Rack_id as doc routing
任何理由都应该设置更多机架,但我认为即使只有一个机架也是不错的。
答案 0 :(得分:2)
如果两台机器因使用虚拟机而共享硬件的可能性最大,如果它们共用一个机架而不是硬件则会更小,如果它们共用一个建筑物而不是机架,则会再次变小。因此,使用多个机架是有意义的。
是否需要超过2个机架取决于您的副本。默认复制数为1.如果需要更高的值,严格来说,如果仅使用2个机架,则会降低群集的可用性,因为> = 3设置在机架级别上无效。 / p>
答案 1 :(得分:1)
我认为在您的情况下,将cluster.routing.allocation.same_shard.host
设置为true
会更简单,更容易。 (参见https://www.elastic.co/guide/en/elasticsearch/reference/current/shards-allocation.html)这将防止将同一分片的副本放在同一主机上(主机由地址和主机名标识)。请在使用此方法投入生产之前对其进行测试。
另外,请注意,您需要相应地指定processors
设置(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-threadpool.html#processors)。每个ES节点都会检测计算机上可用的核心数(不知道存在其他节点)。如果同一台机器上有多个节点,则每个节点都可以认为它具有对机器上所有核心的专用访问权限(这可能会导致默认线程池大小从此派生)。因此,您需要通过processors
设置显式指定可用的核心数,以便它不会过度分配线程池。
我建议使用专用主节点并确保群集稳定性,每个专用主节点实例应该在自己的机器上(当然可以是一个小得多的机器,例如开始使用4Gb的RAM)。