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

配置项作用 #

discovery.type 配置项指定节点使用的集群发现机制类型。发现机制决定节点如何找到其他节点并组成集群。

配置项类型 #

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

默认值 #

zen(Zen 发现机制)

是否必需 #

可选配置项(有默认值)

可选值 #

说明
zenZen 发现机制(默认,适用于多节点集群)
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-nodezen根据需求选择
生产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-nodezen
节点数量11+
高可用
需要配置最少较多
适用场景开发/测试生产

常见问题 #

问题 1:单节点无法扩展为集群

原因: 使用了 discovery.type: single-node

解决方案:

# 修改配置为 zen
discovery.type: zen

# 添加种子节点配置
discovery.seed_hosts:
  - "192.168.1.10:9300"

问题 2:多节点启动为独立集群

可能原因:

  1. cluster.name 不一致
  2. 未配置 discovery.seed_hosts
  3. 网络不通

解决方案:

# 确保所有节点配置一致
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初始主节点-

注意事项 #

  1. 静态配置:修改发现机制需要重启节点
  2. 首次启动:新集群首次启动需配置 initial_master_nodes
  3. 网络要求:Zen 发现要求节点间网络互通
  4. 集群名称:所有节点的 cluster.name 必须相同
  5. 生产环境:生产环境必须使用 zen 发现机制