다음을 통해 공유


Azure 가상 네트워크에 Linux Service Fabric 클러스터 배포

이 문서에서는 Azure CLI 및 템플릿을 사용하여 Azure VNET(가상 네트워크)에 Linux Service Fabric 클러스터를 배포하는 방법을 알아봅니다. 작업이 완료되면 애플리케이션을 배포할 수 있는, 클라우드에서 실행되는 클러스터가 생깁니다. PowerShell을 사용하여 Windows 클러스터를 만들려면 Azure에서 보안 Windows 클러스터 만들기를 참조하세요.

필수 조건

시작하기 전에 다음을 수행하십시오.

다음 절차에서는 7개 노드 Service Fabric 클러스터를 만듭니다. Azure에서 Service Fabric 클러스터를 실행할 때 발생하는 비용을 계산하려면 Azure 가격 계산기를 사용합니다.

템플릿 다운로드 및 탐색

다음 Resource Manager 템플릿 파일을 다운로드합니다.

Ubuntu 18.04 LTS:

Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • vmImageSku 특성이 "20.04-LTS"가 됨
    • Microsoft.ServiceFabric/clusters 리소스의
      • apiVersion이 "2019-03-01"로 설정됨
      • vmImage 속성이 "Ubuntu20_04"로 설정됨
  • AzureDeploy.Parameters.json

이 템플릿은 7개 가상 머신 및 3개 노드 유형의 보안 클러스터를 가상 네트워크에 배포합니다. 다른 예제 템플릿은 GitHub에 있을 수 있습니다. AzureDeploy.json은 다음을 포함하여 여러 리소스를 배포합니다.

Service Fabric 클러스터

Microsoft.ServiceFabric/clusters 리소스에서 다음과 같은 특성이 있는 Linux 클러스터가 배포됩니다.

  • 3개 노드 유형
  • 기본 노드 유형의 5개 노드(템플릿 매개 변수에서 구성 가능), 다른 두 노드 유형의 각 1개 노드
  • OS: (Ubuntu 18.04 LTS/Ubuntu 20.04)(템플릿 매개 변수에서 구성 가능)
  • 보안된 인증서(템플릿 매개 변수에서 구성 가능)
  • DNS 서비스 사용
  • 브론즈의 내구성 수준(템플릿 매개 변수에서 구성 가능)
  • 실버의 안정성 수준(템플릿 매개 변수에서 구성 가능)
  • 클라이언트 연결 엔드포인트: 19000(템플릿 매개 변수에서 구성 가능)
  • 클라이언트 연결 엔드포인트: 19080(템플릿 매개 변수에서 구성 가능)

Azure Load Balancer

Microsoft.Network/loadBalancers 리소스에서 부하 분산 장치가 구성되고 다음 포트에 대한 프로브 및 규칙이 설정됩니다.

  • 클라이언트 연결 엔드포인트: 19000
  • HTTP 게이트웨이 엔드포인트 19080
  • 애플리케이션 포트: 80
  • 애플리케이션 포트: 443

가상 네트워크 및 서브넷

가상 네트워크 및 서브넷의 이름은 템플릿 매개 변수에서 선언됩니다. 가상 네트워크 및 서브넷의 주소 공간도 템플릿 매개 변수로 선언되고 Microsoft.Network/virtualNetworks 리소스에 구성됩니다.

  • 가상 네트워크 주소 공간: 10.0.0.0/16
  • Service Fabric 서브넷 주소 공간: 10.0.2.0/24

다른 애플리케이션 포트가 필요한 경우 트래픽을 허용하도록 Microsoft.Network/loadBalancers 리소스를 조정해야 합니다.

Service Fabric 확장

Microsoft.Compute/virtualMachineScaleSets 리소스에서 Service Fabric Linux 확장이 구성됩니다. 이 확장을 사용하여 Azure Virtual Machines에 Service Fabric을 부트스트랩하고 노드 보안을 구성합니다.

다음은 Service Fabric Linux 확장에 대한 템플릿 코드 조각입니다.

"extensions": [
  {
    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
    "properties": {
      "type": "ServiceFabricLinuxNode",
      "autoUpgradeMinorVersion": true,
      "enableAutomaticUpgrade": true,
      "protectedSettings": {
        "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
       },
       "publisher": "Microsoft.Azure.ServiceFabric",
       "settings": {
         "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
         "nodeTypeRef": "[variables('vmNodeType0Name')]",
         "durabilityLevel": "Silver",
         "enableParallelJobs": true,
         "nicPrefixOverride": "[variables('subnet0Prefix')]",
         "certificate": {
           "commonNames": [
             "[parameters('certificateCommonName')]"
           ],
           "x509StoreName": "[parameters('certificateStoreValue')]"
         }
       },
       "typeHandlerVersion": "2.0"
     }
   },

템플릿 매개 변수 설정

AzureDeploy.Parameters 파일은 클러스터 및 연결된 리소스를 배포하는 데 사용되는 많은 값을 선언합니다. 배포에 대해 수정이 필요할 수도 있는 매개 변수 중 일부는 다음과 같습니다.

매개 변수 예제 값 주의
adminUserName vmadmin 클러스터 VM에 대한 관리자 사용자 이름입니다.
adminPassword Password#1234 클러스터 VM에 대한 관리자 암호입니다.
clusterName mysfcluster123 클러스터의 이름입니다.
location southcentralus 클러스터의 위치입니다.
certificateThumbprint

자체 서명된 인증서를 만들거나 인증서 파일을 제공하는 경우 값은 비워두어야 합니다.

이전에 키 자격 증명 모음에 업로드된 기존 인증서를 사용하려면 인증서 SHA1 지문 값을 입력합니다. 예를 들면 "6190390162C988701DB5676EB81083EA608DCCF3"과 같습니다.

certificateUrlValue

자체 서명된 인증서를 만들거나 인증서 파일을 제공하는 경우 값은 비워두어야 합니다.

이전에 키 자격 증명 모음에 업로드된 기존 인증서를 사용하려면 인증서 URL을 입력합니다. 예를 들어 " https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346"입니다.

sourceVaultValue

자체 서명된 인증서를 만들거나 인증서 파일을 제공하는 경우 값은 비워두어야 합니다.

이전에 키 자격 증명 모음에 업로드된 기존 인증서를 사용하려면 원본 자격 증명 모음 값을 입력합니다. 예를 들면 “/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT”와 같습니다.

가상 네트워크 및 클러스터 배포

다음으로 네트워크 토폴로지를 설정하고 Service Fabric 클러스터를 배포합니다. AzureDeploy.json Resource Manager 템플릿은 VNET(가상 네트워크) 및 Service Fabric에 대한 서브넷을 만듭니다. 템플릿은 활성화된 인증서 보안으로 클러스터도 배포합니다. 프로덕션 클러스터의 경우 클러스터 인증서로 CA(인증 기관)의 인증서를 사용합니다. 테스트 클러스터를 보호하는 데 자체 서명된 인증서를 사용할 수 있습니다.

이 문서의 템플릿은 인증서 지문을 사용하여 클러스터 인증서를 식별하는 클러스터를 배포합니다. 두 인증서에 동일한 지문을 사용할 수 없으므로 인증서 관리가 더 어려워집니다. 배포된 클러스터를 인증서 지문에서 인증서 일반 이름으로 전환하면 인증서 관리 방법이 훨씬 간단해집니다. 인증서 관리에 인증서 일반 이름을 사용하도록 클러스터를 업데이트하는 방법에 대해 알아보려면 클러스터를 인증서 일반 이름 관리로 변경을 참조하세요.

기존 인증서를 사용하여 클러스터 만들기

다음 스크립트는 az sf cluster create 명령 및 템플릿을 사용하여 기존 인증서로 보호된 새 클러스터를 배포합니다. 또한 명령은 Azure에서 새 키 자격 증명 모음을 만들고 인증서를 업로드합니다.

ResourceGroupName="sflinuxclustergroup"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates\MyCertificate.pem"

# sign in to your Azure account and select your subscription
az login
az account set --subscription <guid>

# Create a new resource group for your deployment and give it a name and a location.
az group create --name $ResourceGroupName --location $Location

# Create the Service Fabric cluster.
az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --certificate-password $Password --certificate-file $CertPath \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName  \
   --template-file AzureDeploy.json --parameter-file AzureDeploy.Parameters.json

자체 서명된 새로운 인증서를 사용하여 클러스터 만들기

다음 스크립트는 az sf cluster create 명령 및 템플릿을 사용하여 Azure에 새 클러스터를 배포합니다. 또한 이 명령은 Azure에 새로운 키 자격 증명 모음을 만들고, 키 자격 증명 모음에 자체 서명된 인증서를 추가하고, 인증서 파일을 로컬로 다운로드합니다.

ResourceGroupName="sflinuxclustergroup"
ClusterName="sflinuxcluster"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates"

az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --cluster-name $ClusterName --template-file C:\temp\cluster\AzureDeploy.json \
   --parameter-file C:\temp\cluster\AzureDeploy.Parameters.json --certificate-password $Password \
   --certificate-output-folder $CertPath --certificate-subject-name $ClusterName.$Location.cloudapp.azure.com \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName

보안 클러스터에 연결

키를 사용하여 Service Fabric CLI sfctl cluster select 명령을 통해 클러스터에 연결합니다. 자체 서명된 인증서에만 --no-verify 옵션을 사용합니다.

sfctl cluster select --endpoint https://aztestcluster.southcentralus.cloudapp.azure.com:19080 \
--pem ./aztestcluster201709151446.pem --no-verify

sfctl cluster health 명령을 사용하여 연결되어 있고 클러스터 상태가 정상인지 확인합니다.

sfctl cluster health

리소스 정리

다음 문서로 바로 이동하지 않는 경우 요금이 발생하지 않도록 클러스터를 삭제하는 것이 좋습니다.

다음 단계

클러스터 크기 조정 방법에 대해 알아보세요.

이 문서의 템플릿은 인증서 지문을 사용하여 클러스터 인증서를 식별하는 클러스터를 배포합니다. 두 인증서에 동일한 지문을 사용할 수 없으므로 인증서 관리가 더 어려워집니다. 배포된 클러스터를 인증서 지문에서 인증서 일반 이름으로 전환하면 인증서 관리 방법이 훨씬 간단해집니다. 인증서 관리에 인증서 일반 이름을 사용하도록 클러스터를 업데이트하는 방법에 대해 알아보려면 클러스터를 인증서 일반 이름 관리로 변경을 참조하세요.