Какие шаги нужно предпринять для устранения проблемы со статусом «red» в кластере OpenSearch?

Здравствуйте! <br/> <br/> Я создал кластер Opensearch, состоящий из трех узлов: две дата-узла и один кластерный менеджер. <br/> <pre><code>ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role node.roles      cluster_manager name
10.220.101.40           18          93   0    0.03    0.07     0.03 di        data,ingest     -               opensearch-d1
10.220.101.7            58          95   0    0.05    0.07     0.02 m         cluster_manager *               opensearch-cluster_manager
10.220.101.41           30          93   0    0.19    0.29     0.24 di        data,ingest     -               opensearch-d2</code></pre> <br/> <br/> Однако статус моего кластера отображается как "red". <br/> <br/> <pre><code>{
  "cluster_name": "graylog",
  "status": "red",
  "timed_out": false,
  "number_of_nodes": 3,
  "number_of_data_nodes": 2,
  "discovered_master": true,
  "discovered_cluster_manager": true,
  "active_primary_shards": 0,
  "active_shards": 0,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 10,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 0.0
}</code></pre> <br/> <br/> Привожу конфигурации трех узлов. <br/> <br/> Конфигурация кластерного менеджера: <br/> <pre><code>cluster.name: graylog
node.name: opensearch-cluster_manager
node.roles: [ cluster_manager ]
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
network.host: 10.220.101.7            
discovery.seed_hosts: ["10.220.101.40", "10.220.101.7", "10.220.101.41"]
cluster.initial_cluster_manager_nodes: ["opensearch-cluster_manager", "opensearch-d1", "opensearch-d2"]
plugins
  • 20 октября 2024 г. 12:32
Ответы на вопрос 3
Ситуация, когда статус кластера OpenSearch отображается как "red", означает, что в кластере отсутствуют активные первичные (primary) шары, и это может быть вызвано несколькими причинами. Давайте рассмотрим шаги, которые можно предпринять для устранения этой проблемы:

### 1. Проверьте конфигурацию

Убедитесь, что все узлы правильно настроены и могут обнаруживать друг друга. Проверьте следующие параметры в конфигурации:

- **discovery.seed_hosts**: должен содержать IP-адреса всех узлов.
- **cluster.initial_cluster_manager_nodes**: должен содержать имена узлов, которые могут стать менеджерами кластера. 

### 2. Проверка состояния узлов

Убедитесь, что все узлы находятся в состоянии **green** или **yellow**, и что они правильно подключены к кластеру. Используйте команду:

```bash
GET _cat/nodes?v
```

Это даст вам информацию о состоянии каждого узла.

### 3. Проверьте логи

Проверьте логи OpenSearch на каждом узле, чтобы обнаружить какие-либо сообщения об ошибках. Лог-файлы должны находиться в `/var/log/opensearch`. Это может помочь определить причины, по которым шары не могут быть выделены.

### 4. Убедитесь, что нет проблем с памятью и диском

Проверьте, достаточно ли памяти и свободного места на дисках на всех узлах. Учитывая, что память на узлах близка к 95%, это может быть проблемой.

### 5. Создание индексов и шардов

Если у вас еще нет индексов, необходимо создать хотя бы один индекс, чтобы шары могли быть распределены. Попробуйте:

```bash
PUT /my_index
```

Это создаст индекс, и OpenSearch попытается распределить первичные шары.

### 6. Проверка конфигурации индекса

Если индексы существуют, проверьте их состояние:

```bash
GET _cat/indices?v
```

Посмотрите, присутствуют ли какие-либо ошибки, связанные с неправильной настройкой индексации.

### 7. Принудительное распределение шардов (при необходимости)

Если шары по-прежнему не могут быть назначены, вы можете попробовать использовать API для принудительного изменения состояния шардов:

```bash
POST /_cluster/reroute
{
  "commands": [
    {
      "allocate": {
        "index": "my_index",
        "shard": 0,
        "node": "opensearch-d1"
      }
    }
  ]
}
```

### 8. Перезапуск узлов (как крайняя мера)

Если вы предприняли все предыдущие шаги и ничего не помогло, вы можете попробовать перезапустить узлы.

### 9. Поднимите приоритет кластера

Оптимизируйте настройки конфигурации и узлов в зависимости от нагрузки кластера, чтобы убедиться, что они могут справляться с предоставляемыми задачами.

### 10. Обратитесь к документации

Если ни один из шагов не помог, обратитесь к [документации OpenSearch](https://opensearch.org/docs/latest/) или сообществу для получения более специфичных советов.

Следуйте этим шагам, и это должно помочь вам диагностировать и устранить причину проблемы со статусом «red» в вашем OpenSearch-кластере.
Упал один из узлов с данными. 
"unassigned_shards": 10,

Нужно смотреть на логи самого OS на том узле, что упал, чтобы знать причину сбоя. Возможно, закончилось место на диске.
OpenSearch на AWS или on premise?
on premise
Похожие вопросы