配置项作用 #
discovery.type 配置项指定节点使用的集群发现机制类型。发现机制决定节点如何找到其他节点并组成集群。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
zen(Zen 发现机制)
是否必需 #
可选配置项(有默认值)
可选值 #
| 值 | 说明 |
|---|---|
zen | Zen 发现机制(默认,适用于多节点集群) |
single-node | 单节点模式(开发/测试使用) |
配置格式 #
# 默认配置(多节点集群)
discovery.type: zen
# 单节点模式
discovery.type: single-node
工作原理 #
Zen 发现机制:
┌─────────────────────────────────────────────────────────┐
│ 节点启动 │
└─────────────────────────────────────────────────────────┘
│
▼
读取 discovery.seed_hosts
│
▼
┌───────┴────────┐
│ │
连接种子节点 未配置种子节点
│ │
▼ ▼
┌───────┴────────┐ 使用本地默认地址
│ │
发现其他节点 单节点模式
│ │
▼ ▼
加入集群 独立集群
使用示例 #
开发/测试环境(单节点):
cluster.name: dev-cluster
node.name: dev-node
discovery.type: single-node
network.host: 127.0.0.1
生产环境(多节点):
cluster.name: production
node.name: node-1
network.host: 0.0.0.0
discovery.type: zen
discovery.seed_hosts:
- "192.168.1.10:9300"
- "192.168.1.11:9300"
- "192.168.1.12:9300"
多节点集群配置示例:
# 节点 1
cluster.name: prod-cluster
node.name: node-1
network.host: 192.168.1.10
discovery.type: zen
discovery.seed_hosts:
- "192.168.1.11:9300"
- "192.168.1.12:9300"
# 节点 2
cluster.name: prod-cluster
node.name: node-2
network.host: 192.168.1.11
discovery.type: zen
discovery.seed_hosts:
- "192.168.1.10:9300"
- "192.168.1.12:9300"
# 节点 3
cluster.name: prod-cluster
node.name: node-3
network.host: 192.168.1.12
discovery.type: zen
discovery.seed_hosts:
- "192.168.1.10:9300"
- "192.168.1.11:9300"
推荐设置建议 #
| 环境 | 推荐配置 | 说明 |
|---|---|---|
| 开发 | single-node | 简单配置,快速启动 |
| 测试 | single-node 或 zen | 根据需求选择 |
| 生产 | zen | 必须使用 zen |
single-node 模式特点 #
适用场景:
- 本地开发
- 功能测试
- 学习和演示
- 单机部署
特点:
优点:
- 配置简单
- 启动快速
- 资源占用少
限制:
- 无法扩展为集群
- 无高可用性
- 单点故障
Zen 发现机制特点 #
适用场景:
- 生产环境
- 多节点部署
- 需要高可用
- 数据安全要求高
需要配合的配置:
# Zen 发现必需配置
cluster.name: production # 集群名称
network.host: 0.0.0.0 # 网络地址
discovery.seed_hosts: # 种子节点
- "192.168.1.10:9300"
- "192.168.1.11:9300"
cluster.initial_master_nodes: # 首次启动配置
- "node-1"
- "node-2"
- "node-3"
发现机制对比 #
| 特性 | single-node | zen |
|---|---|---|
| 节点数量 | 1 | 1+ |
| 高可用 | 否 | 是 |
| 需要配置 | 最少 | 较多 |
| 适用场景 | 开发/测试 | 生产 |
常见问题 #
问题 1:单节点无法扩展为集群
原因: 使用了 discovery.type: single-node
解决方案:
# 修改配置为 zen
discovery.type: zen
# 添加种子节点配置
discovery.seed_hosts:
- "192.168.1.10:9300"
问题 2:多节点启动为独立集群
可能原因:
cluster.name不一致- 未配置
discovery.seed_hosts - 网络不通
解决方案:
# 确保所有节点配置一致
cluster.name: production
# 配置种子节点
discovery.seed_hosts:
- "192.168.1.10:9300"
- "192.168.1.11:9300"
# 配置网络地址
network.host: 0.0.0.0
问题 3:首次启动集群失败
解决方案:
# 首次启动必须配置
discovery.seed_hosts:
- "192.168.1.10:9300"
- "192.168.1.11:9300"
- "192.168.1.12:9300"
cluster.initial_master_nodes:
- "node-1"
- "node-2"
- "node-3"
配置文件位置 #
配置文件(easysearch.yml):
# 开发环境
cluster.name: dev
discovery.type: single-node
# 生产环境
cluster.name: production
discovery.type: zen
discovery.seed_hosts: ["host1", "host2"]
相关配置项 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
discovery.seed_hosts | 种子节点列表 | - |
cluster.name | 集群名称 | easysearch |
network.host | 网络绑定地址 | - |
cluster.initial_master_nodes | 初始主节点 | - |
注意事项 #
- 静态配置:修改发现机制需要重启节点
- 首次启动:新集群首次启动需配置 initial_master_nodes
- 网络要求:Zen 发现要求节点间网络互通
- 集群名称:所有节点的 cluster.name 必须相同
- 生产环境:生产环境必须使用 zen 发现机制





