다음을 통해 공유


빠른 시작: Service Fabric에 Linux 컨테이너 배포

Azure Service Fabric은 확장 가능하고 안정적인 마이크로 서비스 및 컨테이너를 배포하고 관리하기 위한 분산 시스템 플랫폼입니다.

이 빠른 시작에서는 Azure의 Service Fabric 클러스터에 Linux 컨테이너를 배포하는 방법을 보여 줍니다. 완료되면 Python 웹 프런트 엔드와 Service Fabric 클러스터에서 실행되는 Redis 백 엔드로 구성된 투표 애플리케이션이 있습니다. 또한 애플리케이션을 장애 조치(failover)하는 방법과 클러스터에서 애플리케이션의 크기를 조정하는 방법도 알아봅니다.

투표 앱 웹 페이지

필수 조건

이 빠른 시작을 완료하려면 다음이 필요합니다.

  1. 구독이 없는 경우 시작하기 전에 무료 Azure 계정을 만듭니다.

  2. Azure CLI 설치

  3. Service Fabric SDK 및 CLI 설치

  4. Git 설치

애플리케이션 패키지 가져오기

Service Fabric에 컨테이너를 배포하려면 개별 컨테이너 및 애플리케이션을 설명하는 매니페스트 파일 집합(애플리케이션 정의)이 필요합니다.

콘솔에서 git을 사용하여 애플리케이션 정의의 복사본을 복제합니다. 그런 다음 디렉터리를 클론의 Voting 디렉터리로 변경합니다.

git clone https://github.com/Azure-Samples/service-fabric-containers.git

cd service-fabric-containers/Linux/container-tutorial/Voting

Service Fabric 클러스터 만들기

애플리케이션을 Azure에 배포하려면 애플리케이션을 실행하려면 Service Fabric 클러스터가 필요합니다. 다음 명령은 Azure에서 5노드 클러스터를 만듭니다. 또한 명령은 자체 서명된 인증서를 만들고, 키 자격 증명 모음에 추가하고, 인증서를 로컬로 다운로드합니다. 새 인증서는 배포할 때 클러스터를 보호하는 데 사용되며 클라이언트를 인증하는 데 사용됩니다.

원하는 경우 변수 값을 기본 설정으로 수정할 수 있습니다. 예를 들어, 위치를 eastus 대신 westus로 지정합니다.

비고

키 볼트 이름은 https://{vault-name}.vault.azure.net로 액세스되므로 전역적으로 고유해야 합니다.

#!/bin/bash

# Variables
ResourceGroupName='containertestcluster' 
ClusterName='containertestcluster' 
Location='eastus' 
Password='q6D7nN%6ck@6' 
Subject='containertestcluster.eastus.cloudapp.azure.com' 
VaultName='containertestvault' 
VmPassword='Mypa$$word!321'
VmUserName='sfadminuser'

# Login to Azure and set the subscription
az login

az account set --subscription <mySubscriptionID>

# Create resource group
az group create --name $ResourceGroupName --___location $Location 

# Create secure five node Linux cluster. Creates a key vault in a resource group
# and creates a certificate in the key vault. The certificate's subject name must match 
# the ___domain that you use to access the Service Fabric cluster.  The certificate is downloaded locally.
az sf cluster create --resource-group $ResourceGroupName --___location $Location --certificate-output-folder . --certificate-password $Password --certificate-subject-name $Subject --cluster-name $ClusterName --cluster-size 5 --os UbuntuServer1804 --vault-name $VaultName --vault-resource-group $ResourceGroupName --vm-password $VmPassword --vm-user-name $VmUserName

비고

웹 프런트 엔드 서비스는 들어오는 트래픽에 대해 포트 80에서 수신 대기하도록 구성됩니다. 기본적으로 포트 80은 클러스터 VM 및 Azure 부하 분산 장치에서 열립니다.

환경 구성

Service Fabric은 클러스터 및 해당 애플리케이션을 관리하는 데 사용할 수 있는 몇 가지 도구를 제공합니다.

  • 브라우저 기반 도구인 Service Fabric Explorer입니다.
  • Azure CLI를 기반으로 실행되는 SERVICE Fabric CLI(명령줄 인터페이스)입니다.
  • PowerShell 명령어.

이 빠른 시작에서는 Service Fabric CLI 및 Service Fabric Explorer(웹 기반 도구)를 사용합니다. Service Fabric Explorer를 사용하려면 인증서 PFX 파일을 브라우저로 가져와야 합니다. 기본적으로 PFX 파일에는 암호가 없습니다.

Mozilla Firefox는 Ubuntu 18.04의 기본 브라우저입니다. 인증서를 Firefox로 가져오려면 브라우저의 오른쪽 위 모서리에 있는 메뉴 단추를 클릭한 다음 옵션을 클릭합니다. 기본 설정 페이지에서 검색 상자를 사용하여 "인증서"를 검색합니다. 인증서 보기를 클릭하고 인증서 탭 선택한 다음 가져오기를 클릭하고 프롬프트에 따라 인증서를 가져옵니다.

Firefox에 인증서 설치

Service Fabric 애플리케이션 배포

  1. CLI를 사용하여 Azure의 Service Fabric 클러스터에 연결합니다. 엔드포인트는 클러스터의 관리 엔드포인트입니다. 이전 섹션에서 PEM 파일을 만들었습니다.

    sfctl cluster select --endpoint https://containertestcluster.eastus.cloudapp.azure.com:19080 --pem containertestcluster22019013100.pem --no-verify
    
  2. 설치 스크립트를 사용하여 Voting 애플리케이션 정의를 클러스터에 복사하고, 애플리케이션 유형을 등록하고, 애플리케이션 인스턴스를 만듭니다. PEM 인증서 파일은 install.sh 파일과 동일한 디렉터리에 있어야 합니다.

    ./install.sh
    
  3. 웹 브라우저를 열고 클러스터의 Service Fabric Explorer 엔드포인트로 이동합니다. 엔드포인트의 형식은 https://< my-azure-service-fabric-cluster-url>:19080/Explorer입니다. 예를 들면 https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorer다음과 같습니다.

  4. 애플리케이션 노드 확장하여 이제 Voting 애플리케이션 유형 및 만든 인스턴스에 대한 항목이 있는지 확인합니다.

    Service Fabric Explorer

  5. 실행 중인 컨테이너에 연결하려면 웹 브라우저를 열고 클러스터의 URL로 이동합니다. 예를 들면 다음과 같습니다 http://containertestcluster.eastus.cloudapp.azure.com:80. 브라우저에 투표 애플리케이션이 표시됩니다.

    투표 앱 웹 페이지

비고

Docker 작성을 사용하여 Service Fabric 애플리케이션을 배포할 수도 있습니다. 예를 들어 다음 명령을 사용하여 Docker Compose를 사용하여 클러스터에 애플리케이션을 배포하고 설치할 수 있습니다.

sfctl compose create --deployment-name TestApp --file-path ../docker-compose.yml

클러스터에서 컨테이너 장애 조치(failover)

Service Fabric은 오류가 발생할 경우 컨테이너 인스턴스가 클러스터의 다른 노드로 자동으로 이동되도록 합니다. 컨테이너에 대한 노드를 수동으로 비우고 나서 클러스터의 다른 노드로 차질 없이 이동할 수도 있습니다. Service Fabric은 서비스 크기를 조정하는 여러 가지 방법을 제공합니다. 다음 단계에서는 Service Fabric Explorer를 사용합니다.

프런트 엔드 컨테이너를 장애 조치하려면 다음 단계를 수행합니다.

  1. 클러스터에서 Service Fabric Explorer를 엽니다. 예를 들면 다음과 같습니다 https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorer.

  2. 트리 뷰에서 fabric:/Voting/azurevotefront 노드를 클릭하고 파티션 노드(GUID로 표시됨)를 확장합니다. 트리 뷰의 노드 이름을 확인합니다. 이 이름은 컨테이너가 현재 실행 중인 노드를 보여 줍니다. 예를 들면 다음과 같습니다 _nodetype_1.

  3. 트리 뷰에서 노드를 확장합니다. 컨테이너를 실행하는 노드 옆에 있는 줄임표(...)를 클릭합니다.

  4. 다시 시작을 선택하여 해당 노드를 다시 시작하고 다시 시작 작업을 확인합니다. 다시 시작하면 컨테이너를 클러스터의 다른 노드로 장애 조치(failover)합니다.

    Service Fabric Explorer의 노드 보기

클러스터에서 애플리케이션 및 서비스 크기 조정

Service Fabric 서비스는 서비스의 부하를 수용하기 위해 클러스터 전체에서 쉽게 확장할 수 있습니다. 클러스터에서 실행 중인 인스턴스 수를 변경하여 서비스의 크기를 조정합니다.

웹 프런트 엔드 서비스의 크기를 조정하려면 다음 단계를 수행합니다.

  1. 클러스터에서 Service Fabric Explorer를 엽니다. 예를 들면 다음과 같습니다https://containertestcluster.eastus.cloudapp.azure.com:19080.

  2. 트리 뷰에서 패브릭:/Voting/azurevotefront 노드 옆에 있는 줄임표(점 3개)를 클릭하고 크기 조정 서비스를 선택합니다.

    Service Fabric Explorer 크기 조정 서비스 시작

    이제 웹 프런트 엔드 서비스의 인스턴스 수를 조정하도록 선택할 수 있습니다.

  3. 숫자를 2 로 변경하고 크기 조정 서비스를 클릭합니다.

  4. 트리 뷰에서 fabric:/Voting/azurevotefront 노드를 클릭하고 파티션 노드(GUID로 표시됨)를 확장합니다.

    Service Fabric Explorer 크기 조정 서비스 완료

    이제 서비스에 두 개의 인스턴스가 있음을 확인할 수 있습니다. 트리 뷰에서 인스턴스가 실행되는 노드를 볼 수 있습니다.

이 간단한 관리 작업을 통해 프런트 엔드 서비스에서 사용자 부하를 처리하는 데 사용할 수 있는 리소스를 두 배로 늘렸습니다. 안정적으로 실행하려면 서비스의 여러 인스턴스가 필요하지 않음을 이해하는 것이 중요합니다. 서비스가 실패하면 Service Fabric은 새 서비스 인스턴스가 클러스터에서 실행되도록 합니다.

자원을 정리하세요

템플릿에 제공된 제거 스크립트(uninstall.sh)를 사용하여 클러스터에서 애플리케이션 인스턴스를 삭제하고 애플리케이션 유형을 등록 취소합니다. 이 스크립트는 인스턴스를 정리하는 데 다소 시간이 걸리므로 이 스크립트 직후에 설치 스크립트를 실행해서는 안 됩니다. Service Fabric Explorer를 사용하여 인스턴스가 제거되고 애플리케이션 유형이 등록 취소된 시기를 확인할 수 있습니다.

./uninstall.sh

클러스터 및 클러스터에서 사용하는 모든 리소스를 삭제하는 가장 간단한 방법은 리소스 그룹을 삭제하는 것입니다.

Azure에 로그인하고 클러스터를 제거할 구독 ID를 선택합니다. Azure Portal에 로그인하여 구독 ID를 찾을 수 있습니다. az group delete 명령을 사용하여 리소스 그룹 및 모든 클러스터 리소스를 삭제합니다.

az login
az account set --subscription <guid>
ResourceGroupName="containertestcluster"
az group delete --name $ResourceGroupName

클러스터 작업을 완료한 경우 인증서 저장소에서 인증서를 제거할 수 있습니다. 다음은 그 예입니다.

  • Windows에서: 인증서 MMC 스냅인을 사용하십시오. 스냅인을 추가할 때 내 사용자 계정을 선택해야 합니다. Certificates - Current User\Personal\Certificates로 이동하여 인증서를 제거하십시오.
  • Mac: 키체인 앱을 사용하십시오.
  • Ubuntu: 인증서를 보고 인증서를 제거하는 데 사용한 단계를 따릅니다.

다음 단계

이 빠른 시작에서는 Azure의 Service Fabric 클러스터에 Linux 컨테이너 애플리케이션을 배포하고, 애플리케이션에서 장애 조치(failover)를 수행하고, 클러스터에서 애플리케이션의 크기를 조정했습니다. Service Fabric에서 Linux 컨테이너를 사용하는 방법에 대해 자세히 알아보려면 Linux 컨테이너 애플리케이션에 대한 자습서를 계속 진행하세요.