Skip to content

Commit 4c19829

Browse files
authored
Merge pull request #256496 from khdownie/kendownie-acstor-multizone
enable multizone redundancy for ACStor
2 parents 2fda48f + fa33828 commit 4c19829

File tree

2 files changed

+92
-1
lines changed

2 files changed

+92
-1
lines changed

articles/storage/container-storage/TOC.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
- name: Expand a persistent volume
2525
href: resize-volume.md
2626
- name: Clone a persistent volume
27-
href: clone-volume.md
27+
href: clone-volume.md
28+
- name: Enable multi-zone storage redundancy
29+
href: enable-multi-zone-redundancy.md
2830
- name: Remove Azure Container Storage
2931
href: remove-container-storage.md
3032
- name: Concepts
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
title: Enable multi-zone storage redundancy in Azure Container Storage Preview to improve stateful application availability
3+
description: Enable storage redundancy across multiple availability zones in Azure Container Storage Preview to improve stateful application availability. Use multi-zone storage pools and zone-redundant storage (ZRS) disks.
4+
author: khdownie
5+
ms.service: azure-container-storage
6+
ms.topic: how-to
7+
ms.date: 11/03/2023
8+
ms.author: kendownie
9+
---
10+
11+
# Enable multi-zone storage redundancy in Azure Container Storage Preview
12+
13+
You can improve stateful application availability by using multi-zone storage pools and zone-redundant storage (ZRS) disks when using [Azure Container Storage](container-storage-introduction.md) in a multi-zone Azure Kubernetes Service (AKS) cluster. To create an AKS cluster that uses availability zones, see [Use availability zones in Azure Kubernetes Service](../../aks/availability-zones.md).
14+
15+
## Prerequisites
16+
17+
- This article requires version 2.0.64 or later of the Azure CLI. See [How to install the Azure CLI](/cli/azure/install-azure-cli). If you're using Azure Cloud Shell, the latest version is already installed. If you plan to run the commands locally instead of in Azure Cloud Shell, be sure to run them with administrative privileges.
18+
- You'll need an AKS cluster with a node pool of at least three virtual machines (VMs) for the cluster nodes, each with a minimum of four virtual CPUs (vCPUs).
19+
- This article assumes you've already [installed Azure Container Storage](container-storage-aks-quickstart.md) on your AKS cluster.
20+
- You'll need the Kubernetes command-line client, `kubectl`. It's already installed if you're using Azure Cloud Shell, or you can install it locally by running the `az aks install-cli` command.
21+
22+
## Create a multi-zone storage pool
23+
24+
In your storage pool definition, you can specify the zones where you want your storage capacity to be distributed across. The total storage pool capacity will be distributed evenly across the number of zones specified. For example, if two zones are specified, each zone gets half of the storage pool capacity; if three zones are specified, each zone gets one-third of the total capacity. Corresponding storage will be provisioned in each of the zones. This is useful when running workloads that offer application-level replication such as Cassandra.
25+
26+
If there are no nodes available in a specified zone, the capacity will be provisioned once a node is available in that zone. Persistent volumes (PVs) can only be created from storage pool capacity from one zone.
27+
28+
Valid values for `zones` are:
29+
30+
- [""]
31+
- ["1"]
32+
- ["2"]
33+
- ["3"]
34+
- ["1", "2"]
35+
- ["1", "3"]
36+
- ["2", "3"]
37+
- ["1", "2", "3"]
38+
39+
Follow these steps to create a multi-zone storage pool that uses Azure Disks. For `zones`, choose a valid value.
40+
41+
1. Use your favorite text editor to create a YAML manifest file such as `code acstor-multizone-storagepool.yaml`.
42+
43+
1. Paste in the following code and save the file. The storage pool **name** value can be whatever you want. For **storage**, specify the amount of storage capacity for the pool in Gi or Ti.
44+
45+
```yml
46+
apiVersion: containerstorage.azure.com/v1beta1
47+
kind: StoragePool
48+
metadata:
49+
name: azuredisk
50+
namespace: acstor
51+
spec:
52+
zones: ["1", "2", "3"]
53+
poolType:
54+
azureDisk: {}
55+
resources:
56+
requests:
57+
storage: 1Ti
58+
```
59+
60+
1. Apply the YAML manifest file to create the multi-zone storage pool.
61+
62+
```azurecli-interactive
63+
kubectl apply -f acstor-multizone-storagepool.yaml
64+
```
65+
66+
## Use zone-redundant storage (ZRS) disks
67+
68+
If your workload requires storage redundancy, you can leverage disks that use [zone-redundant storage](../../virtual-machines/disks-deploy-zrs.md), which copies your data synchronously across three Azure availability zones in the primary region.
69+
70+
You can specify the disk `skuName` as either `StandardSSD_ZRS` or `Premium_ZRS` in your storage pool definition, as in the following example.
71+
72+
```yml
73+
apiVersion: containerstorage.azure.com/v1beta1
74+
kind: StoragePool
75+
metadata:
76+
name: azuredisk
77+
namespace: acstor
78+
spec:
79+
poolType:
80+
azureDisk:
81+
skuName: Premium_ZRS
82+
resources:
83+
requests:
84+
storage: 1Ti
85+
```
86+
87+
## See also
88+
89+
- [What is Azure Container Storage?](container-storage-introduction.md)

0 commit comments

Comments
 (0)