4장. Microsoft Azure에서 Red Hat High Availability 클러스터 구성

Azure VM(가상 머신) 인스턴스를 클러스터 노드로 사용하여 Azure에서 HA(Red Hat High Availability) 클러스터를 구성하려면 다음 섹션을 참조하십시오. 이 섹션의 절차에서는 Azure에 대한 사용자 지정 이미지를 생성하는 것으로 가정합니다. 클러스터에 사용하는 RHEL 9 이미지를 가져올 수 있는 여러 옵션이 있습니다. Azure의 이미지 옵션에 대한 자세한 내용은 Azure의 Red Hat Enterprise Linux 이미지 옵션을 참조하십시오.

다음 섹션에서는 다음을 제공합니다.

  • Azure 환경을 설정하기 위한 사전 요구 사항을 설명합니다. 환경을 설정한 후 Azure VM 인스턴스를 생성하고 구성할 수 있습니다.
  • 개별 노드를 Azure의 HA 노드 클러스터로 변환하는 HA 클러스터 생성과 관련된 절차입니다. 여기에는 각 클러스터 노드에 High Availability 패키지 및 에이전트를 설치하고, 펜싱을 구성하며, Azure 네트워크 리소스 에이전트를 설치하는 절차가 포함됩니다.

사전 요구 사항

  • Red Hat 고객 포털 계정에 등록합니다.
  • 관리자 권한으로 Microsoft Azure 계정에 등록합니다.
  • Azure CLI(명령줄 인터페이스)를 설치해야 합니다. 자세한 내용은 Azure CLI 설치를 참조하십시오.
  • Red Hat Cloud Access 프로그램에서 서브스크립션을 활성화합니다. Red Hat Cloud Access 프로그램을 사용하면 Red Hat 서브스크립션을 물리적 시스템 또는 사내 시스템에서 Azure로 이전할 수 있으며 Red Hat의 완벽한 지원을 받을 수 있습니다.

    • Azure Marketplace를 사용하여 RHEL 이미지를 온디맨드로 가져올 수 있습니다.

4.1. Azure에서 리소스 생성

지역, 리소스 그룹, 스토리지 계정, 가상 네트워크 및 가용성 세트를 생성하려면 다음 절차를 완료합니다. Microsoft Azure에 클러스터를 설정하려면 이러한 리소스가 필요합니다.

절차

  1. Azure로 시스템을 인증하고 로그인합니다.

    $ az login
    참고

    환경에서 브라우저를 사용할 수 있는 경우 CLI는 브라우저를 Azure 로그인 페이지로 엽니다.

    예제:

    [clouduser@localhost]$ az login
    
    To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code FDMSCMETZ to authenticate.
      [
        {
          "cloudName": "AzureCloud",
          "id": "Subscription ID",
          "isDefault": true,
          "name": "MySubscriptionName",
          "state": "Enabled",
          "tenantId": "Tenant ID",
          "user": {
            "name": "clouduser@company.com",
            "type": "user"
          }
        }
      ]
  2. Azure 리전에 리소스 그룹을 생성합니다.

    $ az group create --name resource-group --location azure-region

    예제:

    [clouduser@localhost]$ az group create --name azrhelclirsgrp --location southcentralus
    
    {
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp",
      "location": "southcentralus",
      "managedBy": null,
      "name": "azrhelclirsgrp",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
  3. 스토리지 계정을 생성합니다.

    $ az storage account create -l azure-region -n storage-account-name -g resource-group --sku sku_type --kind StorageV2

    예제:

    [clouduser@localhost]$ az storage account create -l southcentralus -n azrhelclistact -g azrhelclirsgrp --sku Standard_LRS --kind StorageV2
    
    {
      "accessTier": null,
      "creationTime": "2017-04-05T19:10:29.855470+00:00",
      "customDomain": null,
      "encryption": null,
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Storage/storageAccounts/azrhelclistact",
      "kind": "StorageV2",
      "lastGeoFailoverTime": null,
      "location": "southcentralus",
      "name": "azrhelclistact",
      "primaryEndpoints": {
        "blob": "https://azrhelclistact.blob.core.windows.net/",
        "file": "https://azrhelclistact.file.core.windows.net/",
        "queue": "https://azrhelclistact.queue.core.windows.net/",
        "table": "https://azrhelclistact.table.core.windows.net/"
    },
    "primaryLocation": "southcentralus",
    "provisioningState": "Succeeded",
    "resourceGroup": "azrhelclirsgrp",
    "secondaryEndpoints": null,
    "secondaryLocation": null,
    "sku": {
      "name": "Standard_LRS",
      "tier": "Standard"
    },
    "statusOfPrimary": "available",
    "statusOfSecondary": null,
    "tags": {},
      "type": "Microsoft.Storage/storageAccounts"
    }
  4. 스토리지 계정 연결 문자열을 가져옵니다.

    $ az storage account show-connection-string -n storage-account-name -g resource-group

    예제:

    [clouduser@localhost]$ az storage account show-connection-string -n azrhelclistact -g azrhelclirsgrp
    {
      "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
    }
  5. 연결 문자열을 복사하고 다음 명령에 붙여넣어 연결 문자열을 내보냅니다. 이 문자열은 시스템을 스토리지 계정에 연결합니다.

    $ export AZURE_STORAGE_CONNECTION_STRING="storage-connection-string"

    예제:

    [clouduser@localhost]$ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
  6. 스토리지 컨테이너를 만듭니다.

    $ az storage container create -n container-name

    예제:

    [clouduser@localhost]$ az storage container create -n azrhelclistcont
    
    {
      "created": true
    }
  7. 가상 네트워크를 만듭니다. 모든 클러스터 노드는 동일한 가상 네트워크에 있어야 합니다.

    $ az network vnet create -g resource group --name vnet-name --subnet-name subnet-name

    예제:

    [clouduser@localhost]$ az network vnet create --resource-group azrhelclirsgrp --name azrhelclivnet1 --subnet-name azrhelclisubnet1
    {
      "newVNet": {
        "addressSpace": {
          "addressPrefixes": [
          "10.0.0.0/16"
          ]
      },
      "dhcpOptions": {
        "dnsServers": []
      },
      "etag": "W/\"\"",
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1",
      "location": "southcentralus",
      "name": "azrhelclivnet1",
      "provisioningState": "Succeeded",
      "resourceGroup": "azrhelclirsgrp",
      "resourceGuid": "0f25efee-e2a6-4abe-a4e9-817061ee1e79",
      "subnets": [
        {
          "addressPrefix": "10.0.0.0/24",
          "etag": "W/\"\"",
          "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1/subnets/azrhelclisubnet1",
          "ipConfigurations": null,
          "name": "azrhelclisubnet1",
          "networkSecurityGroup": null,
          "provisioningState": "Succeeded",
          "resourceGroup": "azrhelclirsgrp",
          "resourceNavigationLinks": null,
          "routeTable": null
        }
      ],
      "tags": {},
      "type": "Microsoft.Network/virtualNetworks",
      "virtualNetworkPeerings": null
      }
    }
  8. 가용성 집합을 생성합니다. 모든 클러스터 노드는 동일한 가용성 집합에 있어야 합니다.

    $ az vm availability-set create --name MyAvailabilitySet --resource-group MyResourceGroup

    예제:

    [clouduser@localhost]$ az vm availability-set create --name rhelha-avset1 --resource-group azrhelclirsgrp
    {
      "additionalProperties": {},
        "id": "/subscriptions/.../resourceGroups/azrhelclirsgrp/providers/Microsoft.Compute/availabilitySets/rhelha-avset1",
        "location": "southcentralus",
        "name": “rhelha-avset1",
        "platformFaultDomainCount": 2,
        "platformUpdateDomainCount": 5,
    
    [omitted]