配置项作用 #
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
注意事项 #
默认值: 默认值为
true,适合集群节点。需要重启: 修改此配置需要重启节点。
客户端模式:
false时只能作为客户端。集群功能:
false时不能作为集群节点。TransportClient: 自动设置为
false。端口监听:
true时才会监听端口。拓扑影响: 影响集群网络拓扑。
测试用途:
false可用于测试环境。生产环境: 生产节点通常保持
true。配置一致性: 集群内节点应保持一致。
连接行为 #
连接行为差异
network.server = true 的节点:
接受连接:
├── 监听端口
├── 接受传入 TCP 连接
├── 处理网络请求
└── 响应请求
发起连接:
├── 连接到其他节点
├── 发送请求
├── 接收响应
└── 正常通信 ✅
network.server = false 的节点:
接受连接:
├── 不监听端口 ❌
├── 无法接受连接
└── 无法被连接
发起连接:
├── 连接到其他节点 ✅
├── 发送请求
├── 接收响应
└── 正常通信
安全考虑 #
安全配置建议
生产环境:
network.server: true
├── 绑定内网地址
├── 配置防火墙
├── 启用 TLS
└── 限制访问 ✅
DMZ 环境:
network.server: true
├── 绑定特定地址
├── 严格访问控制
├── 启用认证
└── 审计日志 ⚠️
客户端:
network.server: false
├── 不接受连接
├── 仅发起连接
└── 相对安全 ✅





