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:

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

Service Fabric 클러스터

Microsoft.ServiceFabric/clusters 리소스에서 Linux 클러스터는 다음과 같은 특성을 사용하여 배포됩니다.

  • 3개 노드 유형
  • 주 노드 형식의 노드 5개(템플릿 매개 변수에서 구성 가능), 다른 노드 형식 각각에 노드 1개
  • OS: (Ubuntu 18.04 LTS/Ubuntu 20.04)(템플릿 매개 변수에서 구성 가능)
  • 보안된 인증서(템플릿 매개 변수에서 구성 가능)
  • DNS 서비스를 사용할 수 있습니다.
  • Bronze의 내구성 수준 (템플릿 매개 변수에서 구성 가능)
  • 실버의 안정성 수준(템플릿 매개 변수에서 구성 가능)
  • 클라이언트 연결 엔드포인트: 19000(템플릿 매개 변수에서 구성 가능)
  • HTTP 게이트웨이 엔드포인트: 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 확장이 구성됩니다. 이 확장은 Service Fabric을 Azure Virtual Machines로 부트스트랩하고 노드 보안을 구성하는 데 사용됩니다.

다음은 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

리소스 정리

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

다음 단계

클러스터 크기를 조정하는 방법을 알아봅니다.

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