Shard allocation
Тема дорожной карты · Elasticsearch
Распределение шардов в Elasticsearch — это процесс, посредством которого мастер-узел решает, на каких физических узлах будут размещены основные шарды и реплики кластера, равномерно распределяя данные и нагрузку между доступными узлами. Мастер Elasticsearch непрерывно отслеживает распределение шардов и инициирует перебалансировку при добавлении или удалении узлов, при отказе узла (в этом случае реплики повышаются до основных шардов, а новые реплики создаются на оставшихся узлах) или при изменении настроек распределения. Распределение шардов управляется набором настроек уровня кластера, доступных через PUT /_cluster/settings: cluster.routing.allocation.enable (может отключать распределение в период обслуживания), cluster.routing.allocation.disk.watermark.low (порог использования диска, при достижении которого Elasticsearch прекращает выделять новые шарды на узел) и фильтры на основе атрибутов узлов для маршрутизации с учётом уровней. Когда шарды зависают в состоянии UNASSIGNED, причину можно диагностировать через GET /_cluster/allocation/explain, который возвращает подробное объяснение, почему Elasticsearch не может разместить шард. Ручной перенос или переупорядочивание шардов выполняется через POST /_cluster/reroute с командами для выделения, перемещения или отмены конкретных шардов в ходе обслуживания кластера.
Как это работает
Shard allocation: cluster health (/_cluster/health — green/yellow/red), shard allocation (rebalancing, awareness, exclusion), Snapshot + Restore (на S3, GCS, MinIO, NFS) для бэкапов, Cross-cluster Search (query нескольких кластеров), Hot-Warm-Cold tiered архитектура (свежие данные на fast SSD, старые на cheap HDD/object store). На масштабе ES Frozen tier + searchable snapshots позволяют держать месяцы логов по cloud-storage ценам.
Когда применять
Snapshots с первого дня — backup ваш единственный выход из data corruption. Rack/zone awareness для HA — shards на multiple failure domains. Мониторьте pending_tasks — растущая очередь = master перегружен. Для long-retention logs — tiered storage (hot/warm/cold), цена — доля от all-SSD.
Типичные ошибки
Ловушки Shard allocation: нет snapshot стратегии (один плохой диск = данных нет); cluster split-brain (избегайте: 3+ master ноды, quorum-based); игнор yellow health (один rolling restart делает red); вручную двигают shards (кластер rebalance обратно, если не excluded).