Alta disponibilidade e recuperação de desastres do Hub IoTIoT Hub high availability and disaster recovery

Como primeiro passo para implementar uma solução de IoT resiliente, os arquitetos, desenvolvedores e proprietários de negócios devem definir as metas de tempo de atividade das soluções que estão criando.As a first step towards implementing a resilient IoT solution, architects, developers, and business owners must define the uptime goals for the solutions they're building. Essas metas podem ser definidas principalmente com base em objetivos de negócios específicos para cada cenário.These goals can be defined primarily based on specific business objectives for each scenario. Neste contexto, o artigo Orientação Técnica de Continuidade de Negócios do Azure descreve uma estrutura geral para ajudá-lo a pensar em continuidade de negócios e recuperação de desastres.In this context, the article Azure Business Continuity Technical Guidance describes a general framework to help you think about business continuity and disaster recovery. O documento Recuperação de desastre e alta disponibilidade para aplicativos do Azure fornece diretrizes de arquitetura sobre estratégias para que os aplicativos do Azure consigam alta disponibilidade (HA) e recuperação de desastres (DR).The Disaster recovery and high availability for Azure applications paper provides architecture guidance on strategies for Azure applications to achieve High Availability (HA) and Disaster Recovery (DR).

Este artigo descreve os recursos de HA e DR oferecidos especificamente pelo serviço IoT Hub.This article discusses the HA and DR features offered specifically by the IoT Hub service. As grandes áreas discutidas neste artigo são:The broad areas discussed in this article are:

  • HA entre regiõesIntra-region HA
  • Recuperação de desastres de região cruzadaCross region DR
  • Alcançar a região cruzada HAAchieving cross region HA

Dependendo das metas de tempo de atividade definidas para suas soluções de IoT, você deve determinar quais das opções descritas abaixo são mais adequadas aos seus objetivos de negócios.Depending on the uptime goals you define for your IoT solutions, you should determine which of the options outlined below best suit your business objectives. Incorporar qualquer uma dessas alternativas de HA / DR à sua solução de IoT requer uma avaliação cuidadosa dos trade-offs entre:Incorporating any of these HA/DR alternatives into your IoT solution requires a careful evaluation of the trade-offs between the:

  • Nível de resiliência que você precisaLevel of resiliency you require
  • Complexidade de implementação e manutençãoImplementation and maintenance complexity
  • Impacto de COGSCOGS impact

HA entre regiõesIntra-region HA

O serviço Hub IoT fornece HA intra-região implementando redundâncias em quase todas as camadas do serviço.The IoT Hub service provides intra-region HA by implementing redundancies in almost all layers of the service. O SLA publicado pelo serviço IoT Hub é obtido com o uso dessas redundâncias.The SLA published by the IoT Hub service is achieved by making use of these redundancies. Nenhum trabalho adicional é exigido pelos desenvolvedores de uma solução de IoT para aproveitar esses recursos de alta disponibilidade.No additional work is required by the developers of an IoT solution to take advantage of these HA features. Embora o IoT Hub ofereça uma garantia razoavelmente alta de tempo de atividade, falhas transitórias ainda podem ser esperadas como em qualquer plataforma de computação distribuída.Although IoT Hub offers a reasonably high uptime guarantee, transient failures can still be expected as with any distributed computing platform. Se você estiver apenas começando a migrar suas soluções para a nuvem de uma solução local, seu foco precisará mudar da otimização "tempo médio entre falhas" para "tempo médio de recuperação".If you're just getting started with migrating your solutions to the cloud from an on-premises solution, your focus needs to shift from optimizing "mean time between failures" to "mean time to recover". Em outras palavras, falhas transitórias devem ser consideradas normais durante a operação com a nuvem no mix.In other words, transient failures are to be considered normal while operating with the cloud in the mix. As políticas de repetição adequadas devem ser incorporadas aos componentes que interagem com um aplicativo em nuvem para lidar com falhas transitórias.Appropriate retry policies must be built in to the components interacting with a cloud application to deal with transient failures.

Observação

Alguns serviços do Azure também fornecem camadas adicionais de disponibilidade em uma região, integrando com Zonas de disponibilidade (AZs).Some Azure services also provide additional layers of availability within a region by integrating with Availability Zones (AZs). No momento, os AZs não são suportados pelo serviço IoT Hub.AZs are currently not supported by the IoT Hub service.

Recuperação de desastres de região cruzadaCross region DR

Pode haver algumas situações raras em que um datacenter experimenta interrupções prolongadas devido a falhas de energia ou outras falhas envolvendo ativos físicos.There could be some rare situations when a datacenter experiences extended outages due to power failures or other failures involving physical assets. Tais eventos são raros durante os quais a capacidade de HA da região intra descrita acima nem sempre ajuda.Such events are rare during which the intra region HA capability described above may not always help. O Hub IoT fornece várias soluções para recuperar-se de interrupções prolongadas.IoT Hub provides multiple solutions for recovering from such extended outages.

As opções de recuperação disponíveis para clientes nessa situação são o failover iniciado pela Microsoft e o failover manual.The recovery options available to customers in such a situation are Microsoft-initiated failover and manual failover. A diferença fundamental entre os dois é que a Microsoft inicia a primeira e o usuário inicia a segunda.The fundamental difference between the two is that Microsoft initiates the former and the user initiates the latter. Além disso, o failover manual fornece um menor objetivo tempo de recuperação (RTO) em comparação comparado a opção de failover iniciado pelo Microsoft.Also, manual failover provides a lower recovery time objective (RTO) compared to the Microsoft-initiated failover option. Os RTOs específicos oferecidos com cada opção são discutidos nas seções abaixo.The specific RTOs offered with each option are discussed in the sections below. Quando qualquer uma dessas opções para executar o failover de um hub de IoT de sua região primária for exercida, o hub se tornará totalmente funcional na região correspondente do Azure emparelhada geograficamente.When either of these options to perform failover of an IoT hub from its primary region is exercised, the hub becomes fully functional in the corresponding Azure geo-paired region.

Ambas as opções de failover oferecem os seguintes objetivos de ponto de recuperação (RPOs):Both these failover options offer the following recovery point objectives (RPOs):

Tipo de dadosData type Objetivos do ponto de recuperação (RPO)Recovery point objectives (RPO)
Registro de identidadeIdentity registry Perda de dados de 0 a 5 minutos0-5 mins data loss
Dados do dispositivo gêmeoDevice twin data Perda de dados de 0 a 5 minutos0-5 mins data loss
Mensagens da nuvem para dispositivo1Cloud-to-device messages1 Perda de dados de 0 a 5 minutos0-5 mins data loss
Pai1 e trabalhos do dispositivoParent1 and device jobs Perda de dados de 0 a 5 minutos0-5 mins data loss
Mensagens do dispositivo para a nuvemDevice-to-cloud messages Todas as mensagens não lidas são perdidasAll unread messages are lost
Mensagens de monitoramento de operaçõesOperations monitoring messages Todas as mensagens não lidas são perdidasAll unread messages are lost
Mensagens de feedback da nuvem para o dispositivoCloud-to-device feedback messages Todas as mensagens não lidas são perdidasAll unread messages are lost

1 As mensagens da nuvem para o dispositivo e os trabalhos pai não são recuperados como parte do failover manual.1Cloud-to-device messages and parent jobs do not get recovered as a part of manual failover.

Depois que a operação de failover do hub IoT for concluída, espera-se que todas as operações do dispositivo e dos aplicativos de back-end continuem funcionando sem exigir uma intervenção manual.Once the failover operation for the IoT hub completes, all operations from the device and back-end applications are expected to continue working without requiring a manual intervention. Isso significa que as mensagens do dispositivo para a nuvem devem continuar funcionando e todo o registro do dispositivo está intacto.This means that your device-to-cloud messages should continue to work, and the entire device registry is intact. Os eventos emitidos por meio da grade de eventos podem ser consumidos por meio da mesma assinatura (s) configurada anteriormente, desde que as assinaturas da grade de eventos continuem disponíveis.Events emitted via Event Grid can be consumed via the same subscription(s) configured earlier as long as those Event Grid subscriptions continue to be available.

Cuidado

  • O nome e o ponto final do Hub compatível com eventos do ponto de extremidade de eventos internos do Hub IoT são alterados após o failover.The Event Hub-compatible name and endpoint of the IoT Hub built-in Events endpoint change after failover. Ao receber mensagens de telemetria do terminal interno usando o host do hub de eventos ou do processador de eventos, você deve usar a cadeia de conexão de hub IoT para estabelecer a conexão.When receiving telemetry messages from the built-in endpoint using either the event hub client or event processor host, you should use the IoT hub connection string to establish the connection. Isso garante que seus aplicativos de back-end continuem a funcionar sem exigir o failover de pós-intervenção manual.This ensures that your back-end applications continue to work without requiring manual intervention post failover. Se você usar o nome e o ponto de extremidade compatíveis com Event Hub no seu aplicativo de backend diretamente, precisará reconfigurar seu aplicativo buscando o novo nome e ponto de extremidade compatíveis com o Event Hub após o failover para continuar as operações.If you use the Event Hub-compatible name and endpoint in your back-end application directly, you will need to reconfigure your application by fetching the new Event Hub-compatible name and endpoint after failover to continue operations.

  • Ao rotear para o armazenamento, é recomendável listar os BLOBs ou arquivos e, em seguida, iterar sobre eles, para garantir que todos os BLOBs ou arquivos sejam lidos sem fazer nenhuma suposição de partição.When routing to storage, we recommend listing the blobs or files and then iterating over them, to ensure all blobs or files are read without making any assumptions of partition. O intervalo de partição pode ser alterado durante um failover iniciado pela Microsoft ou um failover manual.The partition range could potentially change during a Microsoft-initiated failover or manual failover. Você pode usar a API listar BLOBs para enumerar a lista de BLOBs ou listar ADLS Gen2 API para a lista de arquivos.You can use the List Blobs API to enumerate the list of blobs or List ADLS Gen2 API for the list of files.

Failover iniciado pelo MicrosoftMicrosoft-initiated failover

Failover iniciado pelo Microsoft seja utilizado pela Microsoft em raras situações de failover a IoT todos os hubs de uma região afetada à região geográfica emparelhada correspondente.Microsoft-initiated failover is exercised by Microsoft in rare situations to failover all the IoT hubs from an affected region to the corresponding geo-paired region. Este processo é uma opção padrão (não há como os usuários optarem por não participar) e não requer intervenção do usuário.This process is a default option (no way for users to opt out) and requires no intervention from the user. A Microsoft se reserva o direito de determinar quando essa opção será exercida.Microsoft reserves the right to make a determination of when this option will be exercised. Esse mecanismo não envolve o consentimento do usuário antes do failover do hub do usuário.This mechanism doesn't involve a user consent before the user's hub is failed over. Failover iniciado pelo Microsoft tem um objetivo de tempo de recuperação (RTO) de 2 a 26 horas.Microsoft-initiated failover has a recovery time objective (RTO) of 2-26 hours.

O grande RTO é porque a Microsoft deve executar a operação de failover em nome de todos os clientes afetados nessa região.The large RTO is because Microsoft must perform the failover operation on behalf of all the affected customers in that region. Se você estiver executando uma solução de IoT menos importante que possa manter um tempo de inatividade de aproximadamente um dia, não há problema em você depender dessa opção para satisfazer as metas gerais de recuperação de desastre da sua solução de IoT.If you are running a less critical IoT solution that can sustain a downtime of roughly a day, it is ok for you to take a dependency on this option to satisfy the overall disaster recovery goals for your IoT solution. O tempo total para operações de tempo de execução se tornarem totalmente operacionais depois que esse processo é acionado é descrito na seção "Tempo para recuperação".The total time for runtime operations to become fully operational once this process is triggered, is described in the "Time to recover" section.

Failover manualManual failover

Se suas metas de tempo de atividade de negócios não forem satisfeitas pelo RTO fornecido pelo failover do Microsoft, considere usar o failover manual para disparar o processo de failover por conta própria.If your business uptime goals aren't satisfied by the RTO that Microsoft initiated failover provides, consider using manual failover to trigger the failover process yourself. O RTO usando essa opção pode estar entre 10 minutos a algumas horas.The RTO using this option could be anywhere between 10 minutes to a couple of hours. O RTO é atualmente uma função do número de dispositivos registrados em relação à instância do hub IoT com failover.The RTO is currently a function of the number of devices registered against the IoT hub instance being failed over. Você pode esperar que o RTO para um hub que hospede aproximadamente 100.000 dispositivos seja de 15 minutos.You can expect the RTO for a hub hosting approximately 100,000 devices to be in the ballpark of 15 minutes. O tempo total para operações de tempo de execução se tornarem totalmente operacionais depois que esse processo é acionado é descrito na seção "Tempo para recuperação".The total time for runtime operations to become fully operational once this process is triggered, is described in the "Time to recover" section.

A opção de failover manual está sempre disponível para uso, independentemente de a região principal estar com tempo de inatividade ou não.The manual failover option is always available for use irrespective of whether the primary region is experiencing downtime or not. Portanto, essa opção poderia ser usada para realizar failovers planejados.Therefore, this option could potentially be used to perform planned failovers. Um exemplo de uso de failovers planejados é executar exercícios de failover periódicos.One example usage of planned failovers is to perform periodic failover drills. Uma palavra de cautela é que uma operação de failover planejada resulta em um tempo de inatividade para o hub para o período definido pelo RTO para essa opção e também resulta em uma perda de dados, conforme definido pela tabela de RPO acima.A word of caution though is that a planned failover operation results in a downtime for the hub for the period defined by the RTO for this option, and also results in a data loss as defined by the RPO table above. Você pode considerar a configuração de uma instância de hub de IoT de teste para exercer a opção de failover planejada periodicamente para ganhar confiança em sua capacidade de obter suas soluções de ponta a ponta funcionando quando ocorre um desastre real.You could consider setting up a test IoT hub instance to exercise the planned failover option periodically to gain confidence in your ability to get your end-to-end solutions up and running when a real disaster happens.

Importante

  • Os exercícios de teste não devem ser executados em hubs de IoT que estão sendo usados em seus ambientes de produção.Test drills should not be performed on IoT hubs that are being used in your production environments.

  • O failover manual não deve ser usado como um mecanismo para migrar permanentemente seu hub entre as regiões emparelhadas do Azure.Manual failover should not be used as a mechanism to permanently migrate your hub between the Azure geo paired regions. Fazer isso causaria uma latência maior para as operações que estão sendo executadas no hub a partir de dispositivos hospedados na antiga região primária.Doing so would cause an increased latency for the operations being performed against the hub from devices homed in the old primary region.

FailbackFailback

O failback para a região principal antiga pode ser obtido acionando a ação de failover em outra ocasião.Failing back to the old primary region can be achieved by triggering the failover action another time. Se a operação de failover original foi executada para recuperar de uma interrupção estendida na região primária original, recomendamos que o hub seja reprovado para o local original depois que esse local tiver se recuperado da situação de interrupção.If the original failover operation was performed to recover from an extended outage in the original primary region, we recommended that the hub should be failed back to the original location once that location has recovered from the outage situation.

Importante

  • Os usuários só podem executar 2 failover bem-sucedido e 2 operações de failback bem-sucedidas por dia.Users are only allowed to perform 2 successful failover and 2 successful failback operations per day.

  • As operações de failover / failback de volta para trás não são permitidas.Back to back failover/failback operations are not allowed. Você deve aguardar uma hora entre essas operações.You must wait for 1 hour between these operations.

Tempo de recuperaçãoTime to recover

Embora o FQDN (e, portanto, a cadeia de conexão) da instância do Hub IoT permaneça o mesmo failover pós, o endereço IP subjacente é alterado.While the FQDN (and therefore the connection string) of the IoT hub instance remains the same post failover, the underlying IP address changes. Portanto, o tempo geral para as operações de tempo de execução que está sendo executada em relação a sua instância do hub IoT para se tornar totalmente operacional depois que o processo de failover é disparado pode ser expresso usando a função a seguir.Therefore the overall time for the runtime operations being performed against your IoT hub instance to become fully operational after the failover process is triggered can be expressed using the following function.

Tempo para recuperar = RTO [10 min - 2 horas para failover manual | 2 a 26 horas para failover iniciado pela Microsoft] + atraso de propagação de DNS + tempo gasto pelo aplicativo cliente para atualizar qualquer endereço IP do IoT Hub armazenado em cache.Time to recover = RTO [10 min - 2 hours for manual failover | 2 - 26 hours for Microsoft-initiated failover] + DNS propagation delay + Time taken by the client application to refresh any cached IoT Hub IP address.

Importante

Os SDKs da IoT não armazenam em cache o endereço IP do hub IoT.The IoT SDKs do not cache the IP address of the IoT hub. Recomendamos que a interface de código de usuário com os SDKs não armazene em cache o endereço IP do hub IoT.We recommend that user code interfacing with the SDKs should not cache the IP address of the IoT hub.

Alcance a região cruzada HAAchieve cross region HA

Se suas metas de tempo de atividade de negócios não forem atendidas pelo RTO que as opções de failover manual ou de failover iniciadas pela Microsoft fornecem, você deve considerar a implementação de um mecanismo de failover de região cruzada automático por dispositivo.If your business uptime goals aren't satisfied by the RTO that either Microsoft-initiated failover or manual failover options provide, you should consider implementing a per-device automatic cross region failover mechanism. Um tratamento completo das topologias de implantação em soluções de IoT está fora do escopo deste artigo.A complete treatment of deployment topologies in IoT solutions is outside the scope of this article. O artigo discute o modelo de implantação de failover regional para fins de alta disponibilidade e recuperação de desastres.The article discusses the regional failover deployment model for the purpose of high availability and disaster recovery.

Em um modelo de failover regional, o back-end da solução é executado primariamente em um local de datacenter.In a regional failover model, the solution back end runs primarily in one datacenter location. Um hub IoT secundário e o back-end são implantadas em outro local do datacenter.A secondary IoT hub and back end are deployed in another datacenter location. Se o hub IoT na região primária sofrer uma interrupção ou a conectividade de rede do dispositivo para a região principal for interrompida, os dispositivos usarão um ponto de extremidade de serviço secundário.If the IoT hub in the primary region suffers an outage or the network connectivity from the device to the primary region is interrupted, devices use a secondary service endpoint. Você pode melhorar a disponibilidade da solução com a implementação de um modelo de failover entre regiões, em vez de manter-se dentro de uma única região.You can improve the solution availability by implementing a cross-region failover model instead of staying within a single region.

Em um nível alto, para implementar um modelo de failover regional com o Hub IoT, você precisa seguir os seguintes passos:At a high level, to implement a regional failover model with IoT Hub, you need to take the following steps:

  • Uma lógica de roteamento de dispositivo e Hub IoT secundário: se o serviço na sua região primária for interrompido, os dispositivos deverão começar a conectar-se da sua região secundária.A secondary IoT hub and device routing logic: If service in your primary region is disrupted, devices must start connecting to your secondary region. Com base na natureza consciente do estado da maioria dos serviços envolvidos, é comum os administradores de solução acionarem o processo de failover entre regiões.Given the state-aware nature of most services involved, it's common for solution administrators to trigger the inter-region failover process. A melhor maneira de comunicar o novo ponto de extremidade para os dispositivos, enquanto mantém o controle do processo, é fazer com que eles verifiquem regularmente um serviço de concierge para o ponto de extremidade ativo atual.The best way to communicate the new endpoint to devices, while maintaining control of the process, is to have them regularly check a concierge service for the current active endpoint. O serviço de concierge pode ser um aplicativo Web que é replicado e acessível usando técnicas de redirecionamento de DNS (por exemplo, usando o Gerenciador de Tráfego do Azure).The concierge service can be a web application that is replicated and kept reachable using DNS-redirection techniques (for example, using Azure Traffic Manager).

    Observação

    O serviço de hub da IoT não é um tipo de terminal suportado no Gerenciador de Tráfego do Azure.IoT hub service is not a supported endpoint type in Azure Traffic Manager. A recomendação é integrar o serviço de concierge proposto ao gerenciador de tráfego do Azure, implementando a API de análise de integridade do ponto de extremidade.The recommendation is to integrate the proposed concierge service with Azure traffic manager by making it implement the endpoint health probe API.

  • Replicação do registro de identidade: para ser utilizável, o Hub IoT secundário deverá conter todas as identidades de dispositivo que possam se conectar à solução.Identity registry replication: To be usable, the secondary IoT hub must contain all device identities that can connect to the solution. A solução deve manter backups replicados geograficamente das identidades do dispositivo e carregá-los no Hub IoT secundário antes de mudar o ponto de extremidade ativo para os dispositivos.The solution should keep geo-replicated backups of device identities, and upload them to the secondary IoT hub before switching the active endpoint for the devices. A funcionalidade de exportação de identidade do dispositivo do Hub IoT é útil neste contexto.The device identity export functionality of IoT Hub is useful in this context. Para obter mais informações, consulte Guia do desenvolvedor do Hub IoT - Registro de identidade.For more information, see IoT Hub developer guide - identity registry.

  • Lógica de mesclagem: quando a região primária ficar disponível novamente, o estado e os dados criados no site secundário deverão ser migrados de volta para a região primária.Merging logic: When the primary region becomes available again, all the state and data that have been created in the secondary site must be migrated back to the primary region. Esse estado e os dados estão relacionados principalmente às identidades de dispositivo e aos metadados do aplicativo, que deverão ser mesclados ao Hub IoT primário e com todos os outros armazenamentos específicos do aplicativo na região primária.This state and data mostly relate to device identities and application metadata, which must be merged with the primary IoT hub and any other application-specific stores in the primary region.

Para simplificar essa etapa, você deve usar operações idempotentes.To simplify this step, you should use idempotent operations. Operações idempotentes minimizam os efeitos colaterais da distribuição eventual e consistente de eventos e também de duplicatas ou a entrega de eventos fora de ordem.Idempotent operations minimize the side-effects from the eventual consistent distribution of events, and from duplicates or out-of-order delivery of events. Além disso, a lógica do aplicativo deve ser projetada para tolerar possíveis inconsistências ou um estado ligeiramente desatualizado.In addition, the application logic should be designed to tolerate potential inconsistencies or slightly out-of-date state. Essa situação pode ocorrer devido ao tempo adicional necessário para o sistema recuperar com base nos objetivos de ponto de recuperação (RPO).This situation can occur due to the additional time it takes for the system to heal based on recovery point objectives (RPO).

Escolha a opção de HA/DR certaChoose the right HA/DR option

Aqui está um resumo das opções de HA/DR apresentado neste artigo que pode ser usado como um quadro de referência para escolher a opção correta que funciona para sua solução.Here's a summary of the HA/DR options presented in this article that can be used as a frame of reference to choose the right option that works for your solution.

Opção de HA/DRHA/DR option RTORTO RPORPO Requer intervenção manual?Requires manual intervention? Complexidade da implementaçãoImplementation complexity Impacto do custo adicionalAdditional cost impact
Failover iniciado pelo MicrosoftMicrosoft-initiated failover 2 - 26 horas2 - 26 hours Consulte a tabela RPO acimaRefer RPO table above NãoNo NenhumNone NenhumNone
Failover manualManual failover 10 min - 2 horas10 min - 2 hours Consulte a tabela RPO acimaRefer RPO table above SimYes Muito baixa.Very low. Você só precisará disparar essa operação no portal.You only need to trigger this operation from the portal. NenhumNone
Entre a alta disponibilidade de regiãoCross region HA < 1 minuto< 1 min Depende da frequência de replicação de sua solução personalizada de alta disponibilidadeDepends on the replication frequency of your custom HA solution NãoNo AltoHigh > 1 vezes o custo do hub do IoT 1> 1x the cost of 1 IoT hub

Próximas etapasNext steps