Elasticsearch节点间通信基础--Transport(
2019-06-25 本文已影响0人
Ombres
Transport
概念
Transport用于集群内节点之间的内部通信,从一个节点到另一个节点的每次调用都使用Transport。
特点
Transport的消息传输是异步通信,在通信的过程中,不会有等待的线程。Elasticsearch使用这种机制可以有效避免C10K(同时处理10000个连接)的问题,而且是广播和收集的一种理想性的解决方案。在Elasticsearch中,很多操作都涉及到了在多个节点之前的交互,比如搜索,索引等等。
相关设置
-
transport.port
端口号,默认是9300-9400 -
transport.publish_port
对外公布的端口,默认与transport.port
相同 -
transport.host
host地址,默认为network.host
-
transport.bind_host
service绑定的地址,默认是transport.host
或network.bind_host
-
transport.publish_host
集群通信的地址,默认是transport.host
或network.publish_host
,有且只有一个 -
transport.connect_timeout
连接超时时间 -
transport.compress
是否在传输时进行压缩 -
transport.ping_schedule
ping消息间隔时间,用来确认transport是否可用,默认是5s,可用设置为-1来代表禁止ping
配置优化
- 节点间保持连接很重要,因此尽量让transport连接不中断,
transport.ping_schedule
可用定时检测连接的可用性 - 一般来说,集群节点之间的交互是本地的,相对网络带宽资源,CPU资源更重要,
transport.compress
配置设置为false可用减少资源损耗。 - 有时候需要排查transport的问题,可用通过以下设置进行日志跟踪,这个配置是临时生效的
PUT _cluster/settings
{
"transient" : {
"logger.org.elasticsearch.transport.TransportService.tracer" : "TRACE",
"transport.tracer.include" : "*", #跟踪哪些操作
"transport.tracer.exclude" : "internal:coordination/fault_detection/*" #不跟踪哪些操作
}
}