我正在尝试设置ElasticSearch(使用Eck操作符),以便它有运行在廉价机器上的节点(用于“正常”流),以及运行在“昂贵”机器上的节点(用于突发时刻)。重要的是要注意,我使用的数据是完全被摄取的,并且没有对查询进行索引(只发生搜索查询)。我只有一个索引,所以我将跳过图表中的这一部分。
我决定选择以下方法:在一个“廉价”节点(CN)上获取数据,该节点将作为我的分片的主节点。主节点也在那里运行,但这并不相关(我认为)。
+--------------------- Cheap Node -------------------------+
| [shard0_P] [shard1_P] [shard2_P] [shard3_P] [shard4_P] |
+----------------------------------------------------------+
我现在还希望在更大的机器上运行“昂贵的”节点。我想要2个节点(EN1、EN2),它们可以共享碎片。我想要做到这一点:
+-------------------- Expensive Node1 ---------------------+
| [shard0_R] [shard1_-] [shard2_R] [shard3_-] [shard4_R] |
+----------------------------------------------------------+
+-------------------- Expensive Node2 ---------------------+
| [shard0_-] [shard1_R] [shard2_-] [shard3_R] [shard4_-] |
+----------------------------------------------------------+
分片将均匀分布在EN1和EN2上。
将所有主分片都放在cn上的原因是,我希望能够关闭所有昂贵的节点,同时仍然保留我的所有数据。
我尝试在仅打开CN的情况下运行Clusted,并在那里摄取数据。然后,我设置了cluster.routing.rebalance.enable=replicas
以避免碎片从CN移到ENS,并打开了节点。我的data_1和_data2 pod是在en节点上分配的,但没有碎片的镜像。当我尝试将cluster.routing.rebalance.enable
的值更改为其他值(primaries
)时,碎片开始离开cn节点以平衡en节点上的所有内容-这不是我想要的:(
是否有办法配置ElasticSearch来实现此设计?
1条答案
按热度按时间z9smfwbn1#
将所有主分片都放在cn上的原因是,我希望能够关闭所有昂贵的节点,同时仍然保留我的所有数据。
如果您关闭了昂贵的节点,您仍然拥有所有数据。
如果您关闭了廉价的节点,您仍然拥有所有数据。
因为您只进行搜索,所以您的碎片是主要的还是廉价节点上的副本都没有区别。如果您因为关闭托管主碎片的节点而丢失主碎片,则副本将被提升为主碎片。主碎片和副本碎片是彼此的完全相同的副本,有点像双子座。