Экземпляр контейнера Azure, очевидно, продолжает работать после остановки или удаления - PullRequest
0 голосов
/ 07 мая 2019

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

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

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

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

Sidenote:рассматриваемое приложение (диспетчер саг) запускает автоматный конечный автомат

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

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

Даже когда мы полностью удаляем ресурс Container Instance в Azure - мы можем все еще наблюдатьчто автобус мессаges что-то подхватывает ...

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

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

Кто-нибудь знаком с таким поведением 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

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

1 Ответ

1 голос
/ 08 мая 2019

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...