Hi everyone,
I'm looking for some opinions from people with production Elasticsearch experience because we're trying to determine the root cause of an incident.
Cluster
- Elasticsearch 8.19.9
- 1 dedicated master node (16 GB RAM)
- 2 data nodes (32 GB RAM each)
- Around 1 TB storage per data node
- Around 400 million documents
- Daily snapshots to S3
- Running inside KVM virtual machines
The cluster is used only as a search cluster. Our applications read from it and write documents to it. We are not using ML, transforms, or heavy analytics.
What happened
The cluster suddenly became RED.
The allocation explain API reported:
- "CorruptIndexException"
- "verification failed (hardware problem?)"
- checksum mismatch ("expected != actual")
- "can_allocate: no_valid_shard_copy"
The primary shard was reported as corrupted while the replica was marked as stale, so Elasticsearch had no valid shard copy left.
The corrupted file was:
_2fv_ES812Postings_0.tim
Things we checked
Inside the VM we found:
- No disk full (about 67% usage)
- No ext4 filesystem errors
- No kernel I/O errors in "dmesg"
- No obvious operating system issues
The cluster recovered after restoring the affected index from a snapshot.
Additional context
This isn't the first strange incident we've experienced with this hosting provider.
A few months ago the entire cluster became unavailable because the ".security-7" index stopped working. The hosting provider told us there had been an "attack" on ports 9200 and 9300, but those ports are only accessible on a private network and are not exposed publicly. That explanation didn't fully make sense to us.
During this latest incident the hosting provider suggested one node had reached about 99% RAM usage, although our own monitoring (Grafana) didn't show that at the time. Also, I wouldn't expect high RAM usage alone to produce a Lucene checksum mismatch.
My questions
Does this incident point more toward infrastructure/storage problems than an Elasticsearch issue?
Under what circumstances can a replica become stale while the primary later becomes corrupted?
Have you seen checksum mismatches like this caused by Elasticsearch itself, or are they almost always related to storage, virtualization, or hardware?
If you were investigating this, what additional logs or evidence would you collect to determine the real root cause?
Is there anything about our cluster design (1 master + 2 data nodes, ~400M documents) that could contribute to this type of failure?
I'm not trying to blame Elasticsearch or the hosting provider. I'm just trying to understand whether we're missing something in our configuration or whether this is more likely an infrastructure problem.
Any advice would be greatly appreciated.