Нагрузочное тестирование шардированной очереди на базе Tarantool + Cartridge с использованием Pandora + Yandex.Tank
Понадобятся:
- Docker 18.XX+
- Tarantool
- cartridge-cli
- опционально Golang 1.13+
- Если go есть в системе:
go get github.com/tarantool/go-tarantool \ github.com/spf13/afero \ github.com/yandex/pandora GOOS=linux GOARCH=amd64 go build tnt_queue_gun.go
- Если go нет в системе, но есть докер:
./build.sh
$ cd queue-app
$ cartridge build
Для запуска инстансов кластера:
$ cartridge start -d
Конфигурацию кластера выполним скриптом bootstrap.lua:
$ tarantool bootstrap.lua
В случае успеха, по адресу localhost:8081 в браузере будет видная следующая конфигурация кластера:
В терминах sharded-queue экземпляр очереди - труба (tube). Создать ее можно, как через бинарное апи, так и через конфигурацию кластера. Воспользуемся вторым методом.
Перейдем во вкладку code в левом меню веб морды.
В редакторе кода создадим файл tubes.yml
в который поместим конфигурацию интересующей нас очереди:
test-tube:
temporary: false
driver: sharded_queue.drivers.fifo
Остается нажать кнопку Apply и дождаться сообщения об успешном выполнении операции.
$ cd ..
$ docker run -v $(pwd):/var/loadtest \
-v $SSH_AUTH_SOCK:/ssh-agent \
-e SSH_AUTH_SOCK=/ssh-agent \
--net host \
-it direvius/yandex-tank
NOTE Для docker for mac может понадобиться заменить localhost
на алиас host.docker.internal
в файле tnt_queue_load.yaml.
Более детальную информацию про установку и настройку Yandex.Tank можно найти в документации.