масштабируемый sphinx кластер. вячеслав крюков. зал 1

20
Масштабируемый Sphinx кластер Вячеслав Крюков Ivinco.com

Upload: rit2011

Post on 29-Nov-2014

2.566 views

Category:

Documents


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Масштабируемый Sphinx кластер

Вячеслав КрюковIvinco.com

Page 2: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Sphinx кластер для проекта BoardReader.COM• Поисковый сервис по форумам, социальным сетям и медиа

данным• Более 30 серверов• Более 15 млрд. проиндексированных документов• Более 5 TB данных в индексах (постов форумов и блогов,

новостей, изображений, ссылок)• Более 10 млн. запросов в сутки, в пике 500 тыс. запросов в час

Page 3: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Масштабируемость Sphinx кластера• Scale Up

Распределение данных по нескольким инстансам searchd (нодам) на одном сервере. Апгрейд сервера

• Scale OutРаспределение данных по нескольким серверам. Добавление новых серверов

• До 2^64 документов на кластер

Page 4: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Дистрибутивные индексы Sphinx• Инструмент масштабирования кластера• Распределение запросов по нескольким индексам на локальных и

удаленных нодах• Мерж результатов, удаление дубликатов• Инкрементация данных

Page 5: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Архитектура ноды Sphinx кластера

Page 6: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Архитектура Sphinx кластера

Page 7: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Конфигурация Sphinx кластера• Запрос к кластеру транслируется через Sphinx forwarder к

конечным нодам• Утилизация ресурсов многодисковых и многоядерных серверов

через настройку многопоточности searchd или нескольких нод на одном сервере (Sphinx nodes)

• 4 ступени инкрементации данных – Full, 3 Months, Week, Inc и соотв. им конечные индексы

Page 8: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Конфигурация Sphinx кластера• Схема распределения данных кластера - привязка индексируемых

данных к списку серверов и агентов с параметрами соединения и конечными индексами

• Сохранение состояния индексации для стыковки между ступенями инкрементации данных

• Интерпретируемый конфигурационный файл• Обновление конфигурационных данных

Page 9: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Обновление и инкрементация данных• Инкрементация данных каждые 5мин, сутки, неделю, месяц для

соотв. ступеней Inc , Week, 3 Months, Full• Запас места на диске для переиндексации до 50-70%• Перезаливка существующих данных, killlist's• Изменение атрибутов записей в индексах• Механизм очередей• Режим обслуживания БД MySQL с индексируемыми данными• Мержинг индексов вместо переиндексации

Page 10: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Проблемы производительности• Ухудшение производительности отдельной ноды сказывается на

всем кластере• Нехватка пропускной способности дисков, ресурсов памяти –

активно используется Swap, CPU (встречается реже)

Page 11: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Оценка производительности

avg(t): 0.32 secstd(t): 1.08 secКол-во запросов: 11828803t — время выполнения Sphinx запроса

Page 12: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Оценка производительности

Page 13: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Оптимизация конфигурации Sphinx кластера• Цель – получить лучшую производительность кластера на текущих

ресурсах• Уменьшение затрат на процесс индексации и сторонние задачи

(все, что кроме searchd)• Выбор оптимального количества ступеней инкрементации данных• Оптимизация размера и количества атрибутов• Перебалансировка данных

Page 14: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Оптимизация Sphinx запросов• Цель – выполнить Sphinx запрос меньшими ресурсами• Multi-queries• 10 web запросов – 1 Sphinx запрос• Автоматизация переключения запроса на индекс меньшего

размера или на нужную ноду

Page 15: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Когда исчерпаны текущие ресурсы

Добавляем новые серверы, делаем балансировку - если растет кол-во данных или используем межнодовую репликацию - если растет кол-во запросов

Page 16: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Балансировка Sphinx кластера• Причина – ухудшение производительности• Ухудшение производительности отдельных нод кластера• Добавление новых серверов в кластер• Оценка объема индексируемых данных и перерасчет их

распределения в кластере• Учет неравнозначности ресурсов отдельных серверов• Переиндексация индексов, затрагиваемых перебалансировкой• Целостность процесса балансировки

Page 17: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Дополнительные меры• Кеширование• Резервное копирование индексов Sphinx• Логи производительности и ошибок• Мониторинг, система оповещения - nagios, Zabbix• Автоматизация операций администрирования• Тестирование изменений конфигурации кластера

Page 18: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Перспективные Sphinx фитчи• RT индексы• Изменение атрибутов записей в индексах по условию• MySql – Sphinx репликация – в работе • Встроенная в Sphinx межнодовая репликация – в планах

Page 19: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Поздравляем Андрея Аксенова и его команду с выходом книги - "Introduction to Search with Sphinx" в

издательстве O'Reilly!

Page 20: масштабируемый Sphinx кластер. вячеслав крюков. зал 1

Спасибо за внимание!Вопросы?

[email protected]/services/www.ivinco.com/software/

www.ivinco.com/blog/