在Elasticsearch中,HTTP 端口和节点端口是两个不同的概念,它们分别用于不同的通信方式:
1. HTTP 端口: 用于通过 HTTP 协议与 Elasticsearch 集群进行通信。默认情况下,HTTP 端口为 9200。它允许用户通过 REST API 与 Elasticsearch 进行交互,执行索引、搜索、获取集群状态等操作。
2. 节点端口(Transport 端口): 用于节点之间的内部通信,比如节点之间的数据传输和集群通信。默认情况下,节点端口为 9300。它允许不同节点之间通过 Elasticsearch 的内部协议进行通信,比如进行分片复制、集群维护等操作。
对于单主机多节点的配置,你需要确保每个节点都有唯一的节点名称,并且指定不同的节点端口。HTTP 端口可以保持相同,因为它们都在同一主机上,可以通过不同的路径来访问不同的节点。以下是一个示例配置:
Node 1 的配置:
# elasticsearch.yml 文件配置
# 设置节点名称
node.name: node-1
# 设置集群名称
cluster.name: my-cluster
# 设置网络地址
network.host: 192.168.1.100
# 设置 HTTP 端口
http.port: 9200
# 设置节点端口
transport.port: 9300
# 设置发现节点
discovery.seed_hosts: ["192.168.1.100:9300"]
# 设置数据目录
path.data: /path/to/node1/data
Node 2 的配置:
# elasticsearch.yml 文件配置
# 设置节点名称
node.name: node-2
# 设置集群名称
cluster.name: my-cluster
# 设置网络地址
network.host: 192.168.1.100
# 设置 HTTP 端口
http.port: 9200
# 设置节点端口
transport.port: 9301
# 设置发现节点
discovery.seed_hosts: ["192.168.1.100:9300"]
# 设置数据目录
path.data: /path/to/node2/data
在这个示例中,Node 1 和 Node 2 都使用相同的 HTTP 端口 9200,但是它们分别使用不同的节点端口 9300 和 9301。这样配置可以让你在同一主机上运行多个 Elasticsearch 节点,并确保它们能够相互发现并加入同一个集群,同时通过不同的节点端口进行内部通信。