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

配置项作用 #

network.server 配置项用于控制Easysearch 节点是否作为服务器模式运行

当设置为 true 时,节点会启动服务器端监听端口,允许其他客户端连接;当设置为 false 时,节点不会监听任何端口,只能作为客户端连接到其他节点。

配置项属性 #

  • 配置路径: network.server
  • 数据类型: Boolean(布尔值)
  • 默认值: true
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 否(需要重启节点生效)

配置项详解 #

工作机制 #

节点网络角色

network.server = true (默认):
├── 启动服务器端
├── 绑定监听端口
├── 接受客户端连接
├── 处理传入请求
└── 可以作为集群节点 ✅


network.server = false:
├── 不启动服务器端
├── 不绑定监听端口
├── 只能发起连接
├── 不接受传入请求
└── 只能作为客户端 ❌

Transport 层实现 #

NioTransport 实现

if (NetworkService.NETWORK_SERVER.get(settings)) {
    // 启动服务器端
    for (ProfileSettings profileSettings : profileSettings) {
        TcpChannelFactory factory = serverChannelFactory(profileSettings);
        profileToChannelFactory.put(profileName, factory);
        bindServer(profileSettings);  // 绑定端口
    }
} else {
    // 不启动服务器端
    // 只创建客户端能力
}


Netty4Transport 实现:

if (NetworkService.NETWORK_SERVER.get(settings)) {
    for (ProfileSettings profileSettings : profileSettings) {
        createServerBootstrap(profileSettings, sharedGroup);
        bindServer(profileSettings);  // 绑定端口
    }
} else {
    // 不启动服务器端
}

使用场景对比 #

不同场景的配置

集群数据节点:
network.server: true
├── 监听 9300 端口
├── 接受其他节点连接
├── 处理数据请求
└── 完整功能 ✅


TransportClient:
network.server: false
├── 不监听端口
├── 只连接到集群
├── 发送请求
└── 客户端模式


测试节点:
network.server: false
├── 不监听端口
├── 避免端口冲突
└── 纯客户端测试

配置建议 #

生产环境(默认) #

network:
  server: true  # 默认值

建议: 保持默认值 true。作为集群节点运行。

客户端模式 #

network:
  server: false  # 客户端模式

建议: 设置为 false。仅作为客户端连接时使用。

测试环境 #

network:
  server: false  # 测试用

建议: 设置为 false。测试环境避免端口冲突。

标准配置 #

network:
  server: true
  host: _eth0_
  port: 9300

建议: 保持 true。标准集群节点配置。

代码示例 #

easysearch.yml 基础配置 #

network:
  server: true

生产节点配置 #

network:
  server: true
  host: 0.0.0.0
  port: 9300

客户端模式配置 #

network:
  server: false

测试节点配置 #

network:
  server: false
  cluster:
    name: test-cluster

相关配置 #

配置项作用默认值
network.server是否服务器模式true
network.host绑定地址local
network.port绑定端口9300-9400

网络拓扑影响 #

集群网络拓扑

所有节点 network.server = true:

节点1 (server: true)      节点2 (server: true)      节点3 (server: true)
├── 监听 9300             ├── 监听 9301             ├── 监听 9302
├── 接受连接              ├── 接受连接              ├── 接受连接
└── 全连接拓扑 ✅         └── 全连接拓扑 ✅         └── 全连接拓扑 ✅


混合配置:

节点1 (server: true)      节点2 (server: false)
├── 监听 9300             ├── 不监听
├── 接受连接              ├── 只能发起连接
└── 可以被连接            └── 不能被连接

连接关系:
├── 节点1 ↔ 节点2 ✅
├── 节点1 → 节点2 ✅
└── 节点2 ← 节点1 ✅

功能影响分析 #

server 设置可以接受连接可以发起连接集群功能
true完整功能
false仅客户端

典型应用 #

network.server = true 的应用:

数据节点:
├── 存储数据
├── 处理查询
├── 接受请求
└── 完整功能 ✅


协调节点:
├── 协调节点
├── 处理请求
├── 接受客户端
└── 完整功能 ✅


master 节点:
├── 集群管理
├── 接受连接
├── 协调集群
└── 完整功能 ✅


network.server = false 的应用:

TransportClient:
├── 连接到集群
├── 发送请求
├── 不接受连接
└── 仅客户端功能 ❌

使用场景 #

推荐使用默认值的场景 #

  • 集群节点: 所有集群节点
  • 数据节点: 存储数据的节点
  • 协调节点: 协调请求的节点
  • Master 节点: 集群管理节点

推荐设置为 false 的场景 #

  • TransportClient: 传统的传输客户端
  • 测试工具: 不需要接受连接的测试工具
  • 专用客户端: 仅作为客户端的应用

配置示例 #

完整集群配置:

节点1 (数据节点):
network.server: true
node.roles: [data, master]
node.name: data-node-1


节点2 (协调节点):
network.server: true
node.roles: [coordinating_only]
node.name: coord-node-1


客户端应用:
使用 TransportClient
network.server: false
自动设置 ✅

端口绑定 #

服务器模式与端口绑定

network.server = true:
├── 绑定配置的端口
├── 默认 9300-9400
├── 监听传入连接
└── 处理请求


network.server = false:
├── 不绑定端口
├── 不监听连接
├── 只能作为客户端
└── 发起连接


端口配置:
network:
  server: true
  port: 9300

或:

network:
  server: true
  port:
    - 9300
    - 9301
    - 9302

注意事项 #

  1. 默认值: 默认值为 true,适合集群节点。

  2. 需要重启: 修改此配置需要重启节点。

  3. 客户端模式: false 时只能作为客户端。

  4. 集群功能: false 时不能作为集群节点。

  5. TransportClient: 自动设置为 false

  6. 端口监听: true 时才会监听端口。

  7. 拓扑影响: 影响集群网络拓扑。

  8. 测试用途: false 可用于测试环境。

  9. 生产环境: 生产节点通常保持 true

  10. 配置一致性: 集群内节点应保持一致。

连接行为 #

连接行为差异

network.server = true 的节点:

接受连接:
├── 监听端口
├── 接受传入 TCP 连接
├── 处理网络请求
└── 响应请求


发起连接:
├── 连接到其他节点
├── 发送请求
├── 接收响应
└── 正常通信 ✅


network.server = false 的节点:

接受连接:
├── 不监听端口 ❌
├── 无法接受连接
└── 无法被连接


发起连接:
├── 连接到其他节点 ✅
├── 发送请求
├── 接收响应
└── 正常通信

安全考虑 #

安全配置建议

生产环境:
network.server: true
├── 绑定内网地址
├── 配置防火墙
├── 启用 TLS
└── 限制访问 ✅


DMZ 环境:
network.server: true
├── 绑定特定地址
├── 严格访问控制
├── 启用认证
└── 审计日志 ⚠️


客户端:
network.server: false
├── 不接受连接
├── 仅发起连接
└── 相对安全 ✅