Настройка Zepto в качестве системы хранения
Zepto может быть установлен в Системе в обычном режиме резервирования (X2) или с использованием кодов избыточности (X1.09 или X1.75).
Использование кодов избыточности, или Erasure Coding (далее по тексту — EC), — способ хранения данных, при котором к пользовательским данным генерируются избыточные данные. Это позволяет хранилищу восстанавливать данные в случае частичного отказа оборудования или потери данных.
Для установки VK Object Storage с использованием Zepto в качестве системы хранения выберите соответствующий шаблон inventory и включите функциональность Zepto.
Для установки с Zepto используйте пример inventory.yml:
$ cp /deploy/installer/examples/inventory.mono.zepto.yml /deploy/installer/inventory.yml
Заполните в inventory.yml группы:
zepto:hosts:mono01:mono02:mono03:
Здесь zepto — группа, определяющая узлы, на которых будут запущены сервисы Zepto.
После подготовки inventory.yml включите функциональность Zepto в /deploy/installer/group_vars/all/features.yml:
-
Установите значение параметра:
zepto: true -
Проверьте параметры Zepto в
/deploy/installer/group_vars/zepto/. В файлеcluster.ymlдолжен быть выбран режим хранения:Режим X2Режим X1.09Режим X1.75zepto_mode: x2
Параметры дисков для Zepto задаются в файле cluster.yml. Диски должны соответствовать фактическим блочным устройствам, подключенным к серверам группы Zepto.
В режиме использования EC Zepto использует два кластера дисков:
- Транзитный — кластер, на который изначально записываются все поступающие данные. Работает в режиме X3.
- EC — кластер, в который данные конвертируются в фоновом режиме с расчетом избыточности.
Фоновая конвертация в EC выполняется отдельно, так как расчет EC является ресурсоемкой операцией.
Общий случай распределения дисков для установки на трех серверах описывается в файле групповых переменных /deploy/installer/group_vars/zepto/cluster.yml.
Для более гибкой настройки значения zepto_cluster_config можно задавать на уровне отдельных хостов или групп хостов в inventory.yml. Это удобно, если разные серверы Zepto используют разные наборы дисков или выполняют разные роли в схеме хранения.
zepto:hosts:zepto-host-0[1:3]:zepto_cluster_config:x2:disks:- "/dev/vdb"- "/dev/vdc"
Перед запуском установки убедитесь, что указанные блочные устройства существуют на соответствующих серверах и не используются другими сервисами.
В текущей версии не поддерживается пользовательская разбивка дисков внутри Zepto-кластера. Диски, используемые в одной схеме хранения, должны быть одинаковой емкости.
Для работы кластеров Zepto требуется количество дисков, кратное определенному числу:
- Для режима резервирования X2 общее количество дисков на всех узлах должно быть кратно двум, например по два диска на трех узлах.
- Для транзитного кластера общее количество дисков на всех узлах должно быть кратно трем, например по одному диску на трех узлах.
- Для кластера EC в режиме X1.75 общее количество дисков должно быть кратно 21, например по семь дисков на трех узлах.
- Для кластера EC в режиме X1.09 общее количество дисков должно быть кратно 24, например по восемь дисков на трех узлах.
Дополнительно проверьте параметры бакетов Zepto в файле /deploy/installer/group_vars/zepto/main.yml.
В файле задаются следующие параметры:
zepto_bucket_size: базовый размер бакета Zepto.zepto_bucket_max_size: максимальный размер бакета.zepto_writable_buckets: количество бакетов, доступных для записи.
Значения этих параметров должны быть подобраны под размер установки, объем дисков и ожидаемую нагрузку. Перед запуском установки убедитесь, что параметры соответствуют выбранной схеме хранения (X1.09 или X1.75) и фактической конфигурации дисков.
После подготовки inventory.yml и включения параметра zepto в значение true установка выполняется стандартной командой:
sudo -E ~/distrib/01_deploy_helper.sh ansible-playbook -i inventory.yml -e @ansible-vault.yml vk.s3.install
Если установка выполняется с использованием Ansible Vault, дополнительно передайте файлы vault и vault-transit так же, как при обычной установке с шифрованием.