Прочитать на английском

Поделиться через


Создание пула Azure Batch в разных зонах доступности

Регионы Azure, которые поддерживают зоны доступности, имеют по крайней мере три отдельные зоны, для каждой из которых предусмотрены собственные независимые источники питания, сети и системы охлаждения. При создании пула Azure Batch с использованием конфигурации виртуальной машины, вы можете выбрать его развертывание в зонах доступности. Создание пула с помощью этой зональной политики помогает защитить расчетные узлы пакетной службы от сбоев на уровне центра обработки данных Azure.

Например, можно создать пул с зональной политикой в регионе Azure, который поддерживает три зоны доступности. Если в центре обработки данных Azure в одной зоне доступности произошла ошибка инфраструктуры, пул пакетной службы по-прежнему будет иметь работоспособные узлы в двух других зонах доступности, поэтому пул останется доступным для планирования задач.

Региональная поддержка и другие требования

Пакетная служба сохраняет четность в Azure на поддержку зоны доступности. Чтобы использовать зональные параметры, необходимо создать пул в поддерживаемом регионе Azure.

Чтобы пул Batch распределился по зонам доступности, регион Azure, в котором создается пул, должен поддерживать запрошенный SKU виртуальной машины более чем в одной зоне. Это можно проверить путем вызова API списка SKU ресурсов и проверки поля locationInfo в resourceSku. Убедитесь в том, что для запрашиваемой конфигурации SKU виртуальной машины поддерживается более одной зоны.

Для учетных записей Batch в режиме пользовательской подписки убедитесь, что в подписке, в которой вы создаете пул, нет ограничений предложения зоны на запрашиваемый номер SKU виртуальной машины. Чтобы подтвердить это, вызовите Resource Skus List API и проверьте ResourceSkuRestrictions. Если ограничение для зоны существует, вы можете отправить запрос в службу поддержки, чтобы удалить ограничение зоны.

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

Создайте пул Batch через зоны доступности

В следующих примерах показано, как создать Batch-пул между зонами доступности.

Примечание

При создании пула с помощью зональной политики пакетная служба попытается выделить пул во всех зонах доступности в выбранном регионе. Вы не можете указать конкретное распределение между зонами.

SDK .NET для клиента управления пакетами

var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);

var batchAccountIdentifier = ResourceIdentifier.Parse("your-batch-account-resource-id");

BatchAccountResource batchAccount = _armClient.GetBatchAccountResource(batchAccountIdentifier);

var poolName = "pool2";
var imageReference = new BatchImageReference()
{
    Publisher = "canonical",
    Offer = "0001-com-ubuntu-server-jammy",
    Sku = "22_04-lts",
    Version = "latest"
};
string nodeAgentSku = "batch.node.ubuntu 22.04";

var batchAccountPoolData = new BatchAccountPoolData()
{
    VmSize = "Standard_DS1_v2",
    DeploymentConfiguration = new BatchDeploymentConfiguration()
    {
        VmConfiguration = new BatchVmConfiguration(imageReference, nodeAgentSku)
        {
            NodePlacementPolicy = BatchNodePlacementPolicyType.Zonal,
        },
    },
    ScaleSettings = new BatchAccountPoolScaleSettings()
    {
        FixedScale = new BatchAccountFixedScaleSettings()
        {
            TargetDedicatedNodes = 5,
            ResizeTimeout = TimeSpan.FromMinutes(15),
        }
    },
    
};

ArmOperation<BatchAccountPoolResource> armOperation = batchAccount.GetBatchAccountPools().CreateOrUpdate(
    WaitUntil.Completed, poolName, batchAccountPoolData);
BatchAccountPoolResource pool = armOperation.Value;

Пакетный REST API

адрес REST API

POST {batchURL}/pools?api-version=2021-01-01.13.0
client-request-id: 00000000-0000-0000-0000-000000000000

Текст запроса

"pool": {
    "id": "pool2",
    "vmSize": "standard_a1",
    "virtualMachineConfiguration": {
        "imageReference": {
            "publisher": "Canonical",
            "offer": "UbuntuServer",
            "sku": "20.04-lts"
        },
        "nodePlacementConfiguration": {
            "policy": "Zonal"
        }
        "nodeAgentSKUId": "batch.node.ubuntu 20.04"
    },
    "resizeTimeout": "PT15M",
    "targetDedicatedNodes": 5,
    "targetLowPriorityNodes": 0,
    "maxTasksPerNode": 3,
    "enableAutoScale": false,
    "enableInterNodeCommunication": false
}

Следующие шаги