Добавление распределённой таблицы с удалёнными агентами

Чтобы понять, как добавить распределённую таблицу с удалёнными агентами, важно сначала иметь базовое представление о распределённых таблицах. В этой статье мы сосредоточимся на том, как использовать распределённую таблицу в качестве основы для создания кластера экземпляров Manticore.

Вот пример того, как разделить данные на 4 сервера, каждый из которых обслуживает один из шардов:

‹›
  • ini
ini
📋
table mydist {
          type  = distributed
          agent = box1:9312:shard1
          agent = box2:9312:shard2
          agent = box3:9312:shard3
          agent = box4:9312:shard4
}

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

Теперь, когда мы добавили зеркала, каждый шард находится на 2 серверах. По умолчанию мастер (экземпляр searchd с распределённой таблицей) будет случайным образом выбирать одно из зеркал.

Режим выбора зеркал можно задать с помощью настройки ha_strategy. Помимо режима по умолчанию random, существует также ha_strategy = roundrobin.

Более продвинутые стратегии, основанные на вероятностях с учётом задержек, включают noerrors и nodeads. Они не только исключают зеркала с проблемами, но и отслеживают время отклика и выполняют балансировку. Если зеркало отвечает медленнее (например, из-за выполняющихся на нём операций), оно будет получать меньше запросов. Когда зеркало восстанавливается и обеспечивает лучшее время отклика, оно будет получать больше запросов.

‹›
  • ini
ini
📋
table mydist {
          type  = distributed
          agent = box1:9312|box5:9312:shard1
          agent = box2:9312:|box6:9312:shard2
          agent = box3:9312:|box7:9312:shard3
          agent = box4:9312:|box8:9312:shard4
}
Last modified: August 28, 2025