есть следующая топология реализованная тарантулами и мне нужно перейти на катридж:
1) Роутер
2) Репликасеты с функциональностью A отмасштабированные
3) Репликасет с функциональностью B
Вопросы:
1) как мне строить взаимодействие с репликасетами группы A через роутер, я правильно понимаю что это делается как то так :
local router_role = cartridge.service_get('vshard-router')
local default_router = router_role.get()
Или все таки можно написать обращение к роли с вычисленным bucket_id , что то на подобие cartridge.rpc_call ?
Оформление роли всегда предполагает помещение функции роли в таблицу return или я просто расшарю свою таблицу , которая будет доступна на прямую при вызовах vshard.router.call ?
Интересует скажем так best practice
2) Обращение к не шардированной функциональности B из любой ноды кластера делать через cartridge.rpc_call ?
3) При добавление новых нод в кластер (ноды запускаем на разных физически машинах), кодовую базу ролей нужно отдельно от катриджа разливать ?
4) Если ноды кластера находятся физически на разных машинах , то перед стартом катриджа эти ноды нужно предварительно поднять , т.е по верх катриджа нужен еще например ansible ?
5) Как разливать настройки ролей по кластеру аналогично веб морде или нужно использовать config_patch_clusterwide ?
привет! > через роутер, я правильно понимаю что это делается как то так да, правильно > Оформление роли всегда предполагает помещение функции роли в таблицу return или я просто расшарю свою таблицу , которая будет доступна на прямую при вызовах можно и так и так, в саму роль функцию добавлять необходимо только для rpc_call >Обращение к не шардированной функциональности B из любой ноды кластера делать через cartridge.rpc_call да > При добавление новых нод в кластер (ноды запускаем на разных физически машинах), кодовую базу ролей нужно отдельно от катриджа разливать ? нет, они разливаются единым пакетом, со все и собранными зависимостями > Если ноды кластера находятся физически на разных машинах , то перед стартом катриджа эти ноды нужно предварительно поднять , т.е по верх катриджа нужен еще например ansible ? да > Как разливать настройки ролей по кластеру аналогично веб морде или нужно использовать config_patch_clusterwide ? Да, аналогично веб-морде. но бывает и через patch_clustterwide - если для смены конфига пишется какой-то кастомный апи (пример можно посомтреть в sharded-queue например)
>нет, они разливаются единым пакетом, со все и собранными зависимостями если мне нужно обновить кодовую базу , допустим одну роль ? >Да, аналогично веб-морде. но бывает и через patch_clustterwide - если для смены конфига пишется какой-то кастомный апи (пример можно посомтреть в sharded-queue например) чем заменить веб морду при разливке конфига , есть ли пример ?
> если мне нужно обновить кодовую базу , допустим одну роль ? да, все равно. есть альтернатива - куски кода можно грузить через конфиг (он может включать луа-файлы). тогда их можно будет обновлять через обновление конфига - но обработку такого кода надо будет описать в роли. а, и плюс теперь еще хотрелоад кода ролей есть - т е можно разлить обнову кода ролей и применить ее без рестартов > чем заменить веб морду при разливке конфига , есть ли пример ? есть просто хттп-ендпоинт /admin/config например. веб-морда его и использует, можно прямо в ней и подсмотреть (в консоли браузера). ансибл кажется использует луа-апи, но тут навскидку не помню, надо по сорцам смотреть
Обсуждают сегодня