shrun

module
v0.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2023 License: MIT

README

ShRun

Установка

Для сборки и использования shrun нужно иметь установленный docker, git, make и go (1.18).

В переменную PATH нужно добавить путь к директории $GOPATH/bin.

Клонируем репозиторий и собираем shrun.

git clone git@github.com:wmentor/shrun.git
cd shrun
make

Для обновления будет необходимо подтянуть изменения из репозитория и сделать make. Важно учитывать тот момент, что после обновления возможно нужно будет также выполнить команды init/build.

Инициализация

shrun init

В конфигурационной директории создает Dockerfile-ы, sdmspec.json, rc.local. В качестве директории по умолчанию используется ~/.shrun (если ее нет, то она будет создана при первом запуске). Для того чтобы поменять директорию по умолчанию нужно задать переменную окружения SHRDM_CONFIG_DIR.

Для получения информации о всех параметрах команды вызовите ее с ключем -h.

Получения необходимых образов докера

shrun pull

В результате будут синхронизованы имеджи для go, ubuntu, postgres.

Сборка образа Shardman

shrun build --build-basic --build-pg --build-gotpc

Для докеров используется каталог ~/build (может быть ссылкой). Если нужно его сменить, то стоит задать переменную окружения SHRDM_DATA_DIR. В build должны быть три каталога: shardman, shardman-utils, go-tpc.

Если не задать ключи --build-basic и --build-pg, то будет только пересобран образ с новой обвязкой на базе последней сборки постгреса.

--build-basic нужен для пересборки всех базовых образов, которые используются для сборки постгреса, но сам постгрес при этом не собирается.

--build-pg указывает на то, что нужно пересобрать постгрес.

--build-gotpc указывает на то, что нужно собрать образ для использования go-tpc.

Обвязка пересобирается при любой конфигурации ключей.

Запуск кластера

shrun start --nodes count [--update|-u] [--force|-f] [--mount-data] [--shell]

Запускает кластер из заданного числа нод (по умолчанию выполняется shardmanctl init + shardmanctl nodes add).

Если ноды не нужно добавлять в кластер, то нужно добавить флаг --skip-node-add.

Собрать следующий кластер можно будет теперь только после остановки (даже если сборка прошла неуспешно). Если добавить опцию --force|-f, то в этой ситуации старый кластер будет остановлен и запущен новый. Если нужно перед запуском пересобрать утилиты, то нужно добавить опцию --update|-u .

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

В случае успешного запуска в build-каталоге будет создана директория /mntdata, которая будет подмонтирована ко всем запущенным контейнерам.

Если добавить флаг --mount-data, в каталоге /pgdata будет создан каталог <container_name>, который будет подмонтирована к каталогу данных Shardman. После остановки через команду stop, этот каталог будет удален.

Запуск дополнительных нод

shrun nodes add -n count [--mount-data]

Поднимает еще заданное число нод Shardman. При этом в кластер они автоматом не добавляются. Команда может быть использована только после shrun start.

Если добавить флаг --mount-data, в каталоге /pgdata будет создан каталог <container_name>, который будет подмонтирована к каталогу данных Shardman. После остановки через команду stop, этот каталог будет удален.

Удаление заданного числа нод Shardman

shrun nodes rm -n count

Удаляет заданное число нод Shardman или всех, если нод меньше чем заданное число. Если все ноды Shardman удалены команда stop не выполняется т.к. еще остаются живые etcd-ноды.

Подключение к конкретное ноде

shrun shell -n node -u user

Коннектится к заданной ноде из-под указанного пользователя (по дефолту используется пользователь postgres и нода shrn1).

Подключение к базе данных на конкретной ноде

shrun psql -n node [-p port]

Коннектится к базе данных на указанной ноде (по дефолту используется нода shrn1). Порт (если не задан через -p), логин и пароль берутся из sdmspec.json в директории конфигов.

Остановка всех нод/сетей

shrun stop

Удаление всех образов и очистка кэша сборки

shrun clean [--force|-f]

Перед очисткой происходит остановка всех нод, а также удаление использованной сети. Если задан флаг --force|-f, то образы удаляются принудительно.

Генерация документации по Shardman

shrun doc

Команда сгенерирует документацию по шардману и напечатает каталог, в который она была сохранена.

Запуск контейнер билдера

shrun gobuilder [--rebuild|-r]

Команда запускает контейнер gobuilder, в котором установлены все необходимые утилиты для сборки shardman-utils и подмонтированы все нужные директории. Если задан флаг --rebuild|-r, то перед запуском будет пересобран образ контейнера.

Запуск нагрузочный тестов через go-tpc

shrun gotpc

Команда запускает контейнер с установленной утилитой go-tpc для проведения нагрузочного тестирования кластера. После поднятия контейнера сразу коннектится к нему и можно использовать утилиту go-tpc. Если задан флаг --rebuild|-r, то перед запуском будет пересобран образ контейнера. Важный момент, перед этой командой должен быть запущен кластер командой start.

Находясь в контейнере, задаем команду чтобы подготовить данные (если у нас есть три ноды shrn1,shrn2,shrn3):

go-tpc tpcc prepare -d postgres -U postgres -p 12345  -D postgres -H shrn1,shrn2,shrn3 -P 5432,5432,5432 \
       --conn-params sslmode=disable --partition-type 5 --warehouses 16 --parts 16 -T 16 --no-check

После подготовки запускаем тест:

go-tpc tpcc run -d postgres -U postgres -p 12345  -D postgres -H shrn1,shrn2,shrn3 -P 5432,5432,5432 \
       --conn-params sslmode=disable --partition-type 5 --warehouses 16 --parts 16 -T 32 --time 10m --ignore-error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL