Экземпляр контейнера Azure, по-видимому, продолжает работать после остановки или удаления

У нас есть приложение на основе микросервисов, использующее Azure ServiceBus. Мы развертываем одну из служб (менеджер саг) как консольное приложение .Net Core в контейнере докеров (Linux). Мы используем docker-compose, и группа из 2 контейнеров (включая консольное приложение) развертывается в экземпляре контейнера Azure.

Мы используем MassTransit для работы с Azure ServiceBus.

Консольное приложение (менеджер саги) запускает служебную шину с помощью метода MassTransit.BusControlExtensions.Start ().

Более или менее на этом этапе консольное приложение (менеджер саг) загружено и готово.

Замечание: рассматриваемое приложение (менеджер саг) запускает Automatonymous State Machine

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

Похоже, что новый экземпляр диспетчера саг (поток?) Создается при каждом перезапуске, тогда как старый экземпляр (поток?) каким-то образом сохраняется.

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

приложение контейнера все еще живо после удаления самой группы контейнеров

Есть ли способ окончательно убить отдельный экземпляр / поток?

Кто-нибудь знаком с таким поведением экземпляров контейнеров Azure?

PS в описанных сценариях операции остановки / удаления всегда успешны

PS2: вот yaml-файл, используемый для развертывания проблемной группы контейнеров с помощью команды az container create:

apiVersion: 2018-10-01
location: westeurope
name: #{groupName}#
properties:
  containers:
  - name: saga-aci
    properties:
      image: #{acrLoginServer}#/sagaazure:latest
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 80
      - port: 443
      - port: 9350
  - name: proxymanager-aci
    properties:
      image: #{acrLoginServer}#/proxymanager:latest
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 22999
      - port: 24000
  osType: Linux
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: '80'
    #- protocol: tcp
      #port: '8080'
    - protocol: tcp
      port: '22999'
    - protocol: tcp
      port: '24000'
    - protocol: tcp
      port: '443'
    - protocol: tcp
      port: '9350'
  imageRegistryCredentials:
    - server: #{acrLoginServer}#
      username: #{acrName}#
      password: #{acrPassword}#
tags: null
type: Microsoft.ContainerInstance/containerGroups

возможно, это проблема рестарполитики?


person sztepen    schedule 07.05.2019    source источник
comment
нет, я уже перепробовал все комбинации операций - удалить, запустить; остановка, запуск и т. д. Каждый раз, когда старый процесс сохраняется, не может умереть. Например, даже при перезапуске контейнера z старый процесс жив. Перед перезапуском - работает 1 менеджер саг, после перезапуска - 2 менеджера саг; до бесконечности. Этот процесс мультипликации происходит также при удалении контейнера z. после остановки или удаления, конечно, вы не можете столкнуться с контейнерами, но процесс шины Azure ВСЕ ЕЩЕ РАБОТАЕТ. сумасшедший.   -  person sztepen    schedule 09.05.2019
comment
Вы уверены, что сага все еще продолжается, если вы удалите группу контейнеров? а не другие услуги?   -  person Charles Xu    schedule 09.05.2019
comment
Короче говоря - контейнеры убиты должным образом, это правда. Однако кажется, что поток / процесс задерживается и взаимодействует с нашей шиной сообщений.   -  person sztepen    schedule 09.05.2019
comment
отвечая на ваш вопрос: я добавлю ведение журнала с помощью аналитики приложений, чтобы быть уверенным, но пока мы уверены, что ЧТО-ТО забирает сообщения шины и обрабатывает их - даже после уничтожения всех возможных экземпляров саги (особенно группы контейнеров - через лазурный портал, через команду линия, через лазурные девопсы; также путем индивидуальной остановки контейнеров). Я добавлю больше логов и дам знать. На данный момент мы достаточно уверены, что он все еще работает. PS другие сервисы отключены - мы находимся в режиме разработки, так что можем   -  person sztepen    schedule 09.05.2019


Ответы (1)


При работе с экземпляром контейнера Azure следует обратить внимание на некоторые моменты.

Действие остановки, если вы остановите группу контейнеров, оно завершит работу и перезапустит все контейнеры в группе и не сохранит состояние контейнеров. Это не действует, если группа контейнеров уже завершена.

Действие запуска, если вы запускаете группу контейнеров из остановленного состояния, будет новое развертывание с той же конфигурацией контейнера. Если образ обновится, он потянет новый. Действие Start запускает всю группу контейнеров, но не может запускать в ней особую.

Что касается действия удаления, я не думаю, что приложение внутри группы контейнеров будет по-прежнему живым, если вы удалите группу контейнеров. Действие продлится недолго. Но, в конце концов, группа контейнеров будет полностью удалена.

Дополнительные сведения можно найти в экземпляре контейнера Azure. Операции. У меня нет опыта работы с Azure ServiceBus, все выше только для экземпляра контейнера Azure. Если у вас есть еще вопросы, дайте мне знать.

person Charles Xu    schedule 08.05.2019
comment
чтобы убедиться, что я не сумасшедший, вот выдержка из журнала: ibb.co/2Nvhf7P около 22 часов: 02 Я ПОЛНОСТЬЮ удалил ресурс экземпляра контейнера; около 22:07 я отправил сообщение срабатывания шины, кажется, что после удаления новый экземпляр был создан в пустоте. Это может быть результатом чрезмерной политики перезапуска. - person sztepen; 12.05.2019
comment
Я добавил конфигурацию yaml, используемую для развертывания группы контейнеров, пожалуйста, посмотрите - person sztepen; 12.05.2019
comment
Хорошо, в целях устранения неполадок я установил для параметра restartPolicy значение НИКОГДА. Это помогло - контейнер можно убить навсегда ... Я не очень доволен этим решением, я думаю, что мы столкнулись с недостатком экземпляров контейнера (или, по крайней мере, с функцией, которую следует лучше документировать). Завтра поэкспериментирую с restartPolicy = OnFailure - person sztepen; 12.05.2019
comment
У меня были некоторые проблемы во время последнего развертывания / обновления контейнера, но позвольте мне подтвердить это. Проблема, безусловно, сохраняется с restarPolicy = Always и, скорее всего, с restartPolicy = OnFailure. Я воспроизведу проблему и запомню идентификатор ресурса в App Insights. На данный момент я бы не сказал, что процесс развертывания стабильный. Подтвердю. - person sztepen; 20.05.2019
comment
@sztepen Я собираюсь развернуть некоторые службы для экземпляров контейнеров, также используя MT и Azure SB. Было бы очень интересно услышать о любых изменениях в этой проблеме или о любых дальнейших действиях, которые вы, возможно, нашли. - person robs; 01.10.2019
comment
@sztepen Во-первых, если решение работает для вас, примите его как ответ. Во-вторых, если у вас есть дополнительные вопросы, вы можете задать другой вопрос и предоставить дополнительное сообщение, чтобы получить особое решение. - person Charles Xu; 01.10.2019
comment
@CharlesXu Я не смог решить проблему по вашим рекомендациям. Я совершенно уверен, что на тот момент это была лазурная ошибка. Мне еще предстоит открыть заявку в службу поддержки - я сделаю это, спасибо за напоминание. А пока были дела поважнее;) - person sztepen; 01.10.2019
comment
@robs Этот вопрос был отложен на второй план. Команда Azure попросила меня открыть заявку в службу поддержки, но я не успел до нее добраться. Итак, на данный момент статус: не решено / неизвестно. Но да, позвольте мне снова открыть это. Не стесняйтесь напомнить мне в личном сообщении. - person sztepen; 01.10.2019