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

配置项作用 #

http.port 配置项指定 Easysearch HTTP REST API 服务监听的端口范围。客户端通过此端口执行索引、搜索、集群管理等操作。

配置项类型 #

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

默认值 #

9200-9300

是否必需 #

可选配置项(有默认值)

配置格式 #

# 单个端口
http.port: 9200

# 端口范围(自动选择可用端口)
http.port: 9200-9300

# 多个端口(逗号分隔)
http.port: 9200,9201,9202

工作原理 #

HTTP 服务在配置的端口范围内绑定可用端口:

┌─────────────────────────────────────────────────────────┐
│                   节点启动                                │
└─────────────────────────────────────────────────────────┘
                        │
                        ▼
                ┌───────┴────────┐
                │                 │
            配置端口范围        检查可用性
        http.port: 9200-9300
                │                 │
                ▼                 ▼
        ┌───────┴────────┐   尝试绑定端口
        │   端口 9200    │   从 9200 开始
        │   可用?        │        │
        └───────┬────────┘        ▼
                │            ┌────┴────┐
        ┌───────┴────────┐    │         │
      是(绑定)       否   绑定成功  绑定失败
        │                    │         │
        ▼                    ▼         ▼
  HTTP 服务启动        端口 9201   尝试下一端口
                        ...       ...

使用示例 #

开发环境:

# 使用默认端口范围(推荐)
http.port: 9200-9300

# 或使用单个端口
http.port: 9200

生产环境:

# 指定固定端口
http.port: 9200

# 多实例服务器使用不同端口
# 节点 1
http.port: 9200

# 节点 2
http.port: 9201

容器环境:

# 容器内使用标准端口
http.port: 9200

推荐设置建议 #

环境推荐配置说明
开发9200-9300默认配置,灵活
单节点生产9200固定端口,便于访问
多节点9200-9300自动分配
容器9200标准端口,便于映射
安全加固非标准端口如 19200

完整网络配置示例 #

# 集群配置
cluster.name: production
node.name: node-1

# 网络配置
network.host: 0.0.0.0

# HTTP 服务端口(重要)
http.port: 9200

# HTTP 发布端口(可选,多网卡时使用)
http.publish_port: 9200

# HTTP 绑定地址(可选)
http.bind_host: 192.168.1.10

# 传输端口
transport.port: 9300

端口占用检查 #

启动前检查:

# 检查端口是否被占用
netstat -tuln | grep 9200

# 或使用 lsof
lsof -i :9200

# 或使用 ss
ss -tuln | grep 9200

如果端口被占用:

# 查找占用进程
lsof -i :9200

# 杀死占用进程
kill -9 <PID>

# 或使用其他端口
http.port: 9201

多实例部署 #

同一服务器运行多个节点:

# 节点 1 配置
cluster.name: production
node.name: node-1
network.host: 192.168.1.10
http.port: 9200
transport.port: 9300
path.data: /data/node1

# 节点 2 配置
cluster.name: production
node.name: node-2
network.host: 192.168.1.10
http.port: 9201
transport.port: 9301
path.data: /data/node2

与 publish_port 的关系 #

配置项作用使用场景
http.port实际监听端口始终需要
http.publish_port对外发布的端口多网卡/NAT 环境

NAT 环境示例:

# 内网端口
http.port: 9200

# 对外发布的端口(端口转发)
http.publish_port: 80

# 客户端通过端口 80 访问

常见问题 #

问题 1:端口被占用无法启动

BindException: Address already in use

解决方案:

  1. 检查端口占用
lsof -i :9200
  1. 停止占用进程
# 停止其他 Easysearch 节点
kill -9 <PID>
  1. 使用其他端口
http.port: 9201

问题 2:防火墙阻止访问

症状:

  • 本地可以访问
  • 远程无法访问

解决方案:

# 开放防火墙端口
firewall-cmd --permanent --add-port=9200/tcp
firewall-cmd --reload

# 或使用 iptables
iptables -A INPUT -p tcp --dport 9200 -j ACCEPT

问题 3:多网卡绑定错误

解决方案:

# 明确指定绑定地址
http.bind_host: 192.168.1.10
http.port: 9200

# 或使用 network.host
network.host: 192.168.1.10

容器部署配置 #

Docker 部署:

# easysearch.yml
http.port: 9200
network.host: 0.0.0.0

# Docker 运行命令
docker run -d \
  --name easysearch \
  -p 9200:9200 \
  -p 9300:9300 \
  -v /data:/usr/share/easysearch/data \
  infinilabs/easysearch:latest

Kubernetes 部署:

apiVersion: v1
kind: Service
metadata:
  name: easysearch
spec:
  ports:
  - name: http
    port: 9200
    targetPort: 9200
  - name: transport
    port: 9300
    targetPort: 9300
  selector:
    app: easysearch

相关配置项 #

配置项默认值说明
http.publish_port-1对外发布端口
http.bind_host同 network.host绑定地址
http.host-绑定地址(同 bind_host)
transport.port9300-9400传输端口
network.host-网络绑定地址

验证端口配置 #

启动后验证:

# 检查监听端口
netstat -tuln | grep 9200

# 测试 HTTP 连接
curl http://localhost:9200

# 查看节点信息
curl http://localhost:9200/_cat/nodes?v

# 查看端口配置
curl http://localhost:9200/_nodes/settings?filter_path=**.http.port

输出示例:

{
  "cluster_name" : "production",
  "nodes" : {
    "node_id" : {
      "settings" : {
        "http" : {
          "port" : "9200-9300"
        }
      }
    }
  }
}

安全建议 #

生产环境配置:

  1. 使用非标准端口
http.port: 19200
  1. 配合防火墙规则
# 只允许特定网段访问
firewall-cmd --permanent --add-rich-rule='
  rule family="ipv4" source address="10.0.0.0/8"
  port protocol="tcp" port="9200" accept
'
  1. 启用 HTTPS
xpack.security.http.ssl.enabled: true

注意事项 #

  1. 静态配置:修改端口需要重启节点
  2. 端口冲突:确保端口未被其他服务占用
  3. 防火墙配置:生产环境需配置防火墙规则
  4. 多实例:同一服务器多节点需使用不同端口
  5. 容器映射:容器部署需正确映射端口