美文网首页
【elasticsearch】21、配置跨集群搜索

【elasticsearch】21、配置跨集群搜索

作者: cutieagain | 来源:发表于2020-03-18 23:50 被阅读0次

水平拓展的痛点

  • 但集群 - 当水平拓展时,节点数不能无限增加
    • 当集群的meta信息(节点,索引,集群状态)过多,会导致更新压力变大,单个active master会成为性能瓶颈,导致整个集群无法正常工作
  • 早期版本,通过tribe node可以实现多集群访问的需求,但是还是存在一定的问题
    • tribe node会以client node的方式加入每个集群。集群中master节点的任务变更需要tribe node的回应才能继续
    • tribe node不报错cluster state信息,一旦重启,初始化很慢
    • 当多个集群存在索引重名的情况,只能设置一种prefer规则

跨集群搜索 - cross cluster search

  • 早起tribe node方案存在一定的问题,现在已经被deprecated
  • elasticsearch5.3引入了跨集群搜索的功能,推荐使用
    • 允许任何节点扮演federated节点,以轻量的方式,讲搜索请求进行代理
    • 不需要以client node的形式加入其它集群

配置及查询

image.png
image.png
//启动3个集群

bin/elasticsearch -E node.name=cluster0node -E cluster.name=cluster0 -E path.data=cluster0_data -E discovery.type=single-node -E http.port=9200 -E transport.port=9300
bin/elasticsearch -E node.name=cluster1node -E cluster.name=cluster1 -E path.data=cluster1_data -E discovery.type=single-node -E http.port=9201 -E transport.port=9301
bin/elasticsearch -E node.name=cluster2node -E cluster.name=cluster2 -E path.data=cluster2_data -E discovery.type=single-node -E http.port=9202 -E transport.port=9302


//在每个集群上设置动态的设置
PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "cluster0": {
          "seeds": [
            "127.0.0.1:9300"
          ],
          "transport.ping_schedule": "30s"
        },
        "cluster1": {
          "seeds": [
            "127.0.0.1:9301"
          ],
          "transport.compress": true,
          "skip_unavailable": true
        },
        "cluster2": {
          "seeds": [
            "127.0.0.1:9302"
          ]
        }
      }
    }
  }
}

#cURL
curl -XPUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{"persistent":{"cluster":{"remote":{"cluster0":{"seeds":["127.0.0.1:9300"],"transport.ping_schedule":"30s"},"cluster1":{"seeds":["127.0.0.1:9301"],"transport.compress":true,"skip_unavailable":true},"cluster2":{"seeds":["127.0.0.1:9302"]}}}}}'

curl -XPUT "http://localhost:9201/_cluster/settings" -H 'Content-Type: application/json' -d'
{"persistent":{"cluster":{"remote":{"cluster0":{"seeds":["127.0.0.1:9300"],"transport.ping_schedule":"30s"},"cluster1":{"seeds":["127.0.0.1:9301"],"transport.compress":true,"skip_unavailable":true},"cluster2":{"seeds":["127.0.0.1:9302"]}}}}}'

curl -XPUT "http://localhost:9202/_cluster/settings" -H 'Content-Type: application/json' -d'
{"persistent":{"cluster":{"remote":{"cluster0":{"seeds":["127.0.0.1:9300"],"transport.ping_schedule":"30s"},"cluster1":{"seeds":["127.0.0.1:9301"],"transport.compress":true,"skip_unavailable":true},"cluster2":{"seeds":["127.0.0.1:9302"]}}}}}'


#创建测试数据
curl -XPOST "http://localhost:9200/users/_doc" -H 'Content-Type: application/json' -d'
{"name":"user1","age":10}'

curl -XPOST "http://localhost:9201/users/_doc" -H 'Content-Type: application/json' -d'
{"name":"user2","age":20}'

curl -XPOST "http://localhost:9202/users/_doc" -H 'Content-Type: application/json' -d'
{"name":"user3","age":30}'


#查询
GET /users,cluster1:users,cluster2:users/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 20,
        "lte": 40
      }
    }
  }
}

相关文章

网友评论

      本文标题:【elasticsearch】21、配置跨集群搜索

      本文链接:https://www.haomeiwen.com/subject/bvihyhtx.html