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

配置项作用 #

cluster.name 配置项定义 Easysearch 集群的唯一名称。只有集群名称相同的节点才能组成同一个集群。

配置项类型 #

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

默认值 #

easysearch

是否必需 #

可选配置项(但强烈建议为每个集群设置明确的名称)

命名规则 #

  1. 不能为空
  2. 不能包含冒号(:)
  3. 建议使用有意义的名称

工作原理 #

┌─────────────────────────────────────────────────────────┐
│                    节点发现过程                          │
└─────────────────────────────────────────────────────────┘
    节点A                    节点B                    节点C
cluster.name: prod      cluster.name: prod      cluster.name: dev
        │                       │                       │
        └───────────┬───────────┘                       │
                    │                                   │
            cluster.name 相同                        cluster.name 不同
                    │                                   │
                    ▼                                   ▼
              组成同一集群                          独立集群
              "prod"                                "dev"

使用示例 #

# 开发环境
cluster.name: dev-cluster

# 测试环境
cluster.name: test-cluster

# 生产环境
cluster.name: prod-cluster

# 多数据中心
cluster.name: prod-dc1
cluster.name: prod-dc2

推荐设置建议 #

为每个环境设置不同的集群名称:

环境推荐名称说明
开发dev-clusterdev-{项目名}开发环境专用
测试test-clustertest-{项目名}测试环境专用
预发布staging-clusterstaging-{项目名}预发布环境
生产prod-clusterprod-{项目名}生产环境专用

多数据中心部署:

# 数据中心 1
cluster.name: prod-dc1

# 数据中心 2
cluster.name: prod-dc2

命名最佳实践:

  1. 使用有意义的名称:反映环境、用途或位置
  2. 保持简洁:避免过长或复杂的名称
  3. 使用小写:避免大小写混淆
  4. 使用连字符:提高可读性
  5. 避免特殊字符:只使用字母、数字和连字符

集群隔离 #

使用不同的集群名称可以隔离不同的集群:

网络环境:同一网段
├── 192.168.1.10 (dev-cluster)  ← 开发集群
├── 192.168.1.11 (dev-cluster)
├── 192.168.1.20 (test-cluster) ← 测试集群
├── 192.168.1.21 (test-cluster)
├── 192.168.1.30 (prod-cluster) ← 生产集群
└── 192.168.1.31 (prod-cluster)

即使节点在同一网络中,不同的集群名称也能确保它们组成独立的集群。

安全考虑 #

集群名称验证:

传输层会验证集群名称以防止节点加入错误的集群:

# 客户端配置
cluster.name: prod-cluster

# 如果尝试连接到 cluster.name: test-cluster 的集群
# 将因集群名称不匹配而被拒绝

配置位置 #

配置文件(easysearch.yml):

cluster.name: my-production-cluster

命令行:

./bin/easysearch -Ecluster.name=my-cluster

环境变量:

export ES_JAVA_OPTS="-Ecluster.name=my-cluster"

查看集群名称 #

# 通过 API 查看当前集群名称
GET /

# 响应
{
  "name" : "node-1",
  "cluster_name" : "my-cluster",
  ...
}

# 通过 API 查看所有节点的集群信息
GET /_cat/nodes?v

常见问题 #

问题 1:节点无法组成集群

检查各节点的 cluster.name 是否一致:

# 查看每个节点的配置
GET /_nodes/settings?filter_path=**.cluster.name

问题 2:误加入其他集群

确保生产、测试等环境的集群名称不同,避免节点加入错误的集群。

问题 3:集群名称包含冒号

[cluster.name] must not contain ':'

解决方案:使用连字符或下划线替代冒号。

相关配置项 #

配置项作用默认值
node.name节点名称机器名随机部分
discovery.seed_hosts种子节点地址-
cluster.initial_master_nodes初始主节点列表-
client.transport.ignore_cluster_name是否忽略集群名称验证false

注意事项 #

  1. 静态配置:修改集群名称需要重启节点
  2. 生产环境:务必为生产集群设置独特且明确的名称
  3. 环境隔离:使用不同的集群名称隔离不同环境
  4. 命名规范:制定并遵守集群命名规范
  5. 验证连接:使用 client.transport.ignore_cluster_name: false 确保连接到正确的集群