2.15. Configuração de armazenamento em bloco compartilhado
Esta seção fornece um procedimento opcional para configurar o armazenamento em bloco compartilhado para um cluster Red Hat High Availability com discos compartilhados Microsoft Azure. O procedimento assume três VMs Azure (um cluster de três nós) com um disco compartilhado de 1 TB.
Este é um procedimento de amostra autônomo para configurar o armazenamento em bloco. O procedimento pressupõe que você ainda não tenha criado seu agrupamento.
Pré-requisitos
- Você deve ter instalado o Azure CLI em seu sistema host e criado sua(s) chave(s) SSH.
Você deve ter criado seu ambiente de cluster no Azure, o que inclui a criação dos seguintes recursos. Os links são para a documentação do Microsoft Azure.
Procedimento
Criar um volume de blocos compartilhados usando o comando 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>
Por exemplo, o seguinte comando cria um volume de blocos compartilhados chamado
shared-block-volume.vhd
no grupo de recursossharedblock
dentro da Zona de Disponibilidade do 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 }
Verifique se você criou o volume de blocos compartilhados usando o comando Azure
az disk show
.Az disk show -g <resource_group> -n <shared_block_volume_name>
Por exemplo, o seguinte comando mostra detalhes do volume do bloco compartilhado
shared-block-volume.vhd
dentro do grupo de recursossharedblock-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 }
Criar três interfaces de rede usando o comando Azure
az network nic create
. Execute o seguinte comando três vezes usando um diferente<nic_name>
para cada um.az rede nic criar -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
Por exemplo, o seguinte comando cria uma interface de rede com o nome
shareblock-nodea-vm-nic-protected
.az rede nic criar -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-adersion IPv4
Criar três VMs e anexar o volume do bloco compartilhado usando o comando Azure
az vm create
. Os valores das opções são os mesmos para cada VM, exceto que cada VM tem seu próprio<vm_name>
,<new_vm_disk_name>
, e<nic_name>
.az vm create -n <vm_name> -g <resource_group> --attach-data-discos <shared_block_volume_name> --data-disk-caching Nenhum --os-disk-caching ReadWrite --os-disk-name <new-vm-disk-name> --os-disk-size-gb <disk_size> --location <location> --tamanho <virtual_machine_size> --imagem <imagem_nome_da_imagem> --admin-nome_de_utilizador <vm_username> -autenticação-tipo ssh --ssh-valores-chave <ssh_key> --nics <nic_name> --availability-set <availability_set> --ppg <proximity_placement_group>
Por exemplo, o seguinte comando cria uma VM chamada
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-8.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": "" }
Etapas de verificação
Para cada VM de seu cluster, verifique se o dispositivo de bloco está disponível usando o comando
ssh
com seu VM<ip_address>
.# ssh <ip_address>"hostname ; lsblk -d | grep ' 1T '\i
Por exemplo, o seguinte comando lista detalhes incluindo o nome do host e o dispositivo de bloco para o IP da VM
198.51.100.3
.# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T '" nodea sdb 8:16 0 1T 0 disk
Use o comando
ssh
para verificar se cada VM em seu cluster usa o mesmo disco compartilhado.# ssh <ip_address>"hostname ; lsblk -d | grep ' 1T ' | awk '{print \\i1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"
Por exemplo, o seguinte comando lista detalhes incluindo o nome do host e o ID do volume do disco compartilhado para o endereço IP por exemplo
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
Depois de ter verificado que o disco compartilhado está anexado a cada VM, você pode configurar um armazenamento resiliente para o cluster. Para informações sobre como configurar o armazenamento resiliente para um cluster Red Hat High Availability, veja Configurando um sistema de arquivos GFS2 em um cluster. Para informações gerais sobre o sistema de arquivos GFS2, veja Configurando os sistemas de arquivos GFS2.