IoT Hub is a PaaS platform from Azure. Customers and users do not directly interact with the underlying number and size of virtual machines on which the IoT Hub service is running. Users decide on the region, the SKU of the IoT Hub, and the number of units for their application. The rest of the configuration is determined and executed by Azure behind the scenes. Azure ensures that every PaaS service is highly available by default. It does so by ensuring that multiple virtual machines provisioned behind the service are on separate racks in the data center. It does this by placing those virtual machines on an availability set and on a separate fault and update domain. This helps in high availability for both planned as well as unplanned maintenance. Availability sets take care of high availability at data center level.
To achieve high availability across multiple data centers in a region or across regions, customers should take additional action to provision additional IoT Hub services in different regions, ensure that devices are registered at all IoT Hub services, and ensure that each have the same identifier. The best way to do this is to create a separate monitoring application (such as a web application), all tied up using Traffic Manager, and continually monitor the Traffic Manager endpoint for current location unavailability, such that traffic can be redirected to other IoT Hubs if needs be. For this to happen, you'd need to write logic to route the device messages to the new IoT Hub.