Розгортання у вигляді Веб-додатку Azure

Мова: Українська
Цю статтю перекладено з англійської за допомогою ШІ, тому вона може містити помилки. Ваші відгуки допоможуть нам її покращити.

Цей посібник допоможе вам розгорнути сервер ActivityInfo для самостійного керування як Веб-додаток Azure для контейнерів, використовуючи офіційний Docker-образ. Він призначений для ІТ-фахівців, знайомих з Microsoft Azure.

Перш ніж почати

Сервер ActivityInfo для самостійного керування зберігає свої дані в базі даних SQLite. Це має два наслідки для розгортання у Веб-додатку Azure:

  • Ви повинні підключити постійний том для бази даних, оскільки власна файлова система Веб-додатку скидається щоразу, коли контейнер перезапускається або переміщується.
  • Ви повинні запускати один екземпляр. Сервер розроблений для вертикального, а не горизонтального масштабування: щоб підтримувати більше одночасних користувачів, надайте екземпляру більше ядер процесора та пам'яті, а не додавайте нові екземпляри.

Служба додатків Azure також розриває HTTPS-з'єднання за вас і перенаправляє звичайний HTTP-трафік до контейнера. Тому ви запускаєте ActivityInfo в режимі HTTPS-проксі.

Наведені нижче кроки використовують Azure CLI. За бажанням, ви можете виконати ті ж самі кроки з порталу Azure. Спочатку увійдіть за допомогою команди:

az login

Встановлення змінних

Команди в цьому посібнику повторно використовують кілька значень. Встановіть їх один раз, вибравши власні глобально унікальні імена для додатку та облікового запису сховища:

RESOURCE_GROUP=activityinfo-rg
LOCATION=westeurope
PLAN=activityinfo-plan
APP=my-activityinfo
STORAGE_ACCOUNT=aistorage$RANDOM
SHARE=activityinfo-data

Створення групи ресурсів

az group create --name $RESOURCE_GROUP --location $LOCATION

Створення Плану Служби додатків для Linux

Створіть План для Linux з одним виконавцем. Рівень Basic B1 або вище є обов'язковим для використання користувацького сховища, власного домену та налаштування "Завжди ввімкнено".

az appservice plan create \
  --name $PLAN \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --is-linux \
  --sku B1 \
  --number-of-workers 1

Створення файлового ресурсу для бази даних

Створіть обліковий запис зберігання та файловий ресурс Azure Files. ActivityInfo зберігає свою базу даних SQLite та config.ini на цьому ресурсі, тому дані зберігаються після перезапусків та повторних розгортань.

az storage account create \
  --name $STORAGE_ACCOUNT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --sku Standard_LRS

az storage share-rm create \
  --resource-group $RESOURCE_GROUP \
  --storage-account $STORAGE_ACCOUNT \
  --name $SHARE \
  --quota 10

Створення веб-додатку

Створіть веб-додаток з офіційного образу ActivityInfo на Docker Hub:

az webapp create \
  --resource-group $RESOURCE_GROUP \
  --plan $PLAN \
  --name $APP \
  --container-image-name activityinfo/activityinfo:5.0.0

Монтування файлового ресурсу

Змонтуйте файловий ресурс у контейнер за шляхом /data. Спочатку зчитайте ключ облікового запису зберігання, а потім додайте монтування:

STORAGE_KEY=$(az storage account keys list \
  --resource-group $RESOURCE_GROUP \
  --account-name $STORAGE_ACCOUNT \
  --query "[0].value" --output tsv)

az webapp config storage-account add \
  --resource-group $RESOURCE_GROUP \
  --name $APP \
  --custom-id activityinfo-data \
  --storage-type AzureFiles \
  --account-name $STORAGE_ACCOUNT \
  --share-name $SHARE \
  --access-key $STORAGE_KEY \
  --mount-path /data

Налаштування ActivityInfo

Встановіть налаштування програми. WEBSITES_PORT повідомляє Службі додатків, що контейнер прослуховує порт 8081. Змінні ACTIVITYINFO_* переводять сервер у режим HTTPS-проксі та вказують на змонтований файловий ресурс як на каталог даних.

az webapp config appsettings set \
  --resource-group $RESOURCE_GROUP \
  --name $APP \
  --settings \
    WEBSITES_PORT=8081 \
    ACTIVITYINFO_SERVER_HTTPS_PROXY=TRUE \
    ACTIVITYINFO_SERVER_DOMAIN=$APP.azurewebsites.net \
    ACTIVITYINFO_DATA_DATA_DIRECTORY=/data

Увімкніть "Завжди ввімкнено", щоб Служба додатків підтримувала контейнер у робочому стані та не вивантажувала його, коли додаток неактивний:

az webapp config set \
  --resource-group $RESOURCE_GROUP \
  --name $APP \
  --always-on true

Створення облікового запису адміністратора

Azure надає безкоштовний керований сертифікат для домену azurewebsites.net, тому додаток одразу доступний через HTTPS. Перейдіть до https://<APP>.azurewebsites.net, де вам буде запропоновано створити перший обліковий запис користувача-адміністратора.

Використання власного домену

Щоб обслуговувати ActivityInfo з вашого власного домену, додайте власний домен та керований сертифікат до веб-додатку. Потім оновіть налаштування ACTIVITYINFO_SERVER_DOMAIN, щоб посилання в емейл-повідомленнях використовували правильну адресу:

az webapp config appsettings set \
  --resource-group $RESOURCE_GROUP \
  --name $APP \
  --settings ACTIVITYINFO_SERVER_DOMAIN=activityinfo.example.gov

Продуктивність сховища

Файловий ресурс, змонтований вище, — це Azure Files, мережева файлова система, до якої контейнер звертається за протоколом SMB. Кожне читання та запис передається через мережу, що додає затримку порівняно з локальним диском. Бази даних виконують багато невеликих синхронних записів і утримують блокування файлів під час транзакцій, тому вони чутливі до цієї затримки. На завантаженому сервері файловий ресурс може стати обмежуючим фактором для часу відповіді. Веб-додаток для контейнерів може підключати лише мережеве сховище, тому цей компроміс стосується будь-якого розгортання з одним екземпляром у Службі додатків.

Якщо вам потрібна вища продуктивність бази даних, замість цього розгорніть її в Azure Kubernetes Service. Там ви можете підключити керований диск Premium SSD v2 до одного поду, що забезпечує затримку, близьку до локального диска, з можливістю налаштування IOPS, і при цьому зберігає працездатність у разі втрати вузла.

Наступні кроки

Дотримуйтесь посібника з конфігурації, щоб налаштувати доставку емейлів та єдиний вхід (Single Sign-On) через веб-інтерфейс.

Наступний елемент
Розгортання в Azure Kubernetes Service