이 자습서는 시리즈의 3부이며 Azure의 클러스터에 Service Fabric 애플리케이션을 배포하는 방법을 보여 줍니다.
시리즈의 3부에서는 다음 방법을 알아봅니다.
- Azure에서 보안 Linux 클러스터 만들기
- 클러스터에 애플리케이션 배포
이 자습서 시리즈에서는 다음 방법을 알아봅니다.
필수 조건
이 자습서를 시작하기 전에:
- Azure 구독이 없는 경우 체험 계정을 만듭니다.
- Azure CLI 설치
- Mac 또는 Linux용 Service Fabric SDK 설치
- Python 3 설치
Azure에서 Service Fabric 클러스터 만들기
다음 단계에서는 Service Fabric 클러스터에 애플리케이션을 배포하는 데 필요한 리소스를 만듭니다. 또한 ELK(Elasticsearch, Logstash, Kibana) 스택을 사용하여 솔루션의 상태를 모니터링하는 데 필요한 리소스가 설정됩니다. 특히 Event Hubs 는 Service Fabric의 로그에 대한 싱크로 사용됩니다. Service Fabric 클러스터에서 Logstash 인스턴스로 로그를 보내도록 구성됩니다.
터미널을 열고 Azure에서 리소스를 만드는 데 필요한 도우미 스크립트 및 템플릿이 포함된 다음 패키지를 다운로드합니다.
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.gitAzure 계정에 로그인
az login리소스를 만드는 데 사용할 Azure 구독 설정
az account set --subscription [SUBSCRIPTION-ID]service-fabric-java-quickstart/AzureCluster 폴더에서 다음 명령을 실행하여 Key Vault에서 클러스터 인증서를 만듭니다. 이 인증서는 Service Fabric 클러스터를 보호하는 데 사용됩니다. 지역(Service Fabric 클러스터와 동일해야 함), 키 자격 증명 모음 리소스 그룹 이름, 키 자격 증명 모음 이름, 인증서 암호 및 클러스터 DNS 이름을 제공합니다.
./new-service-fabric-cluster-certificate.sh [REGION] [KEY-VAULT-RESOURCE-GROUP] [KEY-VAULT-NAME] [CERTIFICATE-PASSWORD] [CLUSTER-DNS-NAME-FOR-CERTIFICATE] Example: ./new-service-fabric-cluster-certificate.sh 'westus' 'testkeyvaultrg' 'testkeyvault' '<password>' 'testservicefabric.westus.cloudapp.azure.com'앞의 명령은 나중에 사용하기 위해 기록해야 하는 다음 정보를 반환합니다.
Source Vault Resource Id: /subscriptions/<subscription_id>/resourceGroups/testkeyvaultrg/providers/Microsoft.KeyVault/vaults/<name> Certificate URL: https://<name>.vault.azure.net/secrets/<cluster-dns-name-for-certificate>/<guid> Certificate Thumbprint: <THUMBPRINT>로그를 저장하는 스토리지 계정에 대한 리소스 그룹 만들기
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name teststorageaccountrg생성될 로그를 저장하는 데 사용할 스토리지 계정 만들기
az storage account create -g [RESOURCE-GROUP-NAME] -l [REGION] --name [STORAGE-ACCOUNT-NAME] --kind Storage Example: az storage account create -g teststorageaccountrg -l westus --name teststorageaccount --kind StorageAzure Portal에 액세스하고 스토리지 계정의 공유 액세스 서명 탭으로 이동합니다. 다음과 같이 SAS 토큰을 생성합니다.
계정 SAS URL을 복사하고 Service Fabric 클러스터를 만들 때 사용하도록 따로 설정합니다. 다음 URL과 유사합니다.
?sv=2017-04-17&ss=bfqt&srt=sco&sp=rwdlacup&se=2018-01-31T03:24:04Z&st=2018-01-30T19:24:04Z&spr=https,http&sig=IrkO1bVQCHcaKaTiJ5gilLSC5Wxtghu%2FJAeeY5HR%2BPU%3DEvent Hub 리소스가 포함된 리소스 그룹을 만듭니다. Event Hubs는 Service Fabric에서 ELK 리소스를 실행하는 서버로 메시지를 보내는 데 사용됩니다.
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name testeventhubsrg다음 명령을 사용하여 Event Hubs 리소스를 만듭니다. 프롬프트에 따라 namespaceName, eventHubName, consumerGroupName, sendAuthorizationRule 및 receiveAuthorizationRule에 대한 세부 정보를 입력합니다.
az deployment group create -g [RESOURCE-GROUP-NAME] --template-file eventhubsdeploy.json Example: az deployment group create -g testeventhubsrg --template-file eventhubsdeploy.json Please provide string value for 'namespaceName' (? for help): testeventhubnamespace Please provide string value for 'eventHubName' (? for help): testeventhub Please provide string value for 'consumerGroupName' (? for help): testeventhubconsumergroup Please provide string value for 'sendAuthorizationRuleName' (? for help): sender Please provide string value for 'receiveAuthorizationRuleName' (? for help): receiver이전 명령의 JSON 출력에서 출력 필드의 내용을 복사합니다. 보낸 사람 정보는 Service Fabric 클러스터를 만들 때 사용됩니다. Logstash 서비스가 Event Hub에서 메시지를 받도록 구성된 경우 다음 자습서에서 사용할 수 있도록 수신기 이름 및 키를 저장해야 합니다. 다음 Blob은 예제 JSON 출력입니다.
"outputs": { "receiver Key": { "type": "String", "value": "[KEY]" }, "receiver Name": { "type": "String", "value": "receiver" }, "sender Key": { "type": "String", "value": "[KEY]" }, "sender Name": { "type": "String", "value": "sender" } }eventhubssastoken.py 스크립트를 실행하여 만든 EventHubs 리소스에 대한 SAS URL을 생성합니다. 이 SAS URL은 Service Fabric 클러스터에서 Event Hubs에 로그를 보내는 데 사용됩니다. 결과적으로 보낸 사람 정책은 URL을 생성하는 데 사용됩니다. 스크립트는 다음 단계에서 사용되는 Event Hubs 리소스에 대한 SAS URL을 반환합니다.
python3 eventhubssastoken.py 'testeventhubs' 'testeventhubs' 'sender' '[PRIMARY-KEY]'반환된 JSON에서 sr 필드의 값을 복사합니다. sr 필드 값은 EventHubs에 대한 SAS 토큰입니다. 다음 URL은 sr 필드의 예입니다.
https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=senderEventHubs에 대한 SAS URL은 다음과 같은 구조를
https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>따릅니다. 예를 들어https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sendersfdeploy.parameters.json 파일을 열고 이전 단계에서 다음 내용을 바꿉니다. [SAS-URL-STORAGE-ACCOUNT]는 8단계에서 언급되었습니다. [SAS-URL-EVENT-HUBS]는 11단계에서 언급되었습니다.
"applicationDiagnosticsStorageAccountName": { "value": "teststorageaccount" }, "applicationDiagnosticsStorageAccountSasToken": { "value": "[SAS-URL-STORAGE-ACCOUNT]" }, "loggingEventHubSAS": { "value": "[SAS-URL-EVENT-HUBS]" }sfdeploy.parameters.json엽니다. 다음 매개 변수를 변경한 다음 파일을 저장합니다.
- clusterName. 소문자와 숫자만 사용합니다.
- adminUserName (비어 있는 값이 아닌 값으로)
- adminPassword (비어 있는 값이 아닌 값으로)
다음 명령을 실행하여 Service Fabric 클러스터 만들기
az sf cluster create --location 'westus' --resource-group 'testlinux' --template-file sfdeploy.json --parameter-file sfdeploy.parameters.json --secret-identifier <certificate_url_from_step4>
클러스터에 애플리케이션 배포
애플리케이션을 배포하기 전에 Voting/VotingApplication/ApplicationManifest.xml 파일에 다음 코드 조각을 추가해야 합니다. X509FindValue 필드는 Azure에서 Service Fabric 클러스터 만들기 섹션의 4단계에서 반환된 지문입니다. 이 코드 조각은 ApplicationManifest 필드(루트 필드) 아래에 중첩됩니다.
<Certificates> <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" /> </Certificates>이 클러스터에 애플리케이션을 배포하려면 SFCTL을 사용하여 클러스터에 대한 연결을 설정해야 합니다. SFCTL을 사용하려면 클러스터에 연결하려면 퍼블릭 키와 프라이빗 키가 모두 있는 PEM 파일이 필요합니다. 다음 명령을 실행하여 퍼블릭 키와 프라이빗 키를 모두 사용하여 PEM 파일을 생성합니다.
openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>다음 명령을 실행하여 클러스터에 연결합니다.
sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify애플리케이션을 배포하려면 Voting/Scripts 폴더로 이동하여 install.sh 스크립트를 실행합니다.
./install.shService Fabric Explorer에 액세스하려면 즐겨 찾는 브라우저를 열고 .를
https://testlinuxcluster.westus.cloudapp.azure.com:19080입력합니다. 이 엔드포인트에 연결하는 데 사용할 인증서 저장소에서 인증서를 선택합니다. Linux 컴퓨터를 사용하는 경우 Service Fabric Explorer를 보려면 new-service-fabric-cluster-certificate.sh 스크립트에서 생성된 인증서를 Chrome으로 가져와야 합니다. Mac을 사용하는 경우 키 집합에 PFX 파일을 설치해야 합니다. 애플리케이션이 클러스터에 설치된 것을 알 수 있습니다.
애플리케이션에 액세스하려면 다음을 입력합니다.
https://testlinuxcluster.westus.cloudapp.azure.com:8080
클러스터에서 애플리케이션을 제거하려면 Scripts 폴더에서 uninstall.sh 스크립트를 실행합니다.
./uninstall.sh
다음 단계
이 자습서에서는 다음 방법을 알아보았습니다.
- Azure에서 보안 Linux 클러스터 만들기
- ELK를 사용하여 모니터링하는 데 필요한 리소스 만들기
다음 자습서를 진행합니다.