Skip to content

Commit 97b67f1

Browse files
committed
edit
1 parent 91137dc commit 97b67f1

File tree

1 file changed

+61
-33
lines changed

1 file changed

+61
-33
lines changed

articles/reliability/reliability-event-hubs.md

Lines changed: 61 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,57 +18,43 @@ This article describes reliability support in [Azure Event Hubs](../event-hubs/e
1818

1919
## Availability zone support
2020

21-
[!INCLUDE [Reliability recommendations](includes/reliability-recommendations-include.md)]
21+
[!INCLUDE [Availability zone description](includes/reliability-availability-zone-description-include.md)]
2222

23+
Event Hubs supports [availability zones](../availability-zones/az-overview.md) with [zone redundancy](./availability-zones-overview.md#zonal-and-zone-redundant-services), providing fault-isolated locations within an Azure region. Both metadata and data (events) are replicated across data centers in each availability zone.
2324

24-
Event Hubs supports [availability zones](../availability-zones/az-overview.md), providing fault-isolated locations within an Azure region. The Availability Zones support is only available in [Azure regions with availability zones](../availability-zones/az-region.md#azure-regions-with-availability-zones). Both metadata and data (events) are replicated across data centers in the availability zone.
25+
### Prerequisites
2526

26-
When creating a namespace, you see the following highlighted message when you select a region that has availability zones.
27+
Availability zone support is only available in [Azure regions with availability zones](./availability-zones-service-support.md).
2728

28-
:::image type="content" source="../event-hubs/media/event-hubs-geo-dr/eh-az.png" alt-text="Image showing the Create Namespace page with region that has availability zones":::
2929

30-
> [!NOTE]
31-
> When you use the Azure portal, zone redundancy via support for availability zones is automatically enabled. You can't disable it in the portal. You can use the Azure CLI command [`az eventhubs namespace`](/cli/azure/eventhubs/namespace#az-eventhubs-namespace-create) with `--zone-redundant=false` or use the PowerShell command [`New-AzEventHubNamespace`](/powershell/module/az.eventhub/new-azeventhubnamespace) with `-ZoneRedundant=false` to create a namespace with zone redundancy disabled.
30+
### Create a resource with availability zones enabled
3231

33-
## Private endpoints
34-
This section provides more considerations when using Geo-disaster recovery with namespaces that use private endpoints. To learn about using private endpoints with Event Hubs in general, see [Configure private endpoints](private-link-service.md).
32+
When you use the Azure portal, zone redundancy is automatically enabled. When you create a namespace, you see the following highlighted message when you select a region that supports availability zones.
3533

36-
### New pairings
37-
If you try to create a pairing between a primary namespace with a private endpoint and a secondary namespace without a private endpoint, the pairing will fail. The pairing will succeed only if both primary and secondary namespaces have private endpoints. We recommend that you use same configurations on the primary and secondary namespaces and on virtual networks in which private endpoints are created.
34+
:::image type="content" source="../event-hubs/media/event-hubs-geo-dr/eh-az.png" alt-text="Image showing the Create Namespace page with region that has availability zones":::
3835

39-
> [!NOTE]
40-
> When you try to pair the primary namespace with private endpoint and a secondary namespace, the validation process only checks whether a private endpoint exists on the secondary namespace. It doesn't check whether the endpoint works or will work after failover. It's your responsibility to ensure that the secondary namespace with private endpoint will work as expected after failover.
41-
>
42-
> To test that the private endpoint configurations are same on primary and secondary namespaces, send a read request (for example: [Get Event Hub](/rest/api/eventhub/get-event-hub)) to the secondary namespace from outside the virtual network, and verify that you receive an error message from the service.
4336

44-
### Existing pairings
45-
If pairing between primary and secondary namespace already exists, private endpoint creation on the primary namespace will fail. To resolve, create a private endpoint on the secondary namespace first and then create one for the primary namespace.
37+
### Disable availability zones
4638

47-
> [!NOTE]
48-
> While we allow read-only access to the secondary namespace, updates to the private endpoint configurations are permitted.
39+
The Azure portal doesn't support disabling availability zones. To disable availability zones, use one of the following methods:
4940

50-
### Recommended configuration
51-
When creating a disaster recovery configuration for your application and Event Hubs namespaces, you must create private endpoints for both primary and secondary Event Hubs namespaces against virtual networks hosting both primary and secondary instances of your application.
41+
- Azure CLI command [`az eventhubs namespace`](/cli/azure/eventhubs/namespace#az-eventhubs-namespace-create) with `--zone-redundant=false`
5242

53-
Let's say you have two virtual networks: VNET-1, VNET-2 and these primary and secondary namespaces: EventHubs-Namespace1-Primary, EventHubs-Namespace2-Secondary. You need to do the following steps:
43+
- PowerShell command [`New-AzEventHubNamespace`](/powershell/module/az.eventhub/new-azeventhubnamespace) with `-ZoneRedundant=false` to create a namespace with zone redundancy disabled.
5444

55-
- On EventHubs-Namespace1-Primary, create two private endpoints that use subnets from VNET-1 and VNET-2
56-
- On EventHubs-Namespace2-Secondary, create two private endpoints that use the same subnets from VNET-1 and VNET-2
45+
### Availability zone migration
5746

58-
![Private endpoints and virtual networks](../event-hubs/media/event-hubs-geo-dr/private-endpoints-virtual-networks.png)
47+
Need Info. What is the process for migrating service from non-availability zone to availability zone?
5948

60-
Advantage of this approach is that failover can happen at the application layer independent of Event Hubs namespace. Consider the following scenarios:
49+
### Fault tolerance
50+
Need Info. Are there any recommendations for fault tolerance?
6151

62-
**Application-only failover:** Here, the application won't exist in VNET-1 but will move to VNET-2. As both private endpoints are configured on both VNET-1 and VNET-2 for both primary and secondary namespaces, the application will just work.
52+
### Zone down experience
6353

64-
**Event Hubs namespace-only failover**: Here again, since both private endpoints are configured on both virtual networks for both primary and secondary namespaces, the application will just work.
54+
When a client application sends events to an event hub without specifying a partition, events are automatically distributed among partitions in your event hub. If a partition isn't available for some reason, events are distributed among the remaining partitions. This behavior allows for the greatest amount of up time. For use cases that require the maximum up time, this model is preferred instead of sending events to a specific partition.
6555

66-
> [!NOTE]
67-
> For guidance on geo-disaster recovery of a virtual network, see [Virtual Network - Business Continuity](../virtual-network/virtual-network-disaster-recovery-guidance.md).
68-
69-
## Role-based access control
70-
Microsoft Entra role-based access control (RBAC) assignments to entities in the primary namespace aren't replicated to the secondary namespace. Create role assignments manually in the secondary namespace to secure access to them.
71-
56+
### Pricing
57+
Need Info. Any pricing considerations when using availability zones?
7258

7359

7460
## Cross-region disaster recovery and business continuity
@@ -102,6 +88,48 @@ The following terms are used in this article:
10288
- *Metadata*: Entities such as event hubs and consumer groups; and their properties of the service that are associated with the namespace. Only entities and their settings are replicated automatically. Messages and events aren't replicated.
10389
- *Failover*: The process of activating the secondary namespace.
10490

91+
## Private endpoints
92+
This section provides more considerations when using Geo-disaster recovery with namespaces that use private endpoints. To learn about using private endpoints with Event Hubs in general, see [Configure private endpoints](../event-hubs/private-link-service.md).
93+
94+
95+
96+
### New pairings
97+
If you try to create a pairing between a primary namespace with a private endpoint and a secondary namespace without a private endpoint, the pairing will fail. The pairing will succeed only if both primary and secondary namespaces have private endpoints. We recommend that you use same configurations on the primary and secondary namespaces and on virtual networks in which private endpoints are created.
98+
99+
> [!NOTE]
100+
> When you try to pair the primary namespace with private endpoint and a secondary namespace, the validation process only checks whether a private endpoint exists on the secondary namespace. It doesn't check whether the endpoint works or will work after failover. It's your responsibility to ensure that the secondary namespace with private endpoint will work as expected after failover.
101+
>
102+
> To test that the private endpoint configurations are same on primary and secondary namespaces, send a read request (for example: [Get Event Hub](/rest/api/eventhub/get-event-hub)) to the secondary namespace from outside the virtual network, and verify that you receive an error message from the service.
103+
104+
### Existing pairings
105+
If pairing between primary and secondary namespace already exists, private endpoint creation on the primary namespace will fail. To resolve, create a private endpoint on the secondary namespace first and then create one for the primary namespace.
106+
107+
> [!NOTE]
108+
> While we allow read-only access to the secondary namespace, updates to the private endpoint configurations are permitted.
109+
110+
### Recommended configuration
111+
When creating a disaster recovery configuration for your application and Event Hubs namespaces, you must create private endpoints for both primary and secondary Event Hubs namespaces against virtual networks hosting both primary and secondary instances of your application.
112+
113+
Let's say you have two virtual networks: VNET-1, VNET-2 and these primary and secondary namespaces: EventHubs-Namespace1-Primary, EventHubs-Namespace2-Secondary. You need to do the following steps:
114+
115+
- On EventHubs-Namespace1-Primary, create two private endpoints that use subnets from VNET-1 and VNET-2
116+
- On EventHubs-Namespace2-Secondary, create two private endpoints that use the same subnets from VNET-1 and VNET-2
117+
118+
![Private endpoints and virtual networks](../event-hubs/media/event-hubs-geo-dr/private-endpoints-virtual-networks.png)
119+
120+
Advantage of this approach is that failover can happen at the application layer independent of Event Hubs namespace. Consider the following scenarios:
121+
122+
**Application-only failover:** Here, the application won't exist in VNET-1 but will move to VNET-2. As both private endpoints are configured on both VNET-1 and VNET-2 for both primary and secondary namespaces, the application will just work.
123+
124+
**Event Hubs namespace-only failover**: Here again, since both private endpoints are configured on both virtual networks for both primary and secondary namespaces, the application will just work.
125+
126+
> [!NOTE]
127+
> For guidance on geo-disaster recovery of a virtual network, see [Virtual Network - Business Continuity](../virtual-network/virtual-network-disaster-recovery-guidance.md).
128+
129+
130+
## Role-based access control
131+
Microsoft Entra role-based access control (RBAC) assignments to entities in the primary namespace aren't replicated to the secondary namespace. Create role assignments manually in the secondary namespace to secure access to them.
132+
105133
## Supported namespace pairs
106134
The following combinations of primary and secondary namespaces are supported:
107135

0 commit comments

Comments
 (0)