LINUX.ORG.RU

Майское обновление ReOpenLDAP — теперь multimaster-кластер требует в разы меньше RAM

 , , ,


0

1

В ReOpenLDAP добавлена поддержка «кворума» при репликации и возможность ограничения syncrepl-сеансов, находящихся в стадии первоначальной синхронизации. В итоге это уменьшает время синхронизации multimaster-кластера при старте, одновременно существенно уменьшая пиковое потребление ресурсов (оперативной памяти и процессорного времени).

Такая синхронизации, или иначе говоря сверка записей в локальной базе с удаленной стороной, происходит всегда для refreshOnly режима и вначале refreshAndPersist. При этом механизм репликации syncrepl формирует и сверяет в памяти списки записей c удаленной стороны (через поставщика syncprov) и записей в локальной базе. Соответственно, именно в этот момент времени можно наблюдать пиковое потребление памяти и процессорного времени.

В кластере, состоящим из нескольких серверов работающих в режиме multi-master репликации, первоначальная синхронизация может одновременно выполняться несколькими экземплярами syncrepl. В этом случае потребление памяти и нагрузка на CPU могут быть в разы (10 и более раз) больше чем при штатной работе.

Проблема усугубляется тем, что при конкурентной первоначальной синхронизации каждый экземпляр syncrepl будет пытаться внести в локальную базу практически идентичные изменения. Соответственно, суммарно только один экземпляр syncrepl отрабатывает эффективно, а остальные просто в холостую, при этом мешая друг-другу. Особо это актуально при подключении к кластеру нового сервера с «пустой» базой.

Наши нагрузочные тесты показывают уменьшение потребление памяти в 2-5 раз и одновременно уменьшение времени синхронизации multimaster-кластера от 3 до 25 раз.

--

ReOpenLDAP — потомок общеизвестного OpenLDAP, но ориентирован на промышленную эксплуатацию в сфере телекоммуникаций (высокие нагрузки, высокая доступность, 24x7). Появился в результате консервативности целей родительского проекта, что выразилось в отказе меинтейнеров Symas Corp принимать изменения улучшающие качество кода и добавление новых возможностей.

Проект реализован силами компании Петер-Сервис R&D, резидента Сколково, для применения в телеком-проектах федерального масштаба.

Актуальная стабильная версия в ветке master на https://github.com/ReOpen/ReOpenLDAP.

Новая «фича» и опции её настройки описаны в русскоязычных man-страницах (пока только в русскоязычных), см. https://github.com/ReOpen/ReOpenLDAP/commit/4d9505532f8ac6f294ae780e33c4f495f...

>>> Проект на github



Проверено: fallout4all ()
Последнее исправление: CYB3R (всего исправлений: 4)

Несколько дополнений к новости

1) Эта последняя версия, которую можно собрать для Windows.

2) Ищется меинтейнер для *BSD платформ, иначе выпилим.

3) Ищется волонтер для обратного перевода man-страниц и популяризацией/продвижением проекта среди англоязычной аудитории.

ly
() автор топика
Ответ на: комментарий от hizel

зачем - это вопрос к мейнтейнеру.

mos ★★☆☆☆
()

ориентирован на промышленную эксплуатацию в сфере телекоммуникаций

забавно, ведь лдап и вышел из промышленных телекомов вроде.

mos ★★☆☆☆
()
Ответ на: комментарий от hizel

Мантейнер одновременно фри-, опен- и нет-бздун? Где такие водятся? И да, зачем он вам, в порты только присунуть?

Пока речь не о «пакетировании» и поддержке портов, а о поддержке сборки и компилируемости исходников под *BSD платформы.

Поясню:

  • В исходном коде достаточно «рюшечек», которые НЕ нужны для Linux. Так как исходный стиль кодирования «не очень», то все эти реверансы требуют внимания и обслуживания при внесении изменений.
  • Требуется либо построить и поддерживать CI-процесс (Continuous Integration, т.е. регулярную сборку и прогон тестов), либо постепенно выпиливать при внесении изменений.
  • Авторы/меинтейнеры исходного OpenLDAP утверждали, что он может быть собран массой компиляторов (в том числе старых) для зоопарка систем. Постепенно выяснилось что это не совсем так...
  • Со своей стороны, мы не видим смысла и не имеем возможности поддерживать подобный зоопарк. Решили отказаться от Windows (уже не поддерживается Devel-веткой) и всяческого хлама, включая «линуксы» старее RHEL6.
  • Поддержку *BSD, включая FreeBSD и OSX, пока выбрасывать жалко. Вот ищем, может кому будет интересно этим заниматься.
ly
() автор топика
Ответ на: комментарий от ly

Вам надо попасть в Дебиан и Федору для того, чтобы привлечь коммунити. Пока о вас никто не знает, а если появятся пакеты, то пойдет шорох. Причем оригинальный проект же имеет пакеты, если вы от него недостаточно далеко отфоркались, то свои можно сделать методом копипасты, ренейма и добавления Conflicts:...

anonymous
()
Ответ на: комментарий от anonymous

Вам надо попасть в Дебиан и Федору для того, чтобы привлечь коммунити. Пока о вас никто не знает, а если появятся пакеты, то пойдет шорох. Причем оригинальный проект же имеет пакеты, если вы от него недостаточно далеко отфоркались, то свои можно сделать методом копипасты, ренейма и добавления Conflicts:...

Пока вопрос выпиливать или НЕ выпиливать FreeBSD и OSX (похоже что выпиливать).

А пакеты - да, неплохо-бы. Сейчас просто не до этого (еще есть issues, которые стоит поправить).

Хотя с пакетами тоже вопрос есть - Делать полный rename или маскироваться под OpenLDAP? Если маскироваться, то конечно Conflicts. Иначе можно поставить оба (reslapd, reslapd.conf и т.д.)

ly
() автор топика
Ответ на: комментарий от ly

Так как исходный стиль кодирования «не очень»

Прошу прощения, а конструктивные претензии у вас есть?

anonymous
()
Ответ на: комментарий от ly

Почитал wiki, вы оказывается там успешная компания, может быть и денешки собираетесь за поддержку freebsd платить? *_*

hizel ★★★★★
()
Ответ на: комментарий от ly

Наверное, полный ренейм лучше, я не знал, что у вас уже бинарники по-другому называются, и, соответственно, конфликтов не будет.

По BSD, по-моему, несколько наивно полагать, что вы на ЛОРе найдете бздунов, которые буду заинтересованы наладить вам CI и смотреть за багами на своей платформе для такого проекта :-) Выпиливать - не выпиливать, ваше дело...

anonymous
()
Ответ на: комментарий от ly

В исходном коде достаточно «рюшечек», которые НЕ нужны для Linux. Так как исходный стиль кодирования «не очень», то все эти реверансы требуют внимания и обслуживания при внесении изменений.

А можно с примерами, каких именно? Чтобы понимать объем возможного тестирования.

kirk_johnson ★☆
()
Ответ на: комментарий от anonymous

Наверное, полный ренейм лучше, я не знал, что у вас уже бинарники по-другому называются, и, соответственно, конфликтов не будет.

Не-не, пока они называются также. Но поменять make-сценарии не вопрос, чуть сложнее все сопутствующее, так чтобы не пропустить...

Но хочется понять как будет лучше перед тем как... С нашими собственными производственными потребностями это никак не связано.

По BSD, по-моему, несколько наивно полагать, что вы на ЛОРе найдете бздунов, которые буду заинтересованы наладить вам CI и смотреть за багами на своей платформе для такого проекта :-) Выпиливать - не выпиливать, ваше дело...

CI у нас уже налажен и CD в процессе. Дальнейшие доработки в этом направлении публично видны не будут, ибо make test уже работает, а добавляться будет тестирование по нашим внутренним сценариям (десятки северов, много-гигабайтные базы плюс внутренний LDAP-софт).

Поставить CI для FreeBSD я могу и сам, но ведь нужно еще и проблемы анализировать и правки вносить. Производственной необходимости в этом нет никакой. Делать для собственного удовлетворения, в надежде что кому-то захочется поюзать ReOpenLDAP под FreeBSD - ну если было-бы нечего делать...

Искать на ЛОР-е не в тему, тут согласен. Так-что будем и в других местах. Выпиливать из исходников пока явно не стану, это тупо тоже требует времени. Пожалуй в списке поддерживаемых платформ оставим только Linux. Если за разумное время кто-то появиться для *BSD, то расширим списочек. Иначе - нафиг, ибо *BSD уже давно не коррелирует с целевой специализацией ReOpenLDAP.

ly
() автор топика
Последнее исправление: ly (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

> В исходном коде достаточно «рюшечек», которые НЕ нужны для Linux. Так как исходный стиль кодирования «не очень», то все эти реверансы требуют внимания и обслуживания при внесении изменений.

А можно с примерами, каких именно? Чтобы понимать объем возможного тестирования.

Всё традиционно. Есть ifdef-ы, есть configure/autorools, есть «слой абстракции» (клей к pthreads и т.д.).

Это всё исторически поддерживает wide range всяческих анахронизмов и ископаемых. Для примера https://gist.github.com/leo-yuriev/ba186a6bf5cf3a27bae7, тут я пытался объять всё исходно-поддерживаемое OpenLDAP.

Позже пришло понимание, что декларация в OpenLDAP поддержки всех wide range - это прежде всего декларация, разработка и тестирование идет только на Linux, а остальное - по прецендентнам. Поэтому после форка OpenLDAP было принято решение: актуальные версии Linux, отказ от старья и Windows, а FreeBSD - под вопросом, см http://pro-ldap.ru/forum/index.php?topic=286.msg711#msg711.

Так вот, у меинтейнера *BSD должна быть своя внутренняя уверенность/убежденность, что такая «хрень» как ReOpenLDAP нужен для FreeBSD, т.е. reasonable. Соответственно, черпать мотивацию меинтейнер должен именно из этого.

Если такая мотивация есть - то git clone, попытка собрать, разрешение проблемы, тесты, патчи и так по кругу. Есть мотивация не пропадает, тогда делаем CI, как именно - пока вопрос «десятый».

ly
() автор топика
Ответ на: комментарий от hizel

Почитал wiki, вы оказывается там успешная компания, может быть и денешки собираетесь за поддержку freebsd платить? *_*

Давайте-ка сразу избавимся от иллюзий.

По стечению обстоятельств Петер-Сервис стал использовать OpenLDAP, я бы сказал вляпался в оное. Год назад был facepalm от количества багов и падений «в корку», а чуть позже и от качества кода. В итоге сотрудники компании, включая меня, дорабатывают «изделие» напильником. Результатом этой доработки компания решила (лицензия не обязывает) поделиться, ради идеи OpenSource, ну и возможного получения «дивидентов» в виде дополнительного тестирования и влияния на собственный имидж.

Это всё. Никакой производственной необходимости, т.е. реального reasonable для самой компании в поддержке чего-либо кроме Linux нет. Платить за это пока никто не собирается.

С другой стороны, угробить что-то (в данном случае поддержку FreeBSD) обычно проще чем сделать. Ну и как-бы жалко выбрасывать то что может кому-то пригодиться.

Поэтому, всё честно и открыто - если будет человек заинтересованный/мотивированный в поддержке *BSD, то Welcome, иначе - извините значит «бобик сдох» и пора закапывать.

ly
() автор топика
Ответ на: комментарий от ly

иначе - извините значит «бобик сдох»

Пони. Дайте паузу, нужно время бздунам раскачаться. Пойду, кстати, им напишу.

hizel ★★★★★
()
Ответ на: комментарий от hizel

Дайте паузу, нужно время бздунам раскачаться. Пойду, кстати, им напишу.

Сейчас я занимаюсь небольшой переделкой LMDB, ибо есть две претензии (№1 и №2 в https://github.com/ReOpen/ReOpenLDAP/issues).

При этом *BSD придется частично выпилить, но после переделок вернуть будет пожалуй даже проще, с расчетом только на актуальные версии (нужен fdatasync и т.д.).

ly
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.