Como usar políticas de alocação para provisionar dispositivos em hubs IoT
O DPS (Serviço de Provisionamento de Dispositivos no Hub IoT do Azure) dá suporte a várias políticas de alocação internas que determinam como ele atribui dispositivos em um ou mais hubs IoT. O DPS também inclui suporte para políticas de alocação personalizadas que permitem que você crie e use suas próprias políticas de alocação quando seu cenário de IoT requer funcionalidade não fornecida pelas políticas internas.
Este artigo ajuda você a entender como usar e gerenciar políticas de alocação de DPS.
Noções básicas sobre políticas de alocação
As políticas de alocação determinam como o DPS atribui dispositivos a um hub IoT. Cada instância do DPS tem uma política de alocação padrão, mas essa política pode ser substituída por uma política de alocação definida em um registro. Somente hubs IoT que tenham sido vinculados à instância do DPS podem participar da alocação. A participação de um hub IoT vinculado na alocação dependerá das configurações no registro que um dispositivo provisiona.
O DPS dá suporte a quatro políticas de alocação:
Distribuição uniformemente ponderada: os dispositivos são provisionados em um hub IoT usando um hash ponderado. Por padrão, os hubs IoT vinculados têm a mesma configuração de peso de alocação, portanto, é igualmente provável que tenham dispositivos provisionados para eles. O peso da alocação de um hub IoT pode ser ajustado para aumentar ou diminuir sua probabilidade de ser atribuído. A Distribuição uniformemente ponderada é a política de alocação padrão para uma instância do DPS. Se estiver provisionando dispositivos para apenas um hub IoT, recomendamos usar essa política.
Menor latência: dispositivos são provisionados para o Hub IoT com a menor latência para o dispositivo. Se vários hubs IoT fornecerem a latência mais baixa, o DPS distribuirá por hash os dispositivos entre esses hubs com base em seu peso de alocação configurado.
Configuração estática: os dispositivos são provisionados em um só hub IoT, que deve ser especificado no registro.
Personalizado (uso da Função do Azure): uma política de alocação personalizada oferece mais controle sobre como os dispositivos são atribuídos a um Hub IoT. Isso é feito usando um webhook personalizado hospedado no Azure Functions para atribuir dispositivos a um hub IoT. O DPS chama seu webhook fornecendo todas as informações relevantes sobre o dispositivo e o registro. O webhook retorna o hub IoT e o dispositivo gêmeo inicial (opcional) usados para provisionar o dispositivo. As cargas personalizadas também podem ser passadas de e para o dispositivo. Para saber mais, confira Noções básicas sobre políticas de alocação personalizadas. Não pode ser definido como a política padrão da instância do DPS.
Observação
A lista anterior mostra os nomes das políticas de alocação conforme elas aparecem no portal do Azure. Ao definir a política de alocação usando a API REST do DPS, a CLI do Azure e os SDKs de serviço do DPS, eles são chamados da seguinte maneira: hashed, geolatency, static e custom.
Há duas configurações em um hub IoT vinculado que controlam como ele participa da alocação:
Peso da alocação: define o peso que o hub IoT terá ao participar de políticas de alocação que envolvem vários hubs IoT. Pode ser um valor entre um e 1000. O padrão é um (ou nulo).
Com a política de alocação Distribuição uniformemente ponderada, os hubs IoT com valores de peso de alocação mais altos têm maior probabilidade de serem selecionados em comparação com aqueles com valores de peso mais baixos.
Com a política de alocação de Latência mais baixa, o valor de peso da alocação afetará a probabilidade de um hub IoT ser selecionado quando mais de um hub IoT atender ao menor requisito de latência.
Com uma política de alocação Personalizada, se e como o valor do peso de alocação é usado dependerá da lógica do webhook.
Aplicar política de alocação: especifica se o hub IoT participa da política de alocação. O padrão é Sim (verdadeiro). Se definido como Não (falso), os dispositivos não serão atribuídos ao hub IoT. O hub IoT ainda pode ser selecionado em um registro, mas não participará da alocação. Você pode usar essa configuração para remover temporária ou permanentemente um hub IoT da participação na alocação, por exemplo, se ele estiver se aproximando do número permitido de dispositivos.
Para saber mais sobre como vincular hubs IoT à instância do DPS, confira Como vincular e gerenciar hubs IoT.
Quando um dispositivo é provisionado por meio do DPS, o serviço o atribui a um hub IoT de acordo com as seguintes diretrizes:
Se o registro especificar uma política de alocação, use essa política. Caso contrário, use a política de alocação padrão para a instância do DPS.
Se o registro especificar um ou mais hubs IoT, aplique a política de alocação nesses hubs IoT. Caso contrário, aplique a política de alocação em todos os hubs IoT vinculados à instância do DPS. Observe que, se a política de alocação for Configuração estática, o registro deverá especificar um hub IoT.
Importante
Quando você altera uma política de alocação ou os hubs IoT aos quais ela se aplica, as alterações afetam apenas os registros de dispositivo subsequentes. Os dispositivos já provisionados em um hub IoT não serão afetados. Se quiser que suas alterações sejam aplicadas retroativamente a esses dispositivos, você precisará reprovisioná-los. Para saber mais, confira Como reprovisionar dispositivos.
Definir a política de alocação padrão para uma instância do DPS
A política de alocação padrão para a instância DPS é usada quando uma política de alocação não é especificada em um registro. Somente a Distribuição uniformemente ponderada, a Menor latência e a Configuração estática têm suporte para a política de alocação padrão. Não há suporte para alocação personalizada. Quando uma instância do DPS é criada, sua política padrão é definida automaticamente como Distribuição uniformemente ponderada.
Observação
Se você definir a Configuração estática como a política de alocação padrão para uma instância do DPS, um hub IoT vinculado deverá ser especificado em registros que dependem da política padrão.
Usar o portal do Azure para definir a política de alocação padrão
Para definir a política de alocação padrão para a instância do DPS no portal do Azure:
No menu à esquerda da instância do DPS, selecione Gerenciar política de alocação.
Selecione o botão para a política de alocação que você deseja definir: Menor latência, Distribuição uniformemente ponderada ou Configuração estática. (Não há suporte para alocação personalizada para a política de alocação padrão.)
Selecione Salvar.
Usar a CLI do Azure para definir a política de alocação padrão
Use o comando az iot dps update da CLI do Azure para definir a política de alocação padrão para a instância do DPS. Use --set properties.allocationPolicy
para especificar a política. Por exemplo, o comando a seguir define a política de alocação como Distribuição uniformemente ponderada (o padrão):
az iot dps update --name MyExampleDps --set properties.allocationPolicy=hashed
O DPS também dá suporte à definição da política de alocação padrão usando a API REST do recurso Criar ou Atualizar DPS, os modelos do Resource Manager e os SDKs de Gerenciamento de DPS.
Definir a política de alocação e os hubs IoT para registros
Registros individuais e grupos de registros podem especificar uma política de alocação e os hubs IoT vinculados aos quais ela deve se aplicar. Se nenhuma política de alocação for especificada pelo registro, a política de alocação padrão para a instância do DPS será usada.
Em qualquer caso, as seguintes condições se aplicam:
Para as políticas de alocação Distribuição uniformemente ponderada, Latência mais baixa e Personalizadas, o registro pode especificar quais hubs IoT vinculados devem ser usados. Se nenhum hub IoT for selecionado no registro, todos os hubs IoT vinculados na instância do DPS serão usados.
Para configuração estática, o registro deve especificar um único hub IoT da lista de hubs IoT vinculados.
Para registros individuais e grupos de registros, você pode especificar uma política de alocação e os hubs IoT vinculados para aplicar ao criar ou atualizar um registro.
Use o portal do Azure para gerenciar a política de alocação de registro e os hubs IoT
Para definir a política de alocação e selecionar hubs IoT em um registro no portal do Azure:
No menu à esquerda da instância do DPS, selecione Gerenciar registros.
Na página Gerenciar registros:
Para criar um novo registro, selecione a guia Grupos de registro ou a guia Registros Individuais e, em seguida, selecione Adicionar grupo de registro ou Adicionar registro individual.
Para atualizar um registro existente, selecione-o na lista da guia Grupos de registros ou Registros individuais.
Na página Adicionar Registro (ao criar) ou na página Detalhes do registro (na atualização), selecione a guia Hubs IoT. Nessa guia, você pode selecionar a política de alocação desejada aplicada ao registro e selecionar os hubs IoT que devem ser usados:
Selecione os hubs IoT aos quais os dispositivos podem ser atribuídos na lista suspensa. Se selecionar a política de alocação de Configuração estática, você estará limitado à seleção de um único hub IoT vinculado. Para todas as outras políticas de alocação, todos os hubs IoT vinculados serão selecionados por padrão, mas você pode modificar essa seleção usando a lista suspensa. Para que o registro use automaticamente hubs IoT vinculados à medida que eles são adicionados (ou excluídos) à instância do DPS, desmarque todos os hubs IoT.
Opcionalmente, você pode selecionar o botão Vincular um novo hub IoT para vincular um novo hub IoT à instância do DPS e disponibilizá-lo na lista de hubs IoT que podem ser selecionados. Para obter detalhes sobre como vincular um hub IoT, consulte Adicionar um Hub IoT vinculado.
Selecione a política de alocação que você deseja aplicar ao registro. A política de alocação padrão para a instância do DPS é selecionada por padrão. Para alocação personalizada, você também precisará especificar um webhook de política de alocação personalizado no Azure Functions. Para obter detalhes, consulte o tutorial Usar políticas de alocação personalizadas.
Defina todas as outras propriedades necessárias para o registro e salve suas configurações.
Use a CLI do Azure para gerenciar a política de alocação de registro e os hubs IoT
Use os comandos az iot dps enrollment create, az iot dps enrollment update, az iot dps enrollment-group create, az iot dps enrollment-group update da CLI do Azure para criar ou atualizar registros individuais ou grupos de registros.
Por exemplo, o comando a seguir cria um grupo de registros de chave simétrica que usa como padrão a política de alocação padrão definida na instância do DPS e todos os hubs IoT vinculados à instância do DPS:
az iot dps enrollment-group create --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup
O comando a seguir atualiza o mesmo grupo de registro para usar a política de alocação de Latência mais baixa com hubs IoT chamados MyExampleHub e MyExampleHub-2:
az iot dps enrollment-group update --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup --allocation-policy geolatency --iot-hubs "MyExampleHub.azure-devices.net MyExampleHub-2.azure-devices.net"
O DPS também dá suporte à configuração da política de alocação e aos hubs IoT selecionados no registro usando as APIs REST Criar ou atualizar o registro individual e Criar ou atualizar o grupo de registros e os SDKs do serviço DPS.
Comportamento de alocação
Observe o seguinte comportamento ao usar políticas de alocação com o Hub IoT:
Com a CLI do Azure, a API REST e os SDKs do serviço DPS, você pode criar registros sem nenhuma política de alocação. Nesse caso, o DPS usa a política padrão para a instância do DPS quando um dispositivo é provisionado por meio do registro. Alterar a configuração de política padrão na instância do DPS alterará a forma como os dispositivos são provisionados por meio do registro.
Com o portal do Azure, a configuração da política de alocação para o registro é preenchida previamente com a política de alocação padrão. Você pode manter essa configuração ou alterá-la para outra política, mas, quando você salva o registro, a política de alocação é definida no registro. As alterações subsequentes na política de alocação padrão do serviço não alterarão a forma como os dispositivos são provisionados por meio do registro.
Para as políticas de alocação Distribuição igualmente ponderada, Latência mais baixa e Personalizadas, você pode configurar o registro para usar todos os hubs IoT vinculados à instância do DPS:
Com a CLI do Azure e os SDKs do serviço DPS, crie o registro sem especificar nenhum hub IoT.
Com o portal do Azure, o registro é preenchido previamente com todos os hubs IoT vinculados à instância do DPS selecionada; desmarque todos os hubs IoT antes de salvar o registro.
Se nenhum hub IoT for selecionado no registro, sempre que um novo hub IoT estiver vinculado à instância do DPS, ele participará da alocação e vice-versa para um hub IoT removido da instância do DPS.
Se os hubs IoT forem especificados em um registro, a configuração dos hubs IoT no registro deverá ser atualizada manual ou programaticamente para que um hub IoT recém-vinculado seja adicionado ou um hub IoT excluído seja removido da alocação.
Alterar a política de alocação ou os hubs IoT usados para um registro afeta apenas os registros subsequentes por meio desse registro. Se quiser que as alterações afetem registros anteriores, você precisará reprovisionar todos os dispositivos registrados anteriormente.
Limitações
Há algumas limitações ao trabalhar com políticas de alocação e pontos de extremidade privados. Para mais informações, confira Limitações do ponto de extremidade privado.
Próximas etapas
Para saber mais sobre como vincular e gerenciar hubs IoT vinculados, confira Gerenciar hubs IoT vinculados.
Para saber mais sobre políticas de alocação personalizadas, confira Entender as políticas de alocação personalizadas.
Para obter um exemplo de ponta a ponta usando a política de alocação de latência mais baixa, consulte o tutorial Provisionar para geolatência.
Para ver um exemplo de ponta a ponta de como usar uma política de alocação personalizada, confira o tutorial Usar políticas de alocação personalizada.