集群管理
1
集群架构设计
生产环境推荐的最小集群配置
# 推荐的最小生产集群配置 ## 专用主节点(3个) - 仅作为master角色 - 不存储数据 - 不处理搜索请求 - 防止脑裂,建议奇数个 ## 数据节点(2+个) - 仅作为data角色 - 存储数据分片 - 执行搜索和聚合 - 需要大内存和磁盘 ## 协调节点(可选) - 仅作为coordinating角色 - 接收客户端请求 - 分发到数据节点 - 聚合返回结果 # 节点角色配置示例 node.roles: [master] # 专用主节点 node.roles: [data] # 数据节点 node.roles: [data, ingest] # 数据+摄取节点 node.roles: [master, data] # 主节点+数据节点(不推荐) node.roles: [] # 仅协调节点
2
集群配置示例
# 主节点配置(master-1)
cluster.name: my-cluster
node.name: master-1
node.roles: [master]
network.host: 192.168.1.10
http.port: 9200
discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
cluster.initial_master_nodes: ["master-1", "master-2", "master-3"]
# 数据节点配置(data-1)
cluster.name: my-cluster
node.name: data-1
node.roles: [data]
network.host: 192.168.1.20
http.port: 9200
discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
# 集群设置
# 最小主节点数(防止脑裂)
PUT /_cluster/settings
{
"persistent": {
"discovery.zen.minimum_master_nodes": 2
}
}
3
集群监控命令
# 集群健康状态 GET /_cluster/health?pretty # 详细集群状态 GET /_cluster/health?level=indices&pretty GET /_cluster/health?level=shards&pretty # 集群统计 GET /_cluster/stats?pretty # 节点信息 GET /_cat/nodes?v GET /_nodes/stats # 分片分配情况 GET /_cat/shards?v GET /_cat/allocation?v # 集群任务 GET /_cluster/pending_tasks # 集群设置 GET /_cluster/settings?include_defaults=true&pretty
4
分片管理
# 创建索引时指定分片数
PUT /my_index
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
}
}
# 修改副本数
PUT /my_index/_settings
{
"number_of_replicas": 2
}
# 分片分配控制
PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "primaries"
}
}
# 重新分配分片
POST /_cluster/reroute
{
"commands": [
{
"move": {
"index": "my_index",
"shard": 0,
"from_node": "node1",
"to_node": "node2"
}
}
]
}
# 强制重新分配
POST /_cluster/reroute?retry_failed=true
分片建议
- 避免频繁刷盘,适当增大索引缓冲区
- 单个分片大小控制在10-50GB
- 每个节点分片数不超过20个/GB堆内存
- 主分片数创建后不可修改
5
快照与恢复
# 注册快照仓库
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/mount/backup",
"compress": true
}
}
# 创建快照
PUT /_snapshot/my_backup/snapshot_1
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false
}
# 查看快照
GET /_snapshot/my_backup/_all
# 恢复快照
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
# 删除快照
DELETE /_snapshot/my_backup/snapshot_1
集群安全建议
- 启用X-Pack安全功能,配置TLS加密
- 设置强密码,定期更换
- 配置防火墙,限制9200/9300端口访问
- 定期备份快照到远程存储
- 监控集群健康状态,设置告警