首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集群故障转移如何在ElasticSearch中使用NEST

集群故障转移如何在ElasticSearch中使用NEST
EN

Stack Overflow用户
提问于 2014-10-15 13:26:36
回答 2查看 2.3K关注 0票数 2

我是“弹性搜索”的新手。我想知道集群故障转移是如何使用NEST在ES中工作的。我浏览了http://nest.azurewebsites.net/elasticsearch-net/cluster-failover.htmlhttp://nest.azurewebsites.net/elasticsearch-net/connecting.html的可用链接。但对我来说不太清楚。

假设我有两个节点。Node1(10.20.2.1:9203)和node2(10.20.2.2:9204)。两个节点都连接到单个集群“Test群集”。我的要求是,如果有任何节点关闭,我希望从活动节点获取数据。

我的Node1配置文件(10.20.2.1:9203)如下所示

代码语言:javascript
复制
cluster.name: TestCluster
node.name: "Node1"
node.master: true
node.data: true
network.host: 10.20.2.1
http.port: 9203

我的Node2配置文件(10.20.2.2:9204)如下所示

代码语言:javascript
复制
cluster.name: TestCluster
node.name: "Node2"
node.master: false
node.data: true
network.host: 10.20.2.2
http.port: 9204

我正在访问ES客户机,如下所示

代码语言:javascript
复制
private static ElasticClient ElasticClientNew
        {
            get
            {
                var node = new Uri("http://10.20.2.1:9203");
                var node1 = new Uri("http://10.20.2.2:9204");
                var connectionPool = new SniffingConnectionPool(new[] { node, node1 });
                var setting = new ConnectionSettings(connectionPool)
                                    .SniffOnConnectionFault(false)
                                    .SniffOnStartup(false)
                                    .SniffLifeSpan(TimeSpan.FromMinutes(1));
                return new ElasticClient(setting);
            }
        }

我使用这个ES客户机进行搜索,如下所示

代码语言:javascript
复制
var result = ElasticClientNew.Search<Attendance>(s => s
                            .From(0)
                            .Size(5000)
                            .Index("attendance").Type("Worker"));

我正在从node1运行MVS应用程序,并且在这台机器上停止了elasticsearch服务。但是ES服务正在node2中运行。当我尝试搜索时,会得到以下错误

代码语言:javascript
复制
Failed after retrying 1 times: 'POST attendance/Worker/_search'. 
InnerException: PingException, InnerMessage: Pinging http://10.20.2.1:9203 caused an exception, InnerStackTrace:    at Elasticsearch.Net.Connection.Transport.Ping(ITransportRequestState requestState) in c:\Users\gmarz\code\elasticsearch-net\src\Elasticsearch.Net\Connection\Transport.cs:line 96
   at Elasticsearch.Net.Connection.Transport.DoRequest[T](TransportRequestState`1 requestState) in c:\Users\gmarz\code\elasticsearch-net\src\Elasticsearch.Net\Connection\Transport.cs:line 334

请建议如何在我的应用程序中实现群集故障转移。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-19 11:40:48

问题是只有一个节点

代码语言:javascript
复制
node.master: true

设置为当该节点下线时,另一个节点是masterless,并且也关闭。

票数 1
EN

Stack Overflow用户

发布于 2014-10-30 10:54:17

我也有类似的问题:

当我尝试使用StaticConnection池连接时,我会得到以下错误:

'Elasticsearch.Net.Exceptions.MaxRetryException‘类型的未处理异常发生在Elasticsearch.Net.dll中

附加信息:重试0次后失败:“POST els_logentries/logentries/_search”。

当我再次跑步的时候,效果很好。

代码语言:javascript
复制
        var node1 = new Uri("http://192.168.115.102:9200");
        var node2 = new Uri("http://192.168.115.102:9200");

        var connectionPool = new StaticConnectionPool(new List<Uri>() { node1,node2});
        var settings = new ConnectionSettings(connectionPool, defaultIndex: "els_logentries");

        ElasticClient client = new ElasticClient(settings);

        var results = client.Search<Logentries>(s => s
            .Type("logentries")
             .Query(q=>q
            .Bool(bq=>bq
            .Must(
            mq=>mq.MatchAll()
                )    )));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26383798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档