Size: a a a

2020 October 13

ИЕ

Илья Ермолин... in Tarantool
Илья Ермолин
Приветствую!
Я тоже думал о том как в картридже+vshard организовать обновление конфигурации без простоев - для нас это важно.
Пока у меня мысль движется в стороне подхода аналогичного zelando для PG.
Там ребята ввели слой хранимок и доступ к данным выполняли только через них ( в vshard - это так же).
А для наката релиза создавалась новая схема с именем api_2020_45 ( потом 46  и т.д.) - и в нее загружалась полностью новая версия апи для работы с данными.
После этого обновлялся приклад.
После этого старая версия схема удалялась (когда никто уже ей не пользовался).
При этом изменения между релизами должны быть обратно совместимы на 1-2 релиза назад.

Насколько я понимаю подход - в целом это можно реализовать в vshard'е:
1. Выкатываем обновления на слой хранилищь - создается новый спейс с новыми версиями функций, права доступа и т.д.
2. Выкатываем обновления на роутеры - создаем новый спейс с новыми версиями функций, которые используют новый спейс в хранилищах
3. обновляем (возможно постепенно) приклады - они начинают работать с новой версией API (может нужна доработка на стороне приклада, а может просто имя спецса для вызова функций поменять).

Хотел узнать мнение более близко работающих с этим коллег.
Вопрос в том как такое создание нового спейса удобнее всего запускать в кластере.
В продолжение обсуждения:
В картридже есть ограничение на количество ролей?
В дополнение к описанному выше подходу (или как механизм его обеспечения) - можно было бы:
1. новый релиз объявлять новой ролью.
2. при инициализации роли на хранилищах и роутерах (по порядку) проводить всю необходимую инициализацию.
3. после переключение основного приложение на работу с новыми спейсами ( новой ролью) - выполнять выключение старой роли аналогично.

Пока в этой картинке у меня не получается сами исходники новых ролей раскидать по инстансам, но это я так понимаю можно сделать через глобальный конфиг... хотя и не самая хорошая наверное идея...
Может где-то есть нараотки в этом направлении - был бы очень благодарен.
источник
2020 October 14

v

vpol in Tarantool
А cross-engine транзакции есть в плане?
источник

PL

Pavel Lapaev in Tarantool
источник

MA

Mons Anderson in Tarantool
vpol
А cross-engine транзакции есть в плане?
Да, есть
источник

A

Artyom A in Tarantool
Ребята какую файловую систему выбрать под тарантул? Чтобы lsm быстро работал или это не имеет значение. Ext4 и погнали.
источник

AP

Andrey Privalov in Tarantool
ну желательно ssh в том числе. на hdd может быть печально по перфу
источник

A

Artyom A in Tarantool
Ssd само собой
источник

DS

Dmitry Sharonov in Tarantool
472
Буду пробовать, спасибо
вроде нашли первопричину, был баг в картридже 2.2.0. если у вас он - обновитесь хотя бы до 2.2.1
источник

RM

Roman Moskovskiy in Tarantool
Привет! Может кто подсказать, запускаю на убунте с установленным таранулом (не докер) пример отсюда -> https://github.com/tarantool/http/blob/master/examples/middleware.lua и получаю Error: connect ECONNREFUSED тут адрес впски:8080
источник

RM

Roman Moskovskiy in Tarantool
тарантул говорит, что всё отдает
источник

MA

Mons Anderson in Tarantool
источник

RM

Roman Moskovskiy in Tarantool
спасибо
источник

RM

Roman Moskovskiy in Tarantool
если что, просто запустить сервер на этой же убунте, тот же nginx, он будет виден
источник

RM

Roman Moskovskiy in Tarantool
те проблема не с firewall или что-то такое
источник

DS

Dmitry Sharonov in Tarantool
а если курл с нее же?
источник

4

472 in Tarantool
Dmitry Sharonov
вроде нашли первопричину, был баг в картридже 2.2.0. если у вас он - обновитесь хотя бы до 2.2.1
Про первопричину уже в курсе, проблема изначально была моя, спасибо
источник

YD

Yaroslav Dynnikov in Tarantool
Roman Moskovskiy
Привет! Может кто подсказать, запускаю на убунте с установленным таранулом (не докер) пример отсюда -> https://github.com/tarantool/http/blob/master/examples/middleware.lua и получаю Error: connect ECONNREFUSED тут адрес впски:8080
так там в примере бинд на 127.0.0.1, он только на локалхосту доступен.
Если пытаетесь с другой машины достучаться, ставьте 0.0.0.0
источник

ST

Satbek Turganbayev in Tarantool
Roman Moskovskiy
Привет! Может кто подсказать, запускаю на убунте с установленным таранулом (не докер) пример отсюда -> https://github.com/tarantool/http/blob/master/examples/middleware.lua и получаю Error: connect ECONNREFUSED тут адрес впски:8080
вы в коде примера адрес только меняли?
источник

RM

Roman Moskovskiy in Tarantool
Satbek Turganbayev
вы в коде примера адрес только меняли?
немного не понял, я запускаю tarantool middleware.lua код идентичен тому, что лежит на гите
источник

ST

Satbek Turganbayev in Tarantool
тогда на localhost шлите запрос
источник