--- title: "传输层端口配置" date: 2026-02-18 lastmod: 2026-02-18 description: "控制 Easysearch 节点间通信传输层端口的配置项说明" tags: ["网络配置", "集群通信", "端口配置"] summary: "配置项作用 # 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` 配置项指定 Easysearch 节点间集群内部通信的端口范围。节点通过传输端口进行集群状态同步、分片分配、数据传输等内部操作。 ## 配置项类型 该配置项为**静态配置**,需要在启动时设置,修改后需要重启节点才能生效。 ## 默认值 ``` 9300-9400 ``` ## 是否必需 **可选配置项**(有默认值) ## 配置格式 ```yaml # 单个端口 transport.port: 9300 # 端口范围 transport.port: 9300-9400 # 使用默认范围 # transport.port: 9300-9400 ``` ## 端口选择机制 当配置端口范围时,系统会按以下规则选择端口: ``` 检查 9300 是否可用 │ ├─→ 可用 → 绑定 9300 │ └─→ 被占用 → 检查 9301 │ ├─→ 可用 → 绑定 9301 │ └─→ 依此类推... ``` ## 使用示例 **生产环境单端口:** ```yaml # 明确指定单个端口 transport.port: 9300 ``` **开发环境端口范围:** ```yaml # 使用端口范围,避免冲突 transport.port: 9300-9400 ``` **多实例部署:** ```yaml # 实例 1 transport.port: 9300 # 实例 2 transport.port: 9301 # 实例 3 transport.port: 9302 ``` ## 传输层用途 传输端口用于以下集群内部操作: ``` ┌─────────────────────────────────────────────────────────┐ │ 传输层 (Transport) │ │ 端口: 9300 │ └─────────────────────────────────────────────────────────┘ │ ┌───────────────┼───────────────┐ │ │ │ 集群状态同步 分片分配 数据传输 │ │ │ ▼ ▼ ▼ 元数据管理 节点协调 恢复和复制 ``` ## 与 HTTP 端口的区别 | 特性 | HTTP 端口 | 传输端口 | |-----|----------|---------| | 配置项 | `http.port` | `transport.port` | | 默认值 | 9200-9300 | 9300-9400 | | 用途 | REST API 客户端 | 集群内部通信 | | 协议 | HTTP | TCP (专用协议) | | 安全性 | TLS/SSL 可选 | TLS 通常启用 | | 防火墙 | 需要对外开放 | 通常仅内部开放 | ## 推荐设置建议 **生产环境**:使用单个端口或小范围 | 环境 | 推荐配置 | 说明 | |-----|---------|------| | 生产 | `9300` 或 `9300-9305` | 固定端口便于配置 | | 开发 | `9300-9400` | 避免端口冲突 | | 容器 | `9300` | 使用标准端口 | ## 防火墙配置 确保节点间可以互相访问传输端口: ```bash # Linux firewalld firewall-cmd --permanent --add-port=9300/tcp firewall-cmd --reload # Linux ufw ufw allow 9300/tcp # Docker 容器间通信 # 通常在 Docker 网络中自动允许 ``` ## 端口占用检查 启动前检查端口是否可用: ```bash # Linux/Mac netstat -an | grep 9300 lsof -i :9300 # Windows netstat -an | findstr 9300 ``` ## 完整网络配置示例 ```yaml # 节点 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:多节点端口冲突** 为每个节点配置不同的端口: ```yaml # 节点 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.port` | HTTP REST API 端口 | 9200-9300 | | `network.host` | 网络绑定地址 | - | | `transport.compress` | 是否压缩传输数据 | false | | `transport.profiles` | 传输层配置文件 | - | ## 注意事项 1. **静态配置**:修改端口需要重启节点 2. **端口范围**:范围过大可能导致启动时间长 3. **集群一致**:所有节点的传输层需要能互相访问 4. **防火墙配置**:确保节点间传输端口互通 5. **seed_hosts 配置**:使用非默认端口时需要在种子地址中指定端口