面试题答案
一键面试- 发现问题
- 监控报警:通过ElasticSearch自带的监控工具、第三方监控系统(如Prometheus + Grafana)设置的报警规则,当主节点关闭时,会触发相应的报警信息,通知运维或开发人员。
- 业务反馈:业务系统在进行读写操作时遇到异常,如连接超时、请求失败等,开发人员通过排查发现是ElasticSearch集群异常,进而判断可能是主节点问题。
- 确定问题
- 登录节点查看日志:登录ElasticSearch各节点,查看
logs
目录下的日志文件,通过日志中诸如MasterNotDiscoveredException
等相关异常信息,确认主节点已关闭。 - 节点状态检查:使用
curl -XGET 'http://{ES节点IP}:9200/_cluster/health?pretty'
命令查看集群健康状态,若状态为red
且提示number_of_nodes
异常等信息,可进一步佐证主节点问题。
- 登录节点查看日志:登录ElasticSearch各节点,查看
- 临时恢复读写功能
- 等待重新选举(自动恢复):ElasticSearch集群具备自动选举主节点的机制。如果配置了多个候选主节点(
node.master: true
),其他候选主节点会在一定时间内(默认1分钟)自动发起选举。等待选举完成,查看集群健康状态,若变为yellow
或green
,则集群基本读写功能可能已恢复。可通过上述查看集群健康状态的命令确认。 - 手动干预选举(若自动选举失败)
- 检查候选主节点状态:登录各候选主节点,确认节点状态正常,网络连接正常,资源(CPU、内存等)充足。
- 重启候选主节点:如果发现某个候选主节点存在异常(如资源占用过高),可尝试重启该节点。在重启前,确保做好数据备份等相关工作。命令通常为
systemctl restart elasticsearch
(基于systemd管理的系统)。 - 强制选举:在极端情况下,若自动选举和常规操作无法恢复,可通过修改配置文件或使用特定的API强制选举某个节点为主节点。例如,在
elasticsearch.yml
文件中设置cluster.initial_master_nodes
指定初始主节点列表,然后重启集群相关节点,促使选举该指定节点为主节点。但此操作需谨慎,因为不正确的配置可能导致集群不稳定。选举完成后,再次检查集群健康状态,确认读写功能恢复。
- 等待重新选举(自动恢复):ElasticSearch集群具备自动选举主节点的机制。如果配置了多个候选主节点(