--- title: "网络服务器模式配置" date: 2026-02-23 lastmod: 2026-02-23 description: "network.server 配置项用于控制节点是否作为服务器模式运行,监听来自客户端的连接。" tags: ["网络", "服务器模式", "客户端模式", "网络拓扑"] summary: "配置项作用 # network.server 配置项用于控制Easysearch 节点是否作为服务器模式运行。 当设置为 true 时,节点会启动服务器端监听端口,允许其他客户端连接;当设置为 false 时,节点不会监听任何端口,只能作为客户端连接到其他节点。 配置项属性 # 配置路径: network.server 数据类型: Boolean(布尔值) 默认值: true 是否可选: 是 作用域: NodeScope(节点级别) 动态更新: 否(需要重启节点生效) 配置项详解 # 工作机制 # 节点网络角色 network.server = true (默认): ├── 启动服务器端 ├── 绑定监听端口 ├── 接受客户端连接 ├── 处理传入请求 └── 可以作为集群节点 ✅ network.server = false: ├── 不启动服务器端 ├── 不绑定监听端口 ├── 只能发起连接 ├── 不接受传入请求 └── 只能作为客户端 ❌ Transport 层实现 # NioTransport 实现 if (NetworkService." --- ## 配置项作用 `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 ├── 不监听端口 ├── 避免端口冲突 └── 纯客户端测试 ``` ## 配置建议 ## 生产环境(默认) ```yaml network: server: true # 默认值 ``` **建议**: 保持默认值 `true`。作为集群节点运行。 ## 客户端模式 ```yaml network: server: false # 客户端模式 ``` **建议**: 设置为 `false`。仅作为客户端连接时使用。 ## 测试环境 ```yaml network: server: false # 测试用 ``` **建议**: 设置为 `false`。测试环境避免端口冲突。 ## 标准配置 ```yaml network: server: true host: _eth0_ port: 9300 ``` **建议**: 保持 `true`。标准集群节点配置。 ## 代码示例 ## easysearch.yml 基础配置 ```yaml network: server: true ``` ## 生产节点配置 ```yaml network: server: true host: 0.0.0.0 port: 9300 ``` ## 客户端模式配置 ```yaml network: server: false ``` ## 测试节点配置 ```yaml 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 ├── 不接受连接 ├── 仅发起连接 └── 相对安全 ✅ ```