📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

transport.port 配置项指定 Easysearch 节点间集群内部通信的端口范围。节点通过传输端口进行集群状态同步、分片分配、数据传输等内部操作。

配置项类型 #

该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。

默认值 #

9300-9400

是否必需 #

可选配置项(有默认值)

配置格式 #

# 单个端口
transport.port: 9300

# 端口范围
transport.port: 9300-9400

# 使用默认范围
# transport.port: 9300-9400

端口选择机制 #

当配置端口范围时,系统会按以下规则选择端口:

检查 9300 是否可用
    │
    ├─→ 可用 → 绑定 9300
    │
    └─→ 被占用 → 检查 9301
                  │
                  ├─→ 可用 → 绑定 9301
                  │
                  └─→ 依此类推...

使用示例 #

生产环境单端口:

# 明确指定单个端口
transport.port: 9300

开发环境端口范围:

# 使用端口范围,避免冲突
transport.port: 9300-9400

多实例部署:

# 实例 1
transport.port: 9300

# 实例 2
transport.port: 9301

# 实例 3
transport.port: 9302

传输层用途 #

传输端口用于以下集群内部操作:

┌─────────────────────────────────────────────────────────┐
│                  传输层 (Transport)                      │
│                    端口: 9300                           │
└─────────────────────────────────────────────────────────┘
                            │
            ┌───────────────┼───────────────┐
            │               │               │
    集群状态同步      分片分配        数据传输
            │               │               │
            ▼               ▼               ▼
        元数据管理      节点协调      恢复和复制

与 HTTP 端口的区别 #

特性HTTP 端口传输端口
配置项http.porttransport.port
默认值9200-93009300-9400
用途REST API 客户端集群内部通信
协议HTTPTCP (专用协议)
安全性TLS/SSL 可选TLS 通常启用
防火墙需要对外开放通常仅内部开放

推荐设置建议 #

生产环境:使用单个端口或小范围

环境推荐配置说明
生产93009300-9305固定端口便于配置
开发9300-9400避免端口冲突
容器9300使用标准端口

防火墙配置 #

确保节点间可以互相访问传输端口:

# Linux firewalld
firewall-cmd --permanent --add-port=9300/tcp
firewall-cmd --reload

# Linux ufw
ufw allow 9300/tcp

# Docker 容器间通信
# 通常在 Docker 网络中自动允许

端口占用检查 #

启动前检查端口是否可用:

# Linux/Mac
netstat -an | grep 9300
lsof -i :9300

# Windows
netstat -an | findstr 9300

完整网络配置示例 #

# 节点 1 配置
cluster.name: prod-cluster
node.name: node-1
network.host: 192.168.1.10

# HTTP 服务端口(REST API)
http.port: 9200

# 传输端口(集群内部通信)
transport.port: 9300

# 节点发现配置
discovery.seed_hosts:
  - 192.168.1.10:9300
  - 192.168.1.11:9300
  - 192.168.1.12:9300

常见问题 #

问题 1:节点无法组成集群

检查以下几点:

  • cluster.name 是否一致
  • transport.port 是否正确配置
  • 防火墙是否开放传输端口
  • 网络连接是否正常

问题 2:端口被占用

BindException: Address already in use

解决方案:

  1. 更改端口配置
  2. 停止占用端口的进程
  3. 使用端口范围

问题 3:多节点端口冲突

为每个节点配置不同的端口:

# 节点 1
http.port: 9200
transport.port: 9300

# 节点 2
http.port: 9201
transport.port: 9301

# 节点 3
http.port: 9202
transport.port: 9302

安全建议 #

  1. 内网通信:传输端口通常不需要对外开放
  2. 防火墙隔离:仅允许集群节点间访问
  3. TLS 加密:生产环境建议启用传输层加密
  4. 网络隔离:将集群节点放在独立的网络区域

相关配置项 #

配置项作用默认值
http.portHTTP REST API 端口9200-9300
network.host网络绑定地址-
transport.compress是否压缩传输数据false
transport.profiles传输层配置文件-

注意事项 #

  1. 静态配置:修改端口需要重启节点
  2. 端口范围:范围过大可能导致启动时间长
  3. 集群一致:所有节点的传输层需要能互相访问
  4. 防火墙配置:确保节点间传输端口互通
  5. seed_hosts 配置:使用非默认端口时需要在种子地址中指定端口