我的配置如下:
这台机器上运行着4个vm,每个vm都运行elasticsearch示例。
http://192.168.44.1:9200有 node.data: false
以及 node.master: false
-专用客户端节点。
http://192.168.44.2:9200有 node.data: false
以及 node.master: true
-专用主节点。
http://192.168.44.3:9200有 node.data: true
以及 node.master: true
-有机会成为故障转移主节点的工作节点
http://192.168.44.4:9200有 node.data: true
以及 node.master: true
-有机会成为故障转移主节点的工作节点
现在一切都很好。所以问题是,当我使用这个连接字符串时,如何确保我的客户机连接到正确的节点?
var node1 = new Uri("http://192.168.44.1:9200");
var node2 = new Uri("http://192.168.44.2:9200");
var node3 = new Uri("http://192.168.44.3:9200");
var node4 = new Uri("http://192.168.44.4:9200");
var _connectionPool = new SniffingConnectionPool(new List<Uri>() { node1, node2, node3, node4 });
var _settings = new ConnectionSettings(_connectionPool, defaultIndex: "testing")
.SniffOnConnectionFault(false)
.SniffOnStartup(false)
.SniffLifeSpan(TimeSpan.FromMinutes(1));
我希望我的所有搜索只使用客户机节点(node1)执行,而索引则使用工作节点(node3,node4)执行。
我在文档中看到的建议设置 http.enabled: false
对于工作节点,所以它们根本不处理http请求,它们之间的通信是使用传输模块完成的。因此,如果我这样做,我将不得不减少我的连接池,只连接到客户机/主节点。这个设计好吗?
或者最好在webserver上运行elasticsearch示例的本地副本,将此节点设置为客户端并仅连接到它,同时vms中的节点将是worker(和一个专用的主节点)。但是,如果本地节点决定崩溃,如何确保集群故障转移呢?
任何问题-让我知道。
暂无答案!
目前还没有任何答案,快来回答吧!