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>
az disk create -g <resource_group> -n <shared_block_volume_name> --size-gb <disk_size> --max-shares <number_vms> -l <location>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple, la commande suivante crée un volume de blocs partagés nommé
shared-block-volume.vhddans le groupe de ressourcessharedblockau 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
$ 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 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
$ az disk show -g <resource_group> -n <shared_block_volume_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple, la commande suivante affiche les détails du volume de blocs partagés
shared-block-volume.vhddans le groupe de ressourcessharedblock-rg.az disk show -g sharedblock-rg -n shared-block-volume.vhd
$ 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 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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$ 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 IPv4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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$ 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 IPv4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>$ 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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ 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": "" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Pour chaque VM de votre cluster, vérifiez que le périphérique de bloc est disponible en utilisant la commande
sshavec l'adresse IP de votre VM.ssh <ip_address> "hostname ; lsblk -d | grep ' 1T '"
# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T '"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 '"
# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T '" nodea sdb 8:16 0 1T 0 diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez la commande
sshpour 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='"# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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='"# 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=3600224808dd8eb102f6ffc5822c41d89Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Après avoir vérifié que le disque partagé est attaché à chaque VM, vous pouvez configurer le stockage résilient pour le cluster.