У меня есть приложение, которое пересылает TCP-соединение другому приложению. В настоящее время я пытаюсь развернуть это приложение с нулевой загрузкой, поэтому я могу развернуть новую версию в любое время, но есть проблема, которую я не нашел решения, как ее решить.
Я не могу убить сеансы TCP, некоторые из них могут занимать минимум 5 минут или 2 часа. Я хотел бы знать, каков общий способ решения этой проблемы, при развертывании новой версии моего программного обеспечения она будет использоваться новыми соединениями, не уничтожая предыдущие.
Я знаю, что с помощью docker вы можете изменять сигналы, которые получает контейнер, и обрабатывать их, но все же я вижу, что при развертывании через какой-то момент они отправляют команду "docker rm" на удаление контейнера (в настоящее время я тестирую с помощью Docker Swarm и предполагаю Kubernetes сделает то же самое).
Это способ иметь очень долгое время для развертывания или использовать что-то сине-зеленое?
Спасибо,
Прокатные обновления. Разверните новую версию этого продукта. Слив останавливают старые.
Реализация может включать в себя сценарии постепенной остановки или установку тайм-аутов, превышающих ваш самый длинный сеанс. В Kubernetes попробуйте terminationGracePeriodSeconds и обязательно обработайте SIGTERM.