The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск сервера приложений NGINX Unit 1.2, opennews (??), 07-Июн-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


6. "Выпуск сервера приложений NGINX Unit 1.2"  +/
Сообщение от KonstantinB (ok), 08-Июн-18, 01:07 
Например, не для каждого проекта оправдано дублировать каждое запущенное приложение несколькими инстансами с балансировкой.

Если же запущен всего один инстанс приложения, с докером без даунтайма при обновлении не обойтись.

Ну и не каждое приложение можно написать (переписать) в соответствии с методологией 12 factor. А без этого докер больше мешает, чем помогает, проще обойтись тем же LXC.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

10. "Выпуск сервера приложений NGINX Unit 1.2"  +1 +/
Сообщение от freehckemail (ok), 08-Июн-18, 03:24 
> Если же запущен всего один инстанс приложения, с докером без даунтайма при обновлении не обойтись.

Это неправда. Обновление происходит так: мы поднимаем контейнер из нового образа, дожидаемся, пока он полностью прогрузится, и тогда уже гасим старый.

По поводу остального согласен.

Ответить | Правка | Наверх | Cообщить модератору

12. "Выпуск сервера приложений NGINX Unit 1.2"  +/
Сообщение от KonstantinB (ok), 08-Июн-18, 04:54 
> Обновление происходит так: мы поднимаем контейнер из нового образа, дожидаемся, пока он полностью прогрузится, и тогда уже гасим старый.

Не, ну так, конечно, можно, в стиле "fastcgi php до появления php-fpm".

Но тут есть две проблемы.

1) дроп соединений, ожидающих ответа от первого контейнера в момент переключения. Тут можно выкрутиться конструкцией вида "добавляем в конфиг балансировщика второй контейнер, метим первый как down, дожидаемся, пока первый закончит обработку всех соединений, прибиваем первый", но как-то сложновато получается.

2) если приложение - древний монолит, могут возникнуть проблемы с конкурентным доступом к ресурсам из обоих контейнеров. Это, конечно, из разряда "не программируйте так", но если бы все хорошо программировали...

Ответить | Правка | Наверх | Cообщить модератору

21. "Выпуск сервера приложений NGINX Unit 1.2"  +2 +/
Сообщение от Анонимус2 (?), 08-Июн-18, 10:31 
>если приложение - древний монолит

То unit ему тем более никак не поможет

Ответить | Правка | Наверх | Cообщить модератору

30. "Выпуск сервера приложений NGINX Unit 1.2"  +/
Сообщение от KonstantinB (ok), 09-Июн-18, 02:37 
Самому по себе - да.

На практике же типичная подобная ситуация: есть, скажем, древний PHP-шный монолит из дерьма и палок, как-то работающий, но для развития непригодный, потому параллельно начинается разработка новых сервисов и постепенный перенос старой функциональности из монолита в код новых сервисов, которые, допустим, разрабатываются на python и go. Вот тут Unit оказывается очень удобен.

Ответить | Правка | Наверх | Cообщить модератору

33. "Выпуск сервера приложений NGINX Unit 1.2"  +/
Сообщение от freehckemail (ok), 18-Июн-18, 09:17 
>> Обновление происходит так: мы поднимаем контейнер из нового образа, дожидаемся, пока он полностью прогрузится, и тогда уже гасим старый.
> Не, ну так, конечно, можно, в стиле "fastcgi php до появления php-fpm".

Да нет, тут тот же самый php-fpm, только он раскидан по нескольким контейнерам/машинам/нодам. В каждом контейнере, по идее, висит воркер, который дожидается соединений. И да, тот же php-fpm туда впихнуть -- да пожалуйста, было бы желание.

> 1) дроп соединений, ожидающих ответа от первого контейнера в момент переключения. Тут
> можно выкрутиться конструкцией вида "добавляем в конфиг балансировщика второй контейнер,
> метим первый как down, дожидаемся, пока первый закончит обработку всех соединений,
> прибиваем первый", но как-то сложновато получается.

Нет, ну почему же. Дроп соединений делать не нужно. Процедуру вырубания контейнера надо описать корректно, чтобы он дожидался завершения текущих соединений и не принимал новых. По части "не принимал новых" -- тут конечно же надо балансировщик. Но исправление конфига -- опять же, чересчур. Не надо описывать воркеры в конфиге. Надо, чтобы балансировщик узнавал о воркерах через service discovery. Zookeeper/etcd в помощь.

> 2) если приложение - древний монолит, могут возникнуть проблемы с конкурентным доступом
> к ресурсам из обоих контейнеров. Это, конечно, из разряда "не программируйте
> так", но если бы все хорошо программировали...

Да, обычно приходится много чего переписать, чтобы обеспечить бесперебойную работу. Ну, что поделать. Есть игрушки "на коленке", когда нужно сделать быстро. А есть игрушки "на экспорт", когда нужно сделать надёжно.

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

18. "Выпуск сервера приложений NGINX Unit 1.2"  +/
Сообщение от qrKot (?), 08-Июн-18, 09:06 
> Например, не для каждого проекта оправдано дублировать каждое запущенное приложение несколькими
> инстансами с балансировкой.

2 инстанса - оправдано для каждого, хотя бы в целях фейловера... Балансировка - уже не везде, согласен.

> Если же запущен всего один инстанс приложения, с докером без даунтайма при
> обновлении не обойтись.

Вот это неправда ваша. Да и не докером единым, k8s есть еще тот же.

> Ну и не каждое приложение можно написать (переписать) в соответствии с методологией
> 12 factor.

Каждое серверное - можно.

> А без этого докер больше мешает, чем помогает, проще обойтись тем же LXC.

А вот LXC - вообще НЕ средство доставки приложения.

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру