- Для скриптов: git, rsync
- Для демона: snappy, zlib, bzip2, lz4, zstandard
- boost, rocksdb и прочее линкуется статически
Сама RocksDB скомпилирована статически, но библиотеки сжатия которые она использует, динамически. Краткая инструкция по установке зависимостей для Ubuntu:
- Install snappy. This is usually as easy as:
- sudo apt-get install libsnappy-dev.
- Install zlib. Try: sudo apt-get install zlib1g-dev.
- Install bzip2: sudo apt-get install libbz2-dev.
- Install lz4: sudo apt-get install liblz4-dev.
- Install zstandard: sudo apt-get install libzstd-dev.
- Убедитесь что существуют каталоги с правами wwwrun
- /logs
- /monamour
- /usr/monamour/prefixdb
- Есть права для запуска под wwwrun
Далее скачиваем скрипт деплоя в /usr/monamour/prefixdb
cd /usr/monamour/prefixdb
sudo -u wwwrun wget http://github.lan/cpp/cmake-ci/raw/master/scripts/deploy.sh
sudo -u wwwrun chmod +x deploy.shВажно! Скрипты деплоя и запуска корректно работают только в папке /usr/monamour/prefixdb (не prefixdbd или еще как)
Далее запускаем ./deploy.sh с указанием проекта, типа сборки и конфигурации.
- Имя проекта без суффикса
d, т.е. prefixdb, а не prefixdbd - Доступные сборки (всегда актуальные, собираться автоматически):
- release - основной тип сборки для деплоя в продакшн из master ветки
- pre-release - как release, но с отладочной информацией
- devel - тоже что и pre-release, но из ветки devel
- wip - Debug сборка из текущей ветки разработки
- Дополнительные сборки (формируются пушем в соответствующий бранч)
- hotfix - для временного срочного вывода в прод критических исправлений, которые еще не попали в мастер
- probe - релизная версия для тестирования
- draft - debug версия для тестирования
- Доступные конфигурации размещаються в отдельном репозитарии конфигураций и, как правило, соответствует имени хоста, для которого предназначена, но не обязательно. Там же могут находиться вспомогательные скрипты
Например для master5-deb нам подойдет конфигурация master5, тогда:
./deploy.sh prefixdb release master5В результате в текущую папку будут скачены бинарник, конфигурации и скрипты запуска. Если нужной конфигурации для конкретного хоста нет, то будут скачены конфигурации по умолчанию.
Срипт ./deploy.sh забирает исполняемые файлы со сборочного хоста repobuild3:/monamour/prefixdb/, а конфигурацию из git
репозитария gitlab.mamba.ru/cpp-conf/prefixdbd (сначала он забирает все файлы из корня, а потом заменяет их файлами из
поддиректории master5 или другой указанной третьим параметром, если существует). В корне cpp-conf/prefixdbd лежат универсальные
файлы конфигураций и дополнительные скрипты, а в поддиректориях специфичные для конкретной виртуалки версии конфигураций.
prefixdb.conf- конфигурация демона prefixdb в формате JSON (без поддержки репликации)prefixdb.ini- конфигурация самой rocksdb в формате INI для prefixdb.conf. Путь к этому файлу, соответственно, указан вprefixdb.confprefixdb.sh- скрипт запуска демона с конфигурациейprefixdb.confmaster.conf,master.ini,master.sh- соответственно для мастераslave.conf,slave.ini,slave.sh- соответственно для слейваmaster-slave.conf,master-slave.ini,master-slave.sh- подключен как слейв, но может работать мастером
Для полного обновления уже работающего демона (смотрим в топе какая конфигурация запущена):
./prefixdb.sh stop
# или ./master.sh stop
# или ./slave.sh stop
# или ./master-slave.sh stop
# или killall prefixdbd и ждем когда завершатся все процессы
# ожидаем остановку prefixdbd
./deploy.sh prefixdb release master5
./prefixdb.sh start
# или ./master.sh start
# или ./slave.sh start
# или ./master-slave.sh startВнимание! При обновлении файлы также обновятся файлы конфигураций! Перед обновлением будет сделана резервная копия, например в:
/usr/monamour/.backups/prefixdb-20210302_182136Для обновления только бинарников:
./deploy.sh --bin prefixdb releaseДля обновления только конфигов:
# Внимание! Здесь резервная копия конфигов не делается
./deploy.sh --conf master5Важно! master должен быть правильно настроен для поддержки репликации, т.е. должен быть запущен с конфигурацией
master.conf или master-slave.conf. Если демон, которому вы планируете подключить слейв запущен с конфигурацией
prefixdb.conf, то вероятно для него убрали поддержку репликации из-за проблем с производительностью. Его можно
перезапустить в режиме мастера, но необходимо убедиться что он справляется с нагрузкой.
Важно! Старые инстансы могут не соответствовать описанному здесь регламенту, а также никто не запрещает
внесение изменений в конфигурацию так, что она перестанет ему соответствовать (например отключить поддержу репликации
в файле master.conf). Это нужно учитывать и действовать по обстоятельствам.
См. конфигурация
Для равертывания нового slave делаем все как в предыдущем разделе:
./deploy.sh prefixdb release slave5Важно! После обновления конфигурации открываем на редактирование slave.conf и вносим изменения в поле addr
в секции client-tcp (обычно он в самом конце файла):
"client-tcp": [
{
"name": "client-tcp1",
"startup_priority":-500,
"addr": "", /* <- здесь нужно указать имя хоста (или ip) мастера */
"port": "23002",
"connect_count":5,
"threads":1
}
]Важно! Пока еще есть бардак со старыми инстансами в регламенте открытых портов. На данный момент инстансы работающие на виртуалках с суффиксом 'n' в имени (например mastern5) соответствует регламенту и для слейва открывает порт 23002. Для более древних виртуалок (например master1) порт для слейва нужно смотреть в конфиге и указать его в client-tcp конфига слейва.
Далее нужно залить актуальные данные с мастера. Более подробную информацию смотри в как работает репликация