Выпуск распределенной системы хранения конфигурации etcd 2.1

Проект CoreOS, развивающий основанное на идеях контейнерной изоляции серверное окружение, опубликовал релиз etcd 2.1, высоконадёжного распределённого хранилища параметров конфигурации, задаваемых в форме ключ/значение. Основным назначением etcd является предоставление унифицированного механизма хранения конфигурации и информации о работающих сервисах для изолированных контейнеров с типовой начинкой. Код etcd написан на языке Go и распространяется под лицензией Apache.

Etcd позволяет организовать единое хранилище конфигурации для группы серверов, которое реплицируются на все узлы и поддерживается в синхронизированном состоянии с использованием протокола Raft. Наличие копии данных на всех хостах позволяет исключить потерю конфигурации при выходе из строя отдельного узла. В etcd также могут сохраняться временные данные, для которых предусмотрена возможность определения времени жизни записи. Для доступа к конфигурации предоставляется простой API, основанный на использовании HTTP и JSON, web-интерфейс, утилита etcdctl для работы с хранилищем из командной строки и FUSE-модуль etcd-fs для экспорта хранилища в виде файловой системы.

Для перехода на новую версию подготовлены средства бесшовного обновления, позволяющие заменить etcd 2.0 на etcd 2.1 без остановки работы сервиса. Особенности выпуска etcd 2.1:

  • Реализован API /v2/auth, расширяющий типовой API etcd средствами для аутентификации и авторизации. Данный Auth API даёт возможность управления доступом к группам хранимых ключей на основе задания ролей и владельцев префиксов ключей c аутентификацией через штатные методы HTTP. Поддержка Auth API добавлена в сервер etcd, утилиты командной строки и клиентские привязки;
  • Новый Metrics API, который может применяться для мониторинга и отладки в режиме реального времени. Через данный API можно получить доступ к актуальной статистике, содержащей информацию о работающих с хранилищем клиентах и расходуемых ресурсах;
  • Увеличена стабильность работы в условиях использования ненадёжных каналов связи, в которых наблюдаются провалы пропускной способности и высокие задержки в доставке пакетов. Сокращена интенсивность создания соединений — вместо создания серии единичных соединений для каждой операции, etcd теперь применяет установку долгоживущих соединений с хостами, не разрываемых после каждого запроса. Произведено объединение отправки команд достижения консенсуса между узлами (raft) с индексом коммитов, что позволило увеличить отзывчивость со 100 мс до 1 мс в условиях небольшой нагрузки (менее 100 записей в секунду). Реализация алгоритма raft расширена более качественными средствами контроля потока, что существенно снизило вероятность потери raft-сообщений и увеличено эффективность расходования памяти и ресурсов CPU;
  • Подготовлен фреймворк для функционального тестирования etcd, позволяющий выявить и устранить возможные проблемы, проявляющиеся в условиях высокой нагрузки, и оценить поведение системы при возникновении различных видов сбоев.
  • Реализована система многоуровневых логов, дающая возможность определять степень охвата журналируемых действий через задание уровня ведения лога — от вывода только критичных уведомлений до подробнейшего лога в режиме отладки. Улучшена читаемость информации в логах.

© OpenNet