4.15. Configuration du stockage en bloc partagé
Pour configurer le stockage en bloc partagé pour un cluster Red Hat High Availability avec Microsoft Azure Shared Disks, utilisez la procédure suivante. Notez que cette procédure est facultative et que les étapes ci-dessous supposent trois VM Azure (un cluster à trois nœuds) avec un disque partagé de 1 To.
Il s'agit d'un exemple de procédure autonome pour la configuration du stockage par blocs. Elle suppose que vous n'avez pas encore créé votre cluster.
Conditions préalables
- Vous devez avoir installé Azure CLI sur votre système hôte et créé vos clés SSH.
Vous devez avoir créé votre environnement de cluster dans Azure, ce qui inclut la création des ressources suivantes. Les liens renvoient à la documentation de Microsoft Azure.
Procédure
Créer un volume de blocs partagé à l'aide de la commande Azure
az disk create
.az disk create -g <resource_group> -n <shared_block_volume_name> --size-gb <disk_size> --max-shares <number_vms> -l <location>
Par exemple, la commande suivante crée un volume de blocs partagés nommé
shared-block-volume.vhd
dans le groupe de ressourcessharedblock
au sein de la zone de disponibilité Azurewestcentralus
.$ az disk create -g sharedblock-rg -n shared-block-volume.vhd --size-gb 1024 --max-shares 3 -l westcentralus { "creationData": { "createOption": "Empty", "galleryImageReference": null, "imageReference": null, "sourceResourceId": null, "sourceUniqueId": null, "sourceUri": null, "storageAccountId": null, "uploadSizeBytes": null }, "diskAccessId": null, "diskIopsReadOnly": null, "diskIopsReadWrite": 5000, "diskMbpsReadOnly": null, "diskMbpsReadWrite": 200, "diskSizeBytes": 1099511627776, "diskSizeGb": 1024, "diskState": "Unattached", "encryption": { "diskEncryptionSetId": null, "type": "EncryptionAtRestWithPlatformKey" }, "encryptionSettingsCollection": null, "hyperVgeneration": "V1", "id": "/subscriptions/12345678910-12345678910/resourceGroups/sharedblock-rg/providers/Microsoft.Compute/disks/shared-block-volume.vhd", "location": "westcentralus", "managedBy": null, "managedByExtended": null, "maxShares": 3, "name": "shared-block-volume.vhd", "networkAccessPolicy": "AllowAll", "osType": null, "provisioningState": "Succeeded", "resourceGroup": "sharedblock-rg", "shareInfo": null, "sku": { "name": "Premium_LRS", "tier": "Premium" }, "tags": {}, "timeCreated": "2020-08-27T15:36:56.263382+00:00", "type": "Microsoft.Compute/disks", "uniqueId": "cd8b0a25-6fbe-4779-9312-8d9cbb89b6f2", "zones": null }
Vérifiez que vous avez créé le volume de blocs partagés à l'aide de la commande Azure
az disk show
.$ az disk show -g <resource_group> -n <shared_block_volume_name>
Par exemple, la commande suivante affiche les détails du volume de blocs partagés
shared-block-volume.vhd
dans le groupe de ressourcessharedblock-rg
.$ az disk show -g sharedblock-rg -n shared-block-volume.vhd { "creationData": { "createOption": "Empty", "galleryImageReference": null, "imageReference": null, "sourceResourceId": null, "sourceUniqueId": null, "sourceUri": null, "storageAccountId": null, "uploadSizeBytes": null }, "diskAccessId": null, "diskIopsReadOnly": null, "diskIopsReadWrite": 5000, "diskMbpsReadOnly": null, "diskMbpsReadWrite": 200, "diskSizeBytes": 1099511627776, "diskSizeGb": 1024, "diskState": "Unattached", "encryption": { "diskEncryptionSetId": null, "type": "EncryptionAtRestWithPlatformKey" }, "encryptionSettingsCollection": null, "hyperVgeneration": "V1", "id": "/subscriptions/12345678910-12345678910/resourceGroups/sharedblock-rg/providers/Microsoft.Compute/disks/shared-block-volume.vhd", "location": "westcentralus", "managedBy": null, "managedByExtended": null, "maxShares": 3, "name": "shared-block-volume.vhd", "networkAccessPolicy": "AllowAll", "osType": null, "provisioningState": "Succeeded", "resourceGroup": "sharedblock-rg", "shareInfo": null, "sku": { "name": "Premium_LRS", "tier": "Premium" }, "tags": {}, "timeCreated": "2020-08-27T15:36:56.263382+00:00", "type": "Microsoft.Compute/disks", "uniqueId": "cd8b0a25-6fbe-4779-9312-8d9cbb89b6f2", "zones": null }
Créer trois interfaces réseau à l'aide de la commande Azure
az network nic create
. Exécutez la commande suivante trois fois en utilisant une adresse<nic_name>
différente pour chacune d'entre elles.$ az network nic create \ -g <resource_group> -n <nic_name> --subnet <subnet_name> \ --vnet-name <virtual_network> --location <location> \ --network-security-group <network_security_group> --private-ip-address-version IPv4
Par exemple, la commande suivante crée une interface réseau portant le nom
shareblock-nodea-vm-nic-protected
.$ az network nic create \ -g sharedblock-rg -n sharedblock-nodea-vm-nic-protected --subnet sharedblock-subnet-protected \ --vnet-name sharedblock-vn --location westcentralus \ --network-security-group sharedblock-nsg --private-ip-address-version IPv4
Créez trois machines virtuelles et attachez le volume de blocs partagé à l'aide de la commande Azure
az vm create
. Les valeurs des options sont les mêmes pour chaque VM, sauf que chaque VM a ses propres<vm_name>
,<new_vm_disk_name>
, et<nic_name>
.$ az vm create \ -n <vm_name> -g <resource_group> --attach-data-disks <shared_block_volume_name> \ --data-disk-caching None --os-disk-caching ReadWrite --os-disk-name <new-vm-disk-name> \ --os-disk-size-gb <disk_size> --location <location> --size <virtual_machine_size> \ --image <image_name> --admin-username <vm_username> --authentication-type ssh \ --ssh-key-values <ssh_key> --nics <nic_name> --availability-set <availability_set> --ppg <proximity_placement_group>
Par exemple, la commande suivante crée une VM nommée
sharedblock-nodea-vm
.$ az vm create \ -n sharedblock-nodea-vm -g sharedblock-rg --attach-data-disks shared-block-volume.vhd \ --data-disk-caching None --os-disk-caching ReadWrite --os-disk-name sharedblock-nodea-vm.vhd \ --os-disk-size-gb 64 --location westcentralus --size Standard_D2s_v3 \ --image /subscriptions/12345678910-12345678910/resourceGroups/sample-azureimagesgroupwestcentralus/providers/Microsoft.Compute/images/sample-azure-rhel-9.3.0-20200713.n.0.x86_64 --admin-username sharedblock-user --authentication-type ssh \ --ssh-key-values @sharedblock-key.pub --nics sharedblock-nodea-vm-nic-protected --availability-set sharedblock-as --ppg sharedblock-ppg { "fqdns": "", "id": "/subscriptions/12345678910-12345678910/resourceGroups/sharedblock-rg/providers/Microsoft.Compute/virtualMachines/sharedblock-nodea-vm", "location": "westcentralus", "macAddress": "00-22-48-5D-EE-FB", "powerState": "VM running", "privateIpAddress": "198.51.100.3", "publicIpAddress": "", "resourceGroup": "sharedblock-rg", "zones": "" }
Vérification
Pour chaque VM de votre cluster, vérifiez que le périphérique de bloc est disponible en utilisant la commande
ssh
avec l'adresse IP de votre VM.# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T '"
Par exemple, la commande suivante répertorie les détails, y compris le nom d'hôte et le périphérique de bloc pour la VM IP
198.51.100.3
.# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T '" nodea sdb 8:16 0 1T 0 disk
Utilisez la commande
ssh
pour vérifier que chaque VM de votre cluster utilise le même disque partagé.# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"
Par exemple, la commande suivante répertorie les détails, y compris le nom d'hôte et l'ID du volume de disque partagé pour l'adresse IP de l'instance
198.51.100.3
.# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='" nodea E: ID_SERIAL=3600224808dd8eb102f6ffc5822c41d89
Après avoir vérifié que le disque partagé est attaché à chaque VM, vous pouvez configurer le stockage résilient pour le cluster.
Ressources supplémentaires