Size: a a a

2020 May 26

DB

Dmitry Bryn in Go-go!
Максим Ковалёв
Всем привет!
Такая предыстория.
Есть несколько демонов на GO, которые получают данные для обработки чере http запросы.

Вот им нужна мягкая перезагрузка, что бы не потерять ни одного входящего запроса.

Пробовал различные варианты, но у всех что пробовал есть минусы. В частности - не перечитывается .env файл (работаем с собственной библиотекой для этого), перестают писаться логи после рестарта, старый демон пишет об окончании, новый уже записывать в файл не может. Хотя файл логов закрывается до старта нового демона. И прочие мелкие, но иной раз критичные проблемы.

Посоветуйте какие-либо хорошие решения данного вопроса.

Всё что я находил (или советовали) - в той или иной мере теряют соединения при перезапуске.

Спасибо.
реализацию грейсфул шатдаун не смотрел какую нибудь ?
источник

VM

Vladislav Milenin in Go-go!
вообще да, нужен балансировщик
в докере и k8s просто они по дефолту есть
источник

VM

Vladislav Milenin in Go-go!
плюс там можно retry вроде накинуть если вдруг отвалится все же
источник

МК

Максим Ковалёв... in Go-go!
Dmitry Bryn
реализацию грейсфул шатдаун не смотрел какую нибудь ?
вообще - смотрел, и пробовал много, но везде есть недостатки, то не читает окружение, то логи не пишет, то соединения теряет (пусть и не много штук, но всё же)
источник

МК

Максим Ковалёв... in Go-go!
Vladislav Milenin
вообще да, нужен балансировщик
в докере и k8s просто они по дефолту есть
в докере как я понимаю вы предлагаете запускать несколько экземпляров?
источник

DB

Dmitry Bryn in Go-go!
докер не спасет тут
источник

VM

Vladislav Milenin in Go-go!
Максим Ковалёв
в докере как я понимаю вы предлагаете запускать несколько экземпляров?
если в случае с композом то scale
источник

VM

Vladislav Milenin in Go-go!
Dmitry Bryn
докер не спасет тут
не обманывайте
источник

DB

Dmitry Bryn in Go-go!
))
источник

p

pragus in Go-go!
Vladislav Milenin
вообще да, нужен балансировщик
в докере и k8s просто они по дефолту есть
а чем балансировщик поможет?
источник

D

DMITRY in Go-go!
Владимир Столяров
есть простой способ - поставить балансировщик перед ними и просто поднимать новые демоны с гашением старых
из простого способа nginx\proxy как вам написали,настаривается за пару часов
источник

VM

Vladislav Milenin in Go-go!
pragus
а чем балансировщик поможет?
я не очень понимаю как запустить 2 приложения на 1 порту
источник

DB

Dmitry Bryn in Go-go!
Vladislav Milenin
не обманывайте
без реализаци грейсфул периода в приложении
докер и куб ни как не спасут от такого
источник

VM

Vladislav Milenin in Go-go!
без балансировщика
источник

p

pragus in Go-go!
Vladislav Milenin
я не очень понимаю как запустить 2 приложения на 1 порту
SO_REUSEPORT
источник

RA

Rinat Almakhov in Go-go!
Vladislav Milenin
я не очень понимаю как запустить 2 приложения на 1 порту
а зачем?
источник

VM

Vladislav Milenin in Go-go!
Dmitry Bryn
без реализаци грейсфул периода в приложении
докер и куб ни как не спасут от такого
можно
источник

VM

Vladislav Milenin in Go-go!
pragus
SO_REUSEPORT
в го?
источник

p

pragus in Go-go!
да, а в чем проблема? тот же fasthttp так умеет
источник

ВС

Владимир Столяров... in Go-go!
https://golang.org/pkg/net/#Dialer в Control можно выставить это
источник