LINUX.ORG.RU
ФорумAdmin

soft restart сервиса на node

 , ,


0

1

Есть у меня на node сервер websocket. Хочу его перезагружать, но чтобы подключенные клиенты не сбрасывались. Типа как ngix reload. Размышляю так: нужно сначала убирать listen на порту и...продолжать работу сервера? До тех пор пока последний клиент не отключился? Как снимать listen не знаю, сервер при этом отрубает всех клиентов. Какие размышления будут?

★★★★

Надо перед нодой ставить какой-нибудь балансировщик и им рулить. Когда надо ребутнуть сервак сперва стартуешь второй и новые подключения перекидываешь на него. Ждешь когда старые клиенты доработают и гасишь первый сервак.

crutch_master ★★★★★ ()
Ответ на: комментарий от gobot

Так порт же занят?

Запускай на другом. Какая разница? Над ним у тебя всё равно прокси.

https://www.nginx.com/blog/nginx-unit-updating-apps-with-100-percent-uptime/

WitcherGeralt ★★ ()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от gobot

Вот почитай: http://nginx.org/en/docs/control.html

Там этого нет, но если хочешь без прокси сверху, то в теории тебе нужно юзать флаг SO_REUSEPORT. Но это не так надёжно и не «проще», ибо нужно городить всё самому.

Я думал, там там какие-то извращения с дочерними процессами должны быть, но вроде нет, достаточно чтобы юзер был один. Компа под рукой нет, чтобы проверить, а на планшетике termux чот навернулся, так что пробуй сам.

WitcherGeralt ★★ ()
Ответ на: комментарий от WitcherGeralt

Балансировщик я понимаю это nginx? У меня сейчас так и есть, он проксирует на 127.0.0.1:5555. Надо как то динамически менять местами порты получается? Конфиг что ли менять и делать nginx reload, чтобы новые клиенты подключались к уже новому. Как то это геморно, наверное оставлю как есть...

gobot ★★★★ ()
Ответ на: комментарий от gobot

Конфиг что ли менять и делать nginx reload, чтобы новые клиенты подключались к уже новому

Нет, просто задаёшь несколько серверов в upstream.

Сейчас у тебя не так? Только один инстанс запущен? Лучше всего будет запускать хотя бы два инстанса, так и надёжней, и больше ядер утилизируешь.

Тебе просто нужно будет по очереди переставать делать accept, отрабатывать полученные запросы и перезапускаться с новой версией. Ни одного запроса не потеряешь.

WitcherGeralt ★★ ()