Como usar políticas de alocação para provisionar dispositivos em hubs IoT
O Serviço de Provisionamento de Dispositivo (DPS) do 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 criar e usar suas próprias políticas de alocação quando o 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.
Compreender as 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 foram vinculados à instância do DPS podem participar da alocação. Se um hub IoT vinculado participará da alocação depende das configurações no registro pelo qual um dispositivo provisiona.
O DPS suporta quatro políticas de alocação:
Distribuição ponderada uniformemente: os dispositivos são provisionados para 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 de alocação de um hub IoT pode ser ajustado para aumentar ou diminuir sua probabilidade de ser atribuído. A distribuição ponderada uniformemente é a política de alocação padrão para uma instância DPS. Se você estiver provisionando dispositivos para apenas um hub IoT, recomendamos o uso desta política.
Menor latência: os dispositivos são provisionados para o hub IoT com a menor latência para o dispositivo. Se vários hubs IoT fornecerem a menor latência, o DPS hashará dispositivos nesses hubs com base em seu peso de alocação configurado.
Configuração estática: os dispositivos são provisionados para um único hub IoT, que deve ser especificado no registro.
Personalizado (Usar 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. Seu webhook retorna o hub IoT e o gêmeo inicial do dispositivo (opcional) usado para provisionar o dispositivo. As cargas úteis personalizadas também podem ser passadas de e para o dispositivo. Para saber mais, consulte Compreender as políticas de alocação personalizadas. Não pode ser definido como a política padrão da instância DPS.
Nota
A lista anterior mostra os nomes das políticas de alocação conforme 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 referidos da seguinte forma: hashed, geolatency, static e custom.
Há duas configurações em um hub IoT vinculado que controlam como ele participa da alocação:
Peso de 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 null).
Com a política de alocação de distribuição ponderada uniformemente, os hubs IoT com valores de peso de alocação mais altos têm uma 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 de alocação afetará a probabilidade de um hub IoT ser selecionado quando mais de um hub IoT satisfizer o requisito de latência mais baixa.
Com uma política de alocação personalizada , se e como o valor de 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 (true). Se definido como Não (false), os dispositivos não serão atribuídos ao hub IoT. O hub IoT ainda pode ser selecionado em uma inscrição, 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 estiver se aproximando do número permitido de dispositivos.
Para saber mais sobre como vincular e gerenciar hubs IoT em sua instância DPS, consulte 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 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 dispositivos subsequentes. Os dispositivos já provisionados para um hub IoT não serão afetados. Se pretender que as alterações se apliquem retroativamente a estes dispositivos, terá de as reprovisionar. Para saber mais, consulte Como reprovisionar dispositivos.
Definir a política de alocação padrão para a instância 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 distribuição ponderada uniforme, latência mais baixa e configuração estática são suportadas para a política de alocação padrão. Não há suporte para alocação personalizada . Quando uma instância DPS é criada, sua política padrão é automaticamente definida como distribuição ponderada uniformemente.
Nota
Se você definir Configuração estática como a política de alocação padrão para uma instância 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 esquerdo da instância do DPS, selecione Gerenciar política de alocação.
Selecione o botão para a política de alocação que deseja definir: Menor latência, Distribuição ponderada uniformemente ou Configuração estática. (A alocação personalizada não é suportada para a política de alocação padrão.)
Selecione Guardar.
Usar a CLI do Azure para definir a política de alocação padrão
Use o comando az iot dps update Azure CLI para definir a política de alocação padrão para a instância do DPS. Você usa --set properties.allocationPolicy
para especificar a política. Por exemplo, o comando a seguir define a política de alocação como distribuição ponderada uniformemente (o padrão):
az iot dps update --name MyExampleDps --set properties.allocationPolicy=hashed
O DPS também oferece suporte à definição da política de alocação padrão usando a API REST de recurso do DPS Criar ou Atualizar, os modelos do Gerenciador de Recursos e os SDKs de Gerenciamento do DPS.
Definir política de alocação e hubs IoT para inscrições
Inscrições individuais e grupos de inscrição podem especificar uma política de alocação e os hubs IoT vinculados aos quais ela deve ser aplicada. Se nenhuma política de alocação for especificada pelo registro, a política de alocação padrão para a instância DPS será usada.
Em ambos os casos, aplicam-se as seguintes condições:
Para políticas de distribuição ponderada uniforme, latência mais baixa e alocação personalizada , 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 na lista de hubs IoT vinculados.
Para inscrições individuais e grupos de inscrição, você pode especificar uma política de alocação e os hubs IoT vinculados aos quais aplicá-la ao criar ou atualizar um registro.
Usar 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 esquerdo da instância do DPS, selecione Gerenciar inscrições.
Na página Gerenciar inscrições:
Para criar um novo registro, selecione a guia Grupos de inscrição ou Inscrições individuais e, em seguida, selecione Adicionar grupo de inscrição ou Adicionar inscrição individual.
Para atualizar uma inscrição existente, selecione-a na lista na guia Grupos de Inscrição ou Inscrições Individuais.
Na página Adicionar Registro (ao criar) ou na página Detalhes do Registro (na atualização), selecione a guia Hubs IoT. Nesta guia, você pode selecionar a política de alocação que deseja aplicar 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 você selecionar a política de alocação de configuração estática, estará limitado a selecionar 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 deseja aplicar à inscrição. A política de alocação padrão para a instância DPS é selecionada por padrão. Para alocação personalizada, você também precisará especificar um webhook de política de alocação personalizada no Azure Functions. Para obter detalhes, consulte o tutorial Usar políticas de alocação personalizadas.
Defina quaisquer outras propriedades necessárias para o registro e salve suas configurações.
Usar 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 Azure CLI para criar ou atualizar inscrições individuais ou grupos de inscrição.
Por exemplo, o comando a seguir cria um grupo de registro de chave simétrica que usa como padrão a política de alocação padrão definida na instância DPS e todos os hubs IoT vinculados à instância 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 menor latência 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 oferece suporte à definição de políticas de alocação e hubs IoT selecionados no registro usando as APIs REST do grupo Criar ou Atualizar registro individual e Criar ou Atualizar registro e os SDKs de 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 de serviço DPS, você pode criar inscrições sem 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 DPS alterará a forma como os dispositivos são provisionados por meio do registro.
Com o portal do Azure, a configuração de 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 à 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 Distribuição igualmente ponderada, Menor latência e Alocação personalizada , você pode configurar o registro para usar todos os hubs IoT vinculados à instância do DPS:
Com a CLI do Azure e os SDKs de serviço DPS, crie o registro sem especificar nenhum hub IoT.
Com o portal do Azure, o registro é pré-preenchido 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 que é removido da instância 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.
A alteração da política de alocação ou dos hubs IoT usados para um registro afeta apenas os registros subsequentes por meio desse registro. Se pretender que as alterações afetem os registos anteriores, terá de reprovisionar todos os dispositivos registados anteriormente.
Limitações
Há algumas limitações ao trabalhar com políticas de alocação e pontos de extremidade privados. Para obter mais informações, consulte Limitações de ponto de extremidade privado.
Próximos passos
Para saber mais sobre como vincular e gerenciar hubs IoT vinculados, consulte Gerenciar hubs IoT vinculados.
Para saber mais sobre políticas de alocação personalizadas, consulte Compreender 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 Provisão para geolatência .
Para obter um exemplo de ponta a ponta usando uma política de alocação personalizada, consulte o tutorial Usar políticas de alocação personalizadas.