ElasticSearch集群可以处理上PB的数据,集群规模可以成百上千,但要驾驭这么大规模的集群前我们需要对ElasticSearch足够了解,即便使用目前流行的云服务我们也要对ElasticSearch有一定的研究,才能更好的满足我们的业务。本篇主要讲跨集群查询。
1、跨集群查询
跨集群查询允许你的请求查询多个集群的数据,这个特性帮助我们更好的设计我们的架构。
分布式系统或微服务里将系统分为多个模块,模块A由一个团队,模块B由一个团队负责,模块C由一个团队负责,通常各个模块只查询各自的日志,但有些问题涉及多个模块时会查到多个模块的日志,这时跨集群查询刚好可以解决这类问题,对架构来说我们将模块A、模块B、模块C的日志存储在单独的集群里。
这样可以避免集群之间相互的干扰,模块A的日志量大只会影响集群A的写入,做到分而治之。
远程集群配置:
如下命令配置三个远程集群,”cluster_one“、”cluster_two“、”cluster_three“,在Kibana配置的默认集群上执行如下命令,执行后可在Kibana配置访问这些集群的数据。
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"cluster_one": {
"seeds": [
"127.0.0.1:9300"
]
},
"cluster_two": {
"seeds": [
"127.0.0.1:9301"
]
},
"cluster_three": {
"seeds": [
"127.0.0.1:9302"
]
}
}
}
}
}
2、权限与网关设置
需要注意的是,三个集群之间的权限要打通,否则会出现拒绝访问的情况,Kibana配置的用户名在三个集群件要有同样的权限。远程群集连接通过配置远程群集并仅连接到该远程群集中有限数量的节点来工作。
每个远程集群都由一个名称和一个种子节点列表引用。注册远程群集时,将从其中一个种子节点检索其群集状态,并选择最多三个网关节点作为远程群集请求的一部分进行连接。
可以手动设置网关节点:
cluster.remote.node.attr.gateway: true