다음을 통해 공유


단일 지역 LAMP 아키텍처 배포

이 문서에서는 보다 실제적인 프로그래밍 방식 설정을 위해 Bash, PowerShell 또는 Windows Batch에서 명령줄 도구를 사용하거나 한 번 클릭 배포를 위해 Azure Resource Manager 템플릿을 사용하여 단일 지역 LAMP 아키텍처를 배포하는 다양한 방법을 설명합니다. 그리고 대부분의 경우 Azure Portal을 사용하여 아키텍처의 특정 부분을 설정하는 방법에 대한 포인터가 있습니다. 또는 명령줄 도구를 사용하거나 Azure Pipelines를 사용한 인프라 배포 자동화를 통해 Hashicorp Terraform과 같은 타사 솔루션을 사용할 수 있습니다. 이 문서에서는 단계별 지침을 위해 Terraform의 Azure 공급자 템플릿을 제공하며, 이 링크에서 더 많은 템플릿을 찾을 수 있습니다.

일반적으로 단일 지역 LAMP 아키텍처를 배포할 때 대부분 일회성 작업인 단계들도 있지만, 게임 요구 사항에 맞게 백엔드가 업데이트됨에 따라 보다 정기적으로 실행해야 하는 단계들도 있습니다. 다음은 전체 단계의 목록입니다.

대부분 일회성 작업

  1. 선호하는 Linux OS 배포를 사용하여 관리되는 디스크에 가상 컴퓨터를 배포합니다.
  2. Apache, 선호하는 PHP 버전 및 기타 원하는 항목을 설치합니다.
  3. 가상 컴퓨터를 할당 취소하고 일반화합니다.
  4. 가상 컴퓨터 디스크 이미지를 캡처하여 사용자 지정 골든 이미지를 생성합니다.
  5. 네트워킹 리소스(부하 분산 장치 등)를 배포합니다.
  6. Azure Cache for Redis를 배포합니다.
  7. Azure Database for MySQL을 배포합니다.
  8. Azure Storage 계정 및 컨테이너를 만듭니다.
  9. 가상 컴퓨터 확장 집합을 만들어 캡처한 디스크 이미지를 OS 디스크로 참조하게 합니다.
  10. 자동 크기 조정 설정을 구성합니다.
  11. DDoS 공격으로부터 보호를 사용하도록 설정합니다.

참고

향후 다른 Linux OS 버전 또는 PHP 버전으로 변경할 경우 사용자 지정 골든 이미지를 다시 만들어야 합니다(1~4단계). 또는 autoscaler를 변경할 수 있습니다(10단계).

정기적 기본 작업

  1. 앞서 언급한 9단계에서 만든 가상 컴퓨터 확장 집합의 가상 컴퓨터 인스턴스를 PHP 파일 수정 내용으로 업데이트합니다.

준비

적어도 Azure 구독이 있어야 합니다. 자세한 내용을 알아보세요.

만들려는 Azure 리소스에 선택하는 이름에 대해 명명 규칙을 검토합니다.

어느 Azure 지역에서 어떤 유형의 Azure Linux 가상 컴퓨터가 지원되는지 조사합니다.

명령줄 옵션

Bash는 Unix 셸 및 명령 언어로서, 일반적으로 사용자가 동작을 일으키는 명령을 입력하는 텍스트 창에서 실행됩니다. 또한 Bash는 셸 스크립트라고 하는 파일에서 명령을 읽고 실행할 수 있습니다. Bash 스크립트를 만들고 실행하려면:

  1. Linux/Unix를 실행하는 컴퓨터에서 디렉터리에 파일을 만듭니다.
  2. 파일 이름을 선택하고 파일 확장명을 Bash 스크립트를 식별하는 .sh로 지정합니다.
  3. 즐겨 찾는 편집기를 사용하여 파일을 엽니다.
  4. 스크립트의 맨 위에 #!/bin/bash가 포함되어야 합니다.
  5. 이 문서에서 제공한 Bash 코드 조각을 복사하여 붙여넣습니다. 변수는 사용하기 전에 초기화해야 하므로 Bash 파일에서 변수를 사용하는 명령보다 위에 배치되어야 한다는 점을 기억하세요.
  6. 파일을 저장합니다.
  7. [SCRIPTNAME.sh]을 스크립트로 대체한 chmod +x [SCRIPTNAME.sh]를 사용하여 파일에 실행 권한을 부여해야 합니다.
  8. 실행하려면 ./[SCRIPTNAME.sh]를 사용하면 됩니다.

전체 아키텍처를 처음부터 끝까지 배포하기 위해 Bash, PowerShell 또는 Windows Batch를 고수할 필요는 없습니다. 예를 들어 Windows Batch를 사용하여 Azure Cache for Redis를 배포하는 단계를 완료한 다음 Bash로 전환하여 Azure Database for MySQL을 배포하는 단계를 완료할 수 있습니다. 하지만 이 방법은 표준이 아닙니다.

중요

명령줄 인터페이스와 이 문서의 샘플을 사용하여 아키텍처를 프로그래밍 방식으로 설정하려면 Azure CLI(Azure 리소스를 관리하는 데 유용한 환경을 제공하는 교차 플랫폼 명령줄 도구) 또는 Azure PowerShell을 설치해야 합니다. 이들은 모두 간편한 스크립팅을 제공하고, 데이터를 쿼리하고, 장기 실행 작업을 지원하도록 설계되었습니다.

명령줄 일반 구성 변수 및 도구

작업 중인 단계에 관계없이 기초가 되는 일반 변수 집합을 유지하는 것이 좋습니다.

  • YOURSUBSCRIPTIONID: Azure 구독 ID(형식: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)입니다.
  • REGIONNAME: 아키텍처를 배포할 Azure 지역입니다.
  • RESOURCEGROUPNAME: 아키텍처의 다른 모든 Azure 서비스를 포함할 리소스 그룹의 이름입니다. 지역 이름을 접미사로 추가하는 것이 좋습니다.
  • PREFIX: 향후 식별을 위해 모든 Azure 서비스 앞에 오는 문자열입니다. 즉, 게임의 코드 네임입니다.

Azure 지역 이름의 목록을 가져옵니다.

az account list-locations

다음은 현재 사용할 수 있는 지역 이름의 몇 가지 예입니다.

지역 이름
일본 서부 japanwest
일본 동부 japaneast
한국 중부 koreacentral
한국 남부 koreasouth
동아시아 eastasia
동남 아시아 southeastasia
동남 아시아 southeastasia
오스트레일리아 중부 australiacentral
오스트레일리아 중부 2 australiacentral2

구체적으로 말하면 특정 Azure Linux 가상 컴퓨터 유형을 지원하는 Azure 지역도 쿼리할 수 있습니다. az-vm-list-skus Azure CLI 및 Get-AzComputeResourceSku PowerShell 명령에 대해 자세히 알아보세요.

az vm list-skus --size Standard_B1s --query [].locationInfo[].location
az vm list-skus --size Standard_F16s_v2 --query [].locationInfo[].location
az vm list-skus --size Standard_F32s_v2 --query [].locationInfo[].location

변수 초기화

고유해야 하는 Azure 구독 ID 및 지역 이름을 제외하고, 명명 규칙을 준수하는 한 리소스 그룹 이름 및 로그인 사용자 이름은 창의적으로 지정할 수 있습니다. myResourceGroupazureuser은 예일 뿐입니다.

export YOURSUBSCRIPTIONID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
export RESOURCEGROUPNAME=myResourceGroup
export REGIONNAME=japanwest
export PREFIX=myGameBackend

1. 관리되는 디스크에 가상 컴퓨터 배포

이 가상 컴퓨터는 한 가지 용도만 있습니다. 즉, 사용자 지정 골든 이미지의 기초 역할을 합니다. 대부분의 경우 나중에 삭제됩니다.

가상 컴퓨터를 배포하는 경우 암호 대신 SSH 키를 사용하여 액세스를 보호하는 것이 좋습니다. 자세한 내용을 알아보세요.

관리되는 디스크에 가상 컴퓨터를 배포하는 데 사용된 방법에 관계없이 Azure Portal에서 리소스 그룹을 보면 아래 이미지와 같을 것입니다. 생성된 리소스는 가상 컴퓨터 자체, 2개의 디스크(운영 체제용 하나와 데이터용 하나), 공용 IP 주소, 네트워크 보안 그룹, NIC(네트워크 인터페이스 컨트롤러), 마지막으로 가상 네트워크입니다.

O가상 컴퓨터 만들기 결과

Azure CLI 사용하는 명령줄 방법

일반 구성 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 소규모 구성 중규모 구성 대규모 구성 설명
LOGINUSERNAME azureuser 배포 후 가상 컴퓨터에 연결하기 위한 관리자 사용자 이름입니다.
VMNAME myVirtualMachine 가상 컴퓨터의 이름입니다.
VMNAME Canonical:UbuntuServer:16.04-LTS:latest 가상 컴퓨터에 설치되는 Linux OS입니다.
VMSIZE Standard_B1s Standard_B1s Standard_F16s_v2 Standard_F32s_v2 가상 컴퓨터 옵션입니다. 프리미엄 SSD는 모든 가상 컴퓨터 옵션에서 지원되지 않습니다. 자세한 내용을 알아보세요.
VMDATADISKSIZEINGB 5 5 10 30 가상 컴퓨터당 할당할 영구 디스크 저장소의 크기입니다. 관리되는 디스크를 사용하는 이점.

가상 컴퓨터 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 1-create-vm.sh 또는 Windows Batch 1-create-vm.bat Azure CLI 스크립트 또는 1-create-vm.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

관리되는 디스크에 가상 컴퓨터를 배포하는 프로세스에 대한 자세한 내용은 가상 컴퓨터 유형 선택, 가상 컴퓨터 이미지 선택, VM 배포 등 기본 Azure 가상 컴퓨터 배포 항목을 다루는 Azure CLI를 사용하여 Linux VM 만들기 및 관리 자습서를 참조하세요.

변수 초기화

고유하게 지정해야 하는 사용할 이미지, 가상 컴퓨터 크기 및 저장소 GB 수를 제외하고, 명명 규칙을 준수하는 한 가상 컴퓨터 이름은 창의적으로 지정할 수 있습니다. myVirtualMachine은 예일 뿐입니다.

export LOGINUSERNAME=azureuser
export VMNAME=myVirtualMachine
export IMAGE=Canonical:UbuntuServer:16.04-LTS:latest
export VMSIZE=Standard_B1s
export VMDATADISKSIZEINGB=5

로그인

이 명령을 실행하면 사용자가 Azure 자격 증명으로 로그인할 수 있는 브라우저가 열립니다. az login Azure CLI 및 Connect-AzAccount PowerShell 명령에 대해 자세히 알아보세요.

az login

Azure 구독 설정

구독이 있는 경우에만 이 단계가 선택 사항입니다. az account set Azure CLI 및 Set-AzContext PowerShell 명령에 대해 자세히 알아보세요.

az account set \
 --subscription $YOURSUBSCRIPTIONID

리소스 그룹 만들기

Azure에서 만드는 모든 리소스는 리소스 그룹의 일부가 되어야 합니다. az group create Azure CLI 및 New-AzResourceGroup PowerShell 명령에 대해 자세히 알아보세요.

az group create \
 --name $RESOURCEGROUPNAME \
 --location $REGIONNAME

리소스 그룹에 대해 자세히 알아보려면 일반 지침 설명서를 참조하세요.

가상 컴퓨터 만들기

이 작업은 몇 분 정도 걸립니다. az vm create Azure CLI 및 New-AzVM PowerShell 명령에 대해 자세히 알아보세요.

az vm create \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMNAME \
 --image $IMAGE \
 --size $VMSIZE \
 --admin-username $LOGINUSERNAME \
 --data-disk-sizes-gb $VMDATADISKSIZEINGB \
 --generate-ssh-keys

포트 80 및 443 열기

az vm open-port Azure CLI 명령에 대해 자세히 알아보세요.

az vm open-port \
 --port 80 \
 --priority 900 \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMNAME

az vm open-port \
 --port 443 \
 --priority 901 \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMNAME

Azure Resource Manager 템플릿

이 ARM(Azure Resource Manager) 템플릿은 사용자 지정 골든 이미지의 기초 역할을 하는 Azure 가상 컴퓨터를 배포하는 예제 템플릿입니다. 대부분의 경우 나중에 삭제됩니다.

Deploy

Azure Portal

Azure Portal을 사용하여 가상 컴퓨터를 수동으로 만들려는 경우 Azure Portal에서 Linux 가상 컴퓨터 만들기Azure Portal을 사용하여 VM에 관리되는 데이터 디스크 연결을 참조하세요.

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 사용자 지정 골든 이미지의 기초 역할을 하는 Azure 가상 컴퓨터를 배포하는 예제 템플릿입니다. 대부분의 경우 나중에 삭제됩니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

2. Apache 및 PHP 설치

방금 만든 가상 컴퓨터의 공용 IP를 가져옵니다.

Azure CLI 사용하는 명령줄 방법

az network public-ip list Azure CLI 및 Get-AzVM PowerShell 명령에 대해 자세히 알아보세요.

az network public-ip list \
 --resource-group $RESOURCEGROUPNAME \
 --query [].ipAddress

Azure Portal

가상 컴퓨터의 개요 페이지에서연결단추를 선택합니다.

CAzure Portal을 통해 가상 컴퓨터에 연결

화면 오른쪽에서 새 블레이드가 열리고 VM 로컬 계정을 사용하여 로그인에 연결 명령이 표시됩니다.

가상 컴퓨터에 연결

선호하는 로컬 bash 셸을 사용하여 SSH 연결 명령을 셸에 붙여넣어 SSH 세션을 만듭니다. 다음 예제에서는 SSH 연결 명령을 보여줍니다.

ssh azureuser@[PUBLICIP]

설치 명령을 하나씩 실행

다음 명령은 Apache 및 PHP 7.3 버전을 설치합니다. 아래의 모든 7.3 참조를 바꿔 다른 PHP 버전(예: 5.6)으로 변경할 수 있습니다.

sudo add-apt-repository -y ppa:ondrej/php

sudo apt-get -y update

export DEBIAN_FRONTEND=noninteractive

sudo apt-get -y install apache2 php7.3 libapache2-mod-php7.3 php7.3-mysql

sudo apt-get -y install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json

sudo apt-get -y install sysv-rc-conf

sudo service apache2 start

sudo sysv-rc-conf apache2 on

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php > /dev/null

exit

셸 스크립트를 만들어 모든 명령을 보다 자동화된 방식으로 실행할 수 있습니다. 예제로 2-install-apache-and-php.sh를 확인하세요.

Azure Resource Manager 템플릿

Azure 가상 컴퓨터에서 스크립트를 다운로드하고 실행하는 Azure 사용자 지정 스크립트 확장을 사용하는 것이 좋습니다. 가상 컴퓨터 사용자 지정 스크립트 확장을 사용하여 Apache 및 PHP 7.3 버전을 설치하는 다음 단추를 클릭합니다.

Deploy

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 Azure 가상 컴퓨터에서 스크립트를 다운로드하고 실행하는 예제 템플릿입니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

웹 서버 및 PHP가 제대로 실행되는지 확인

아래의 PUBLICIP을 가상 컴퓨터의 실제 IP 주소로 바꿉니다. 그런 다음 선호하는 웹 브라우저를 열고 [http://[PUBLICIP]로 이동하는 기본 페이지 또는 예를 들어 특정 PHP에 액세스하여 모든 것이 의도한 대로 작동하는지 확인합니다.

3. 가상 컴퓨터를 할당 취소 및 일반화

가상 컴퓨터 정리

배포용 이미지를 만들려면 시스템을 정리하고 다시 프로비전할 준비를 해야 합니다.

선호하는 로컬 bash 셸, 계정 이름 및 가상 컴퓨터의 공용 IP 주소를 사용하여 원격으로 가상 컴퓨터에 연결하고 프로비전을 해제합니다.

ssh azureuser@[PUBLICIP]
sudo waagent -deprovision+user -force
exit 

위 명령은 다음 작업을 수행합니다.

  • SSH 호스트 키를 제거
  • /etc/resolvconf에서 이름 서버 구성을 제거
  • /etc/shadow에서 루트 사용자의 암호를 제거
  • 캐시된 DHCP 클라이언트 임대를 제거
  • 호스트 이름을 localhost.localdomain으로 다시 설정
  • 마지막으로 프로비전된 사용자 계정 및 해당 데이터를 삭제

가상 컴퓨터 중지, 할당 취소 및 일반화

이미지를 만들기 전에 가상 컴퓨터에서 Linux 게스트 OS를 중지하고 준비해야 합니다. 일반화되지 않은 가상 컴퓨터에서 이미지를 만드는 경우 해당 이미지에서 만든 가상 컴퓨터가 시작되지 않습니다. 이러한 작업은 정말 빠르게 완료해야 합니다.

가상 컴퓨터 준비의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 3-prepare-vm.sh 또는 Windows Batch 3-prepare-vm.bat Azure CLI 스크립트 또는 3-prepare-vm.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

Azure CLI 사용하는 명령줄 방법

az vm deallocate, az vm generalize Azure CLI 및 Stop-AzVMSet-AzVM PowerShell 명령에 대해 자세히 알아보세요.

az vm deallocate \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMNAME

az vm generalize \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMNAME

4. 가상 컴퓨터 디스크 이미지를 캡처하여 사용자 지정 골든 이미지를 생성

골든 이미지를 만드는 데 사용된 방법에 관계없이 Azure Portal에서 리소스 그룹을 보면 아래 이미지와 같을 것입니다. 유일하게 만들어지는 추가 리소스는 이미지 자체입니다.

O골든 이미지 만들기 결과

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 설명
GOLDENIMAGENAME myGoldenImage 사용자 지정 골든 이미지의 이름입니다.

사용자 지정 골든 이미지 만들기의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 4-create-golden-image.sh 또는 Windows Batch 4-create-golden-image.bat Azure CLI 스크립트 또는 4-create-golden-image.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

명명 규칙을 준수하는 한 사용자 지정 골든 이미지 이름을 창의적으로 지정할 수 있습니다. myGoldenImage는 예일 뿐입니다.

export GOLDENIMAGENAME=myGoldenImage

사용자 지정 골든 이미지 만들기

az image create Azure CLI 및 New-AzImage PowerShell 명령에 대해 자세히 알아보세요.

az image create \
 --resource-group $RESOURCEGROUPNAME \
 --source $VMNAME \
 --name $GOLDENIMAGENAME \
 --os-type Linux

Azure Resource Manager 템플릿

Azure Resource Manager에서 이미지 만들기가 완전히 지원되는 것은 아닙니다. 원본으로 사용되는 Azure 가상 컴퓨터를 미리 일반화해야 합니다. 일반화된 Azure 가상 컴퓨터를 참조할 수 있는 경우 사용자 지정 골든 이미지를 만드는 ARM 템플릿은 다음과 같습니다.

{
  "type": "Microsoft.Compute/images",
  "apiVersion": "2019-03-01",
  "name": "[variables('imageName')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('VMNAME'), '/extensions/', variables('extensionName'))]"
  ],
  "properties": {
    "sourceVirtualMachine": {
      "id": "[variables('vmResourceId')]"
    }
  }
}

Azure Portal

현재 관리되는 디스크를 사용한 이미지 만들기는 Azure Portal을 통해 지원되지 않습니다.

Hashicorp Terraform

공급자에서 이미지 만들기가 완전히 지원되는 것은 아닙니다. 원본으로 사용되는 Azure 가상 컴퓨터를 미리 일반화해야 합니다. 추가 지침은 다음 자료를 참조하세요.

5. 네트워킹 리소스 배포

주의

이 구성 부분은 여러 네트워킹 요소가 포함되고 일부는 상호 연결되므로 보다 주의 깊게 확인해야 합니다.

다음은 사용자가 표준 부하 분산 장치 SKU에서만 지원되는 HTTPs 트래픽 상태 프로브를 비롯한 모든 네트워킹 리소스와 인스턴스가 2개인 가상 컴퓨터 확장 집합을 배포한 경우의 토폴로지를 보여 주는 예입니다.

N네트워킹 토폴로지

특히 네트워킹 리소스에 대해 Azure Portal의 리소스 그룹을 보면 아래 이미지와 같을 것입니다. 노출되는 만들어진 리소스는 부하 부산 장치, 부하 분산 장치의 공용 IP, 가상 네트워크입니다.

A만들기 후 노출되는 Azure Portal 네트워킹

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 소규모 구성 중규모 구성 대규모 구성 설명
LBSKU 기본 기본 표준 표준 Azure Load Balancer SKU입니다. 자세한 내용을 알아보세요.
PUBLICIPNAME PREFIX + PublicIP Azure Load Balancer의 공용 IP 주소를 식별하는 이름입니다.
PUBLICIPALLOCATION 정적 동적 또는 정적.
PUBLICIPVERSION Ipv4 Ipv4 또는 Ipv6.
LBNAME PREFIX + LB Azure Load Balancer를 식별하는 이름입니다.
VNETNAME PREFIX + VNET Azure 가상 네트워크를 식별하는 이름입니다.
VNETADDRESSPREFIX 10.0.0.0/16 Azure 가상 네트워크 주소 공간입니다.
SUBNETNAME PREFIX + Subnet 서브넷을 식별하는 이름입니다.
SUBNETADDRESSPREFIX 10.0.0.0/24 CIDR 표기법(예: 192.168.1.0/24)으로 표시한 서브넷 주소 범위입니다. Azure 가상 네트워크의 주소 공간에 포함되어야 합니다.
LBBEPOOLNAME LBNAME + BEPool Azure Load Balancer 백엔드 풀의 이름입니다.
LBFENAME LBNAME + FE Azure Load Balancer 프런트 엔드 IP 구성의 이름입니다.
LBFEPORTRANGESTART 50000 프런트 엔드 IP 구성 범위 시작 포트입니다.
LBFEPORTRANGEEND 50119 프런트 엔드 IP 구성 범위 끝 포트입니다.
LBNATPOOLNAME LBNAME + NATPool Azure Load Balancer NAT 풀 이름입니다.
LBRULEHTTPNAME LBNAME + HTTPRule HTTP 연결에 대한 Azure Load Balancer 인바운드 NAT 규칙 이름입니다.
LBRULEHTTPSNAME 참고: 표준 SKU만 해당 LBNAME + HTTPSRule LBNAME + HTTPSRule HTTPs 연결에 대한 Azure Load Balancer 인바운드 NAT 규칙 이름입니다.

네트워킹 리소스 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 5-create-networking.sh 또는 Windows Batch 5-create-networking.bat Azure CLI 스크립트 또는 5-create-networking.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

명명 규칙을 준수하는 한 공용 IP 이름, 부하 분산 장치 이름, 가상 네트워크 이름, 서브넷 이름, 백엔드 풀 이름, 프런트 엔드 IP 구성 이름, NAT 풀 이름 및 부하 분산 규칙 이름은 창의적으로 지정할 수 있습니다. myGameBackendLB는 부하 분산 장치의 이름을 지정하는 방법을 보여 주는 예일 뿐입니다.

export LBSKU=Basic
export PUBLICIPNAME=${PREFIX}PublicIP
export PUBLICIPALLOCATION=Static
export PUBLICIPVERSION=IPv4
export LBNAME=${PREFIX}LB
export VNETNAME=${PREFIX}VNET
export VNETADDRESSPREFIX=10.0.0.0/16
export SUBNETNAME=${PREFIX}Subnet
export SUBNETADDRESSPREFIX=10.0.0.0/24
export LBBEPOOLNAME=${LBNAME}BEPool
export LBFENAME=${LBNAME}FE
export LBFEPORTRANGESTART=50000
export LBFEPORTRANGEEND=50119
export LBNATPOOLNAME=${LBNAME}NATPool
export LBRULEHTTPNAME=${LBNAME}HTTPRule
export LBRULEHTTPSNAME=${LBNAME}HTTPSRule

Azure 가상 네트워크 만들기

az network vnet create Azure CLI 및 New-AzVirtualNetwork PowerShell 명령에 대해 자세히 알아보세요.

az network vnet create \
 --resource-group $RESOURCEGROUPNAME \
 --name $VNETNAME \
 --address-prefix $VNETADDRESSPREFIX \
 --subnet-name $SUBNETNAME \
 --subnet-prefix $SUBNETADDRESSPREFIX

부하 분산 장치에 대한 인바운드 공용 IP 주소 만들기

az network public-ip create Azure CLI 및 New-AzPublicIpAddress PowerShell 명령에 대해 자세히 알아보세요.

az network public-ip create \
 --resource-group $RESOURCEGROUPNAME \
 --name $PUBLICIPNAME \
 --allocation-method $PUBLICIPALLOCATION \
 --sku $LBSKU \
 --version $PUBLICIPVERSION

Azure Load Balancer 만들기

az network lb create Azure CLI 및 New-AzLoadBalancer PowerShell 명령에 대해 자세히 알아보세요.

az network lb create \
 --resource-group $RESOURCEGROUPNAME \
 --name $LBNAME \
 --sku $LBSKU \
 --backend-pool-name $LBBEPOOLNAME \
 --frontend-ip-name $LBFENAME \
 --public-ip-address $PUBLICIPNAME

HTTP에 대한 Azure Load Balancer 상태 프로브 만들기

az network lb probe create Azure CLI 및 Add-AzLoadBalancerProbeConfig PowerShell 명령에 대해 자세히 알아보세요.

az network lb probe create \
 --resource-group $RESOURCEGROUPNAME \
 --lb-name $LBNAME \
 --name http \
 --protocol http \
 --port 80 \
 --path /

HTTPs에 대한 Azure Load Balancer 상태 프로브 만들기

참고

이 기능은 표준 부하 분산 장치 SKU에서만 지원됩니다.

if [ "$LBSKU" = "Standard" ]; then
az network lb probe create \
 --resource-group $RESOURCEGROUPNAME \
 --lb-name $LBNAME \
 --name https \
 --protocol https \
 --port 443 \
 --path /
fi

백엔드 포트 22를 사용하여 인바운드 NAT 풀 만들기

az network lb inbound-nat-pool create Azure CLI 및 Add-AzLoadBalancerInboundNatPoolConfig PowerShell 명령에 대해 자세히 알아보세요.

az network lb inbound-nat-pool create \
 --resource-group $RESOURCEGROUPNAME \
 --name $LBNATPOOLNAME \
 --backend-port 22 \
 --frontend-port-range-start $LBFEPORTRANGESTART \
 --frontend-port-range-end $LBFEPORTRANGEEND \
 --lb-name $LBNAME \
 --frontend-ip-name $LBFENAME \
 --protocol Tcp

포트 80에 대한 부하 분산 인바운드 규칙 만들기

az network lb rule create Azure CLI 및 Add-AzLoadBalancerRuleConfig PowerShell 명령에 대해 자세히 알아보세요.

az network lb rule create \
 --resource-group $RESOURCEGROUPNAME \
 --name $LBRULEHTTPNAME \
 --lb-name $LBNAME \
 --protocol tcp \
 --frontend-port 80 \
 --backend-port 80 \
 --probe http \
 --frontend-ip-name $LBFENAME \
 --backend-pool-name $LBBEPOOLNAME

포트 443에 대한 부하 분산 인바운드 규칙 만들기

참고

이 기능은 표준 부하 분산 장치 SKU에서만 지원됩니다.

if [ "$LBSKU" = "Standard" ]; then
az network lb rule create \
 --resource-group $RESOURCEGROUPNAME \
 --name $LBRULEHTTPSNAME \
 --lb-name $LBNAME \
 --protocol tcp \
 --frontend-port 443 \
 --backend-port 443 \
 --probe https \
 --frontend-ip-name $LBFENAME \
 --backend-pool-name $LBBEPOOLNAME
fi

Azure Resource Manager 템플릿

이 ARM(Azure Resource Manager) 템플릿은 Azure 가상 네트워크 및 Azure Load Balancer를 배포 하는 예제 템플릿입니다. 또한 부하 분산 장치에 대한 인바운드 공용 IP 주소, Azure Load Balancer HTTP 및 HTTPS용 상태 프로브, 백엔드 포트 22를 사용하는 인바운드 NAT 풀, 포트 80에 대한 부하 분산 인바운드 규칙을 만듭니다.

Azure Load Balancer 기본으로 네트워킹 리소스를 배포하려면 다음 단추를 클릭합니다.

Deploy

Azure Load Balancer 표준으로 네트워킹 리소스를 배포하려면 다음 단추를 클릭합니다.

Deploy

Azure Portal

Azure Portal을 사용하여 Azure Load Balancer SKU를 만드는 방법을 알아보려면 Azure Portal을 사용하여 기본 부하 분산 장치 만들기Azure Portal을 사용하여 VM을 부하 분산하는 표준 부하 분산 장치 만들기를 참조하세요.

Hashicorp Terraform

Azure 가상 네트워크 및 Azure Load Balancer를 배포하는 두 가지 예제 템플릿을 사용할 수 있으며, 이들 템플릿은 부하 분산 장치에 대한 인바운드 공용 IP 주소, HTTP 및 HTTPS에 대한 상태 프로브, 백엔드 포트 22를 사용하는 인바운드 NAT 풀, 포트 80에 대한 부하 분산 인바운드 규칙도 만듭니다. 두 템플릿의 주요 차이점은 이 Hashicorp Terraform의 Azure 공급자 템플릿기본 Azure Load Balancer를 배포하고, 이 다른 Hashicorp Terraform의 Azure 공급자 템플릿표준 Azure Load Balancer를 배포한다는 것입니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

6. Azure Cache for Redis 배포

Azure Cache for Redis는 널리 사용되는 소프트웨어 Redis를 기반으로 합니다. 일반적으로 백엔드 데이터 저장소에 크게 의존하는 시스템의 성능 및 확장성을 개선하기 위해 캐시로 사용됩니다.

Azure Cache for Redis를 만드는 데 사용된 방법에 관계없이 Azure Portal에서 리소스 그룹을 보면 아래 이미지와 같을 것입니다. 유일하게 만들어지는 추가 리소스는 캐시 자체입니다.

OAzure Cache for Redis 만들기 결과

Azure Cache for Redis를 배포하는 데는 총 30분이 걸리지 않습니다.

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 소규모 구성 중규모 구성 대규모 구성 설명
REDISNAME PREFIX + Redis Azure Cache for Redis 이름입니다.
REDISNAMEUNIQUE REDISNAME + [난수] 중요: Azure Cache for Redis 이름은 모든 Azure 고객 간에 완전히 고유해야 합니다. 따라서 스크립트는 난수 생성기를 사용합니다.
REDISVMSIZE C1 C3 C4 P4 기본/표준(C0, C1, C2, C3, C4, C5, C6), 프리미엄(P1, P2, P3, P4, P5)
REDISSKU 표준 표준 표준 프리미엄 기본 – 단일 노드, 다중 크기, 개발/테스트 및 중요하지 않은 워크로드에 적합. 기본 계층에는 SLA가 없습니다.
표준 – Microsoft에서 관리하는 2개 노드 기본/보조 구성의 복제된 캐시이며 고가용성 SLA를 제공합니다.
프리미엄 – 새로운 프리미엄 계층에는 모든 표준 계층 기능 이외에 기본 또는 표준 계층 캐시에 비해 향상된 성능, 더 큰 워크로드, 데이터 지속성, 향상된 네트워크 보안 등이 포함됩니다.
REDISSHARDSTOCREATE 참고: 프리미엄 SKU만 해당 참고: 프리미엄 SKU만 해당 10 클러스터당 샤드 수입니다.
REDISSUBNETNAME 참고: 프리미엄 SKU만 해당 참고: 프리미엄 SKU만 해당 REDISNAME + Subnet Azure Cache for Redis 인스턴스가 Azure 가상 네트워크를 사용하여 구성된 경우 이 캐시는 공개적으로 주소를 지정할 수 없으며 Azure 가상 네트워크 내의 가상 컴퓨터 및 애플리케이션에서만 액세스할 수 있습니다. 자세한 내용을 알아보세요.
REDISSUBNETADDRESSPREFIX 참고: 프리미엄 SKU만 해당 참고: 프리미엄 SKU만 해당 10.0.1.0/24 중요: Azure Cache for Redis를 Azure 가상 네트워크에 배포하는 경우 Azure Cache for Redis 인스턴스용 리소스를 제외한 다른 어떤 리소스도 포함하지 않는 전용 서브넷에 캐시가 있어야 합니다.
SUBNETID 참고: 프리미엄 SKU만 해당 참고: 프리미엄 SKU만 해당 SUBNETID 참고: 전체 문자열은 필수입니다.

Azure Cache for Redis 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 6-create-redis.sh 또는 Windows Batch 6-create-redis.bat Azure CLI 스크립트 또는 6-create-redis.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

명명 규칙을 준수하는 한 Azure Cache for Redis 이름 및 서브넷 이름만 창의적으로 지정할 수 있습니다. myGameBackendRedis1234는 Azure Cache for Redis 이름을 지정하는 방법을 보여 주는 예일 뿐입니다. 나머지 변수는 예상되는 특정 값 집합으로 채워야 합니다.

export RANDOMNUMBER=`head -200 /dev/urandom | cksum | cut -f2 -d " "`
export REDISNAME=${PREFIX}Redis
export REDISNAMEUNIQUE=${REDISNAME}${RANDOMNUMBER}
export REDISVMSIZE=C1
export REDISSKU=Standard
export REDISSHARDSTOCREATE=2
export VNETNAME=${PREFIX}VNET
export REDISSUBNETNAME=${REDISNAME}Subnet
export REDISSUBNETADDRESSPREFIX=10.0.1.0/24
export SUBNETID=/subscriptions/${YOURSUBSCRIPTIONID}/resourceGroups/${RESOURCEGROUPNAME}/providers/Microsoft.Network/virtualNetworks/${VNETNAME}/subnets/${REDISSUBNETNAME}

특정 서브넷 이름 캐시 만들기

참고

이 기능은 프리미엄 Azure Cache for Redis SKU에서만 지원됩니다.

az network vnet subnet create \
 --resource-group $RESOURCEGROUPNAME \
 --vnet-name $VNETNAME \
 --name $REDISSUBNETNAME \
 --address-prefixes $REDISSUBNETADDRESSPREFIX

Azure Cache for Redis 만들기

az redis create Azure CLI 및 New-AzRedisCache PowerShell 명령에 대해 자세히 알아보세요.

if [ "$REDISSKU" = "Standard" ]; then
az redis create \
--resource-group $RESOURCEGROUPNAME \
--name $REDISNAMEUNIQUE \
--location $REGIONNAME \
--sku $REDISSKU \
--vm-size $REDISVMSIZE /
fi

if [ "$REDISSKU" = "Premium" ]; then
az redis create \
--resource-group $RESOURCEGROUPNAME \
--name $REDISNAMEUNIQUE \
--location $REGIONNAME \
--sku $REDISSKU \
--vm-size $REDISVMSIZE \
--shard-count $REDISSHARDSTOCREATE \
--subnet-id $SUBNETID /
fi

참고

표준 요금제와 프리미엄 요금제의 주요 차이점은 Azure 가상 네트워크 뒤에서 클러스터를 설정하고 캐시를 보호할 수 있는 --shard-count--subnet-id입니다. 관심이 없는 경우 제거하세요.

캐시 세부 정보(hostName, enableNonSslPort, port, sslPort, primaryKey 및 secondaryKey) 가져오기

az redis show \
 --resource-group $RESOURCEGROUPNAME \
 --name $REDISNAMEUNIQUE \
 --query [hostName,enableNonSslPort,port,sslPort] \
 --output tsv

az redis list-keys \
 --resource-group $RESOURCEGROUPNAME \
 --name $REDISNAMEUNIQUE \
 --query [primaryKey,secondaryKey] \
 --output tsv

Azure Resource Manager 템플릿

이 ARM(Azure Resource Manager) 템플릿은 Azure Cache for Redis를 배포하는 예제 템플릿입니다.

Deploy

Azure Portal

Azure Portal을 사용하여 Azure Cache for Redis를 만들려면 캐시 만들기를 참조하세요. 그런 다음 Azure Cache for Redis 인스턴스에 사용할 수 있는 구성을 설명하는 Azure Cache for Redis를 구성하는 방법을 참조하세요.

Azure Portal을 사용하여 프리미엄 Azure Cache for Redis 인스턴스에서 클러스터링을 구성하는 방법을 설명하는 프리미엄 Azure Cache for Redis에 Redis 클러스터링을 구성하는 방법을 참조하세요.

Azure Portal을 사용하여 프리미엄 Azure Cache for Redis 인스턴스에 대한 가상 네트워크 지원을 구성하는 방법을 설명하는 프리미엄 Azure Cache for Redis에 대한 가상 네트워크 지원을 구성하는 방법을 참조하세요.

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 Azure Cache for Redis를 배포하는 예제 템플릿입니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

7. Azure Database for MySQL 배포

Azure Database for MySQL은 오픈 소스 MySQL 서버 엔진을 기반으로 하는 관계형 데이터베이스 서비스입니다. 이 완벽하게 관리되는 데이터베이스는 예측 가능한 성능과 동적 확장성을 통해 업무상 중요한 워크로드를 처리할 수 있는 서비스입니다. 읽기 복제본을 통해 즉각적으로 마스터/슬레이브 구성을 지원합니다.

Azure Cache for Redis를 만드는 데 사용된 방법에 관계없이 Azure Portal에서 리소스 그룹을 보면 아래 이미지와 같을 것입니다. 유일하게 노출되는 추가 리소스는 마스터 데이터베이스 자체와 만든 경우 복제본입니다.

OAzure Database for MySQL 만들기 결과

Azure Database for MySQL 마스터 및 복제본을 배포하는 데는 총 30분이 걸리지 않습니다.

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 소규모 구성 중규모 구성 대규모 구성 설명
MYSQLNAME PREFIX + MySQL Azure Database for MySQL 서버의 이름입니다.
MYSQLNAMELOWER 소문자(MYSQLNAME) 중요: Azure Database for MySQL의 서버 이름은 전부 소문자여야 합니다.
MYSQLNAMEUNIQUE MYSQLNAMELOWER + [난수] 중요: Azure Cache for Redis 이름은 모든 Azure 고객 간에 완전히 고유해야 합니다. 따라서 스크립트는 난수 생성기를 사용합니다.
MYSQLUSERNAME azuremysqluser MySQL 서버에 연결하기 위한 관리자 사용자 이름입니다.
MYSQLPASSWORD CHang3thisP4Ssw0rD MySQL 서버에 연결하기 위한 관리자 암호입니다. 어느 쪽이든 최대한 강력한 암호로 변경하세요.
MYSQLDBNAME gamedb 게임 데이터베이스의 이름입니다.
MYSQLBACKUPRETAINEDDAYS 7 7 15 30 백업 보존 기간입니다. 자세한 내용을 알아보세요.
MYSQLGEOREDUNDANTBACKUP 사용 안 함 사용 안 함 비활성화 사용 자세한 내용을 알아보세요. 중요: 백업용으로 로컬 중복 또는 지리적 중복 저장소를 구성하는 것은 서버를 만드는 동안에만 허용됩니다. 서버가 프로비전되면 백업 저장소 중복 옵션을 변경할 수 없습니다.
MYSQLSKU GP_Gen5_2 GP_Gen5_2 GP_Gen5_8 MO_Gen5_16 중요: SKU 유형 및 코어 수에 따라 연결 제한이 있습니다. 자세한 내용을 알아보세요.
MYSQLSTORAGEMBSIZE 51200 8192 4096000 8192000 공간과 IOPS는 SKU 및 할당된 저장소 크기에 따라 달라집니다. 자세한 내용을 알아보세요.
MYSQLVERSION 5.7 5.7 5.7 5.7 MySQL 버전입니다.
MYSQLREADREPLICANAME MYSQLNAMEUNIQUE + Replica MYSQLNAMEUNIQUE + Replica1 ... 읽기 복제본 MySQL 이름입니다.
MYSQLREADREPLICAREGION REGIONNAME REGIONNAME 읽기 복제본을 배포할 Azure 지역입니다.
MYSQLSUBNETNAME MYSQLNAME + Subnet 데이터베이스를 포함하는 서브넷의 이름입니다.
MYSQLSUBNETADDRESSPREFIX 10.0.2.0/24 참고: 범용 또는 메모리 최적화 계층에서만 지원됩니다.
MYSQLRULENAME MYSQLNAME + Rule 서브넷에서 사용하도록 설정된 규칙의 이름입니다.

Azure Database for MySQL 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 7-create-mysql.sh 또는 Windows Batch 7-create-mysql.bat Azure CLI 스크립트 또는 7-create-mysql.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

명명 규칙을 준수하는 한 Azure Database for MySQL 마스터 및 읽기 복제본 서버 이름, 데이터베이스 이름, 서브넷 이름 및 관리자 사용자 이름/암호만 창의적으로 지정할 수 있습니다. myGameBackendMySQL은 Azure Database for MySQL 이름을 지정하는 방법을 보여 주는 예일 뿐입니다. 나머지 변수는 예상되는 특정 값 집합으로 채워야 합니다.

export RANDOMNUMBER=`head -200 /dev/urandom | cksum | cut -f2 -d " "`
export MYSQLNAME=${PREFIX}MySQL
export MYSQLNAMELOWER=${MYSQLNAME,,}
export MYSQLNAMEUNIQUE=${MYSQLNAMELOWER}${RANDOMNUMBER}
export MYSQLUSERNAME=azuremysqluser
export MYSQLPASSWORD=CHang3thisP4Ssw0rD
export MYSQLDBNAME=gamedb
export MYSQLBACKUPRETAINEDDAYS=7
export MYSQLGEOREDUNDANTBACKUP=Disabled
export MYSQLSKU=GP_Gen5_2
export MYSQLSTORAGEMBSIZE=51200
export MYSQLVERSION=5.7
export MYSQLREADREPLICANAME=${MYSQLNAMEUNIQUE}Replica
export MYSQLREADREPLICAREGION=westus
export MYSQLSUBNETNAME=${MYSQLNAME}Subnet
export MYSQLSUBNETADDRESSPREFIX=10.0.2.0/24
export MYSQLRULENAME=${MYSQLNAME}Rule

Azure CLI db-up 확장 사용(미리 보기)

az extension add --name db-up

서버, 데이터베이스 및 기타 정기적인 작업 만들기

참고

Azure CLI az mysql up명령은 서버를 만드는 것 외에도 샘플 데이터베이스, 데이터베이스의 루트 사용자를 만들고, Azure 서비스용 방화벽을 열고, 클라이언트 컴퓨터에 대한 기본 방화벽 규칙을 만듭니다. 또한 Azure Database for MySQL에는 아직 PowerShell 명령이 없습니다.

az mysql up Azure CLI 및 New-AzResource PowerShell 명령에 대해 자세히 알아보세요.

az mysql up \
 --resource-group $RESOURCEGROUPNAME \
 --server-name $MYSQLNAMEUNIQUE \
 --admin-user $MYSQLUSERNAME \
 --admin-password $MYSQLPASSWORD \
 --backup-retention $MYSQLBACKUPRETAINEDDAYS \
 --database-name $MYSQLDBNAME \
 --geo-redundant-backup $MYSQLGEOREDUNDANTBACKUP \
 --location $REGIONNAME \
 --sku-name $MYSQLSKU \
 --storage-size $MYSQLSTORAGEMBSIZE \
 --version=$MYSQLVERSION

Azure Database for MySQL 가상 네트워크 서비스 엔드포인트 만들기 및 사용

az network vnet subnet create \
 --resource-group $RESOURCEGROUPNAME \
 --vnet-name $VNETNAME \
 --name $MYSQLSUBNETNAME \
 --service-endpoints Microsoft.SQL \
 --address-prefix $MYSQLSUBNETADDRESSPREFIX

중요

Azure CLI를 사용하는 경우 Microsoft.Sql은 SQL Database라는 Azure 서비스를 참조하지만 이 서비스 태그는 Azure SQL Database, Azure Database for PostgreSQL 및 MySQL 서비스에도 적용됩니다. Microsoft.Sql 서비스 태그를 VNet 서비스 엔드포인트에 적용하는 경우 Azure SQL Database, Azure Database for PostgreSQL 및 Azure Database for MySQL을 포함하는 모든 Azure Database 서비스에 대한 서비스 엔드포인트 트래픽을 서브넷에서 구성합니다.

PowerShell을 사용하는 경우 Azure 서비스에서 방금 배포한 Azure Database for MySQL에 연결하도록 허용하는 방법을 읽으려면 Azure 서비스 허용을 참조하세요.

서브넷까지 보호하기 위해 MySQL 서버에 대한 가상 네트워크 규칙 만들기

az mysql server vnet-rule create Azure CLI 명령에 대해 자세히 알아보세요.

az mysql server vnet-rule create \
 --resource-group $RESOURCEGROUPNAME \
 --server-name $MYSQLNAMEUNIQUE \
 --vnet-name $VNETNAME \
 --subnet $MYSQLSUBNETNAME \
 --name $MYSQLRULENAME

MySQL 서버를 원본(마스터)으로 사용하여 읽기 복제본 만들기

az mysql server replica create Azure CLI 명령에 대해 자세히 알아보세요.

az mysql server replica create \
 --resource-group $RESOURCEGROUPNAME \
 --name $MYSQLREADREPLICANAME \
 --source-server $MYSQLNAMEUNIQUE \
 --location $MYSQLREADREPLICAREGION

Azure Resource Manager 템플릿

이 ARM(Azure Resource Manager) 템플릿은 Azure Database for MySQL 서버, '복제본 수' 매개 변수에 따른 개수의 복제본 및 샘플 데이터베이스를 배포하는 예제 템플릿입니다. 또한 Azure Database for MySQL 가상 네트워크 서비스 엔드포인트를 만들고 사용하도록 설정하고, 서브넷까지 보호하기 위해 MySQL 서버에 대한 가상 네트워크 규칙을 만듭니다.

Deploy

Azure Portal

서버를 만들어 관리하고, 방화벽을 구성하고, 데이터베이스를 설정하는 방법을 알아보려면 Azure Portal을 사용하여 Azure Database for MySQL 데이터베이스 디자인을 참조하세요.

Azure Portal을 사용하여 Azure Database for MySQL 서비스에서 읽기 복제본을 만들어 관리하는 방법을 알아보려면 Azure Portal을 사용하여 Azure Database for MySQL에서 읽기 복제본을 만들어 관리하는 방법을 참조하세요.

데이터베이스에 대한 보안 조치를 사용하도록 설정하는 방법을 알아보려면 Azure Portal을 사용하여 Azure Database for MySQL VNet 서비스 엔드포인트 및 VNet 규칙 만들기 및 관리를 참조하세요.

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 Azure Database for MySQL 서버 및 샘플 데이터베이스를 배포하는 예제 템플릿입니다. 또한 Azure Database for MySQL 가상 네트워크 서비스 엔드포인트를 만들고 사용하도록 설정하고, 서브넷까지 보호하기 위해 MySQL 서버에 대한 가상 네트워크 규칙을 만듭니다. 현재 이 공급자는 복제본 만들기를 지원하지 않으므로 다른 배포 메커니즘을 사용하여 이를 처리합니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

8. Azure Storage 계정 및 컨테이너 만들기

Azure Storage는 플랫 파일 저장과 같은 최신 데이터 저장 시나리오를 위한 Microsoft의 클라우드 스토리지 솔루션입니다. Azure Storage는 데이터 개체에 대한 확장성 있는 개체 저장소, 클라우드에 대한 파일 시스템 서비스, 신뢰할 수 있는 메시징을 위한 메시징 저장소 및 NoSQL 저장소를 제공합니다.

Azure Storage 계정 및 컨테이너를 만드는 데 사용된 방법에 관계없이 Azure Portal에서 리소스 그룹을 보면 아래 이미지와 같을 것입니다. 유일하게 노출되는 추가 리소스는 Azure Storage 자체입니다.

OAzure Storage 계정 및 컨테이너 만들기 결과

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 소규모 구성 중규모 구성 대규모 구성 설명
STORAGENAME PREFIX + STRG 스토리지 계정의 이름입니다.
STORAGENAMELOWER 소문자(STORAGENAME) 중요: 스토리지 계정의 이름은 전부 소문자여야 합니다.
STORAGENAMEUNIQUE STORAGENAMELOWER + [난수] 중요: 스토리지 계정 이름은 모든 Azure 고객 간에 완전히 고유해야 합니다. 따라서 스크립트는 난수 생성기를 사용합니다.
STORAGESKU Standard_LRS Standard_LRS Premium_LRS Premium_LRS 설정할 스토리지 SKU입니다(표준, 프리미엄 또는 울트라).
STORAGECONTAINERNAME %STORAGENAMELOWER%cntnr Blob은 컨테이너에 저장해야 합니다.
STORAGESUBNETNAME STORAGENAME + Subnet 스토리지 계정을 포함하는 서브넷의 이름입니다.
STORAGESUBNETADDRESSPREFIX 10.0.3.0/24 서브넷 주소.
STORAGERULENAME STORAGENAME + Rule 서브넷에서 사용하도록 설정된 규칙의 이름입니다.

Azure Storage 및 컨테이너 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 8-create-storage.sh 또는 Windows Batch 8-create-storage.bat Azure CLI 스크립트 또는 8-create-storage.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

명명 규칙을 준수하는 한 Azure Storage 계정 이름 및 컨테이너 이름만 창의적으로 지정할 수 있습니다. mygamebackendstrg1234는 Azure Storage 계정 이름을 지정하는 방법을 보여 주는 예일 뿐입니다. 나머지 변수는 예상되는 특정 값 집합으로 채워야 합니다.

export RANDOMNUMBER=`head -200 /dev/urandom | cksum | cut -f2 -d " "`
export STORAGENAME=${PREFIX}STRG
export STORAGENAMELOWER=${STORAGENAME,,}
export STORAGENAMEUNIQUE=${STORAGENAMELOWER}${RANDOMNUMBER}
export STORAGESKU=Standard_LRS
export STORAGECONTAINERNAME=${STORAGENAMELOWER}cntnr
export STORAGESUBNETNAME=${STORAGENAME}+'Subnet'
export STORAGESUBNETADDRESSPREFIX='10.0.3.0/24'
export STORAGERULENAME=${STORAGENAME}+'Rule'

스토리지 계정 만들기

az storage account create Azure CLI 및 New-AzStorageAccount PowerShell 명령에 대해 자세히 알아보세요.

az storage account create \
 --resource-group $RESOURCEGROUPNAME% \
 --name $STORAGENAMEUNIQUE \
 --sku $STORAGESKU \
 --location $REGIONNAME

스토리지 계정에서 연결 문자열 가져오기

export STORAGECONNECTIONSTRING=`az storage account show-connection-string -n $STORAGENAMEUNIQUE -g $RESOURCEGROUPNAME --query connectionString -o tsv`

스토리지 계정에 저장소 컨테이너 만들기

az storage container create Azure CLI 및 New-AzRmStorageContainer PowerShell 명령에 대해 자세히 알아보세요.

az storage container create \
 --name $STORAGECONTAINERNAME \
 --connection-string $STORAGECONNECTIONSTRING

가상 네트워크 및 서브넷에서 Azure Storage용 서비스 엔드포인트 사용

az network vnet subnet create \
 --resource-group $RESOURCEGROUPNAME% \
 --vnet-name $VNETNAME \
 --name $STORAGESUBNETNAME \
 --service-endpoints Microsoft.Storage \
 --address-prefix $STORAGESUBNETADDRESSPREFIX

가상 네트워크 및 서브넷에 대한 네트워크 규칙 추가

az storage account network-rule add Azure CLI 및 Add-AzStorageAccountNetworkRule PowerShell 명령에 대해 자세히 알아보세요.

$STORAGESUBNETID=`az network vnet subnet show --resource-group $RESOURCEGROUPNAME --vnet-name $VNETNAME --name $STORAGESUBNETNAME --query id --output tsv`
az storage account network-rule add --resource-group $RESOURCEGROUPNAME --account-name $STORAGENAMEUNIQUE --subnet $STORAGESUBNETID

Azure Resource Manager 템플릿

이 ARM 템플릿은 Azure Storage 계정을 배포하고 스토리지 계정에 저장소 컨테이너를 만들고, 가상 네트워크 및 서브넷에서 Azure Storage용 서비스 엔드포인트를 사용하도록 설정하고, 가상 네트워크 및 서브넷에 대한 네트워크 규칙을 추가하는 예제 템플릿입니다. 스토리지 계정에서 연결 문자열을 가져와서 '출력' 필드에 제공합니다.

Deploy

Azure Portal

Azure Portal을 사용하여 Azure Storage 계정을 만드는 방법을 보여 주는 스토리지 계정 만들기를 참조하세요.

Azure Portal에서 저장소 컨테이너를 만드는 방법을 보여 주는 컨테이너 만들기를 참조하세요.

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 Azure Storage 계정을 배포하고, 가상 네트워크 및 서브넷에서 Azure Storage용 서비스 엔드포인트를 사용하도록 설정하고, 가상 네트워크 및 서브넷에 대한 네트워크 규칙을 추가하는 예제 템플릿입니다. 현재 이 공급자는 스토리지 계정에 저장소 컨테이너를 만들 때 버그가 발생하므로 다른 배포 메커니즘을 사용하여 이를 처리합니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

9. 가상 컴퓨터 확장 집합 만들기

가상 컴퓨터 확장 집합을 사용하면 동일한 자동 크기 조정 가상 컴퓨터 집합을 배포하고 관리할 수 있습니다.

크기 조정 집합에는 최신 크기 조정 집합 모델을 사용하여 VM을 최신 상태로 만드는 방법을 결정하는 "업그레이드 정책"이 있습니다. 업그레이드 정책의 세 가지 모드는 다음과 같습니다.

  • 자동 - 이 모드에서는 크기 조정 집합이 VM을 작동 중지하는 순서를 보장할 수 없습니다. 크기 조정 집합이 모든 VM을 동시에 작동 중지할 수 있으며, 이로 인해 중단 시간이 발생할 수 있습니다.
  • 수동 - 이 모드에서는 크기 조정 집합 모델을 업데이트할 때 기존 VM에 아무런 변화가 없습니다. 인스턴스 수가 많고 업데이트를 처리하기 위한 자동화가 없을 때 가장 적합하지 않습니다.
  • 롤링 - 이 모드에서는 크기 조정 집합이 일괄 처리 간 일시 중지 시간(선택 사항)을 사용하여 일괄적으로 업데이트를 롤아웃합니다. 롤링 업그레이드는 한 번에 크기 조정 집합의 인스턴스 중 일부만 업데이트합니다. 따라서, 게임이 이를 처리하기 위해 준비해야 하며, 또한 해당 백엔드 서버에서 일부 하위 집합은 최신 상태이고 나머지는 이전 버전을 실행 중일 수 있습니다. 결국 모든 서버가 최신 상태로 업데이트됩니다. 롤링 업그레이드를 수행하려면 상태 프로브가 가상 컴퓨터 확장 집합 그리고 모든 가상 컴퓨터 인스턴스에 연결되어 있어야 합니다.

프로덕션 환경으로 이동하면 롤링 정책 업그레이드로 전환하는 것이 좋습니다.

Azure 가상 컴퓨터 확장 집합을 만드는 데 사용된 방법에 관계없이 Azure Portal에서 리소스 그룹을 보면 아래 이미지와 같을 것입니다. 유일하게 노출되는 추가 리소스는 확장 집합 자체입니다.

OAzure 가상 컴퓨터 크기 조정 집합 만들기 결과

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 소규모 구성 중규모 구성 대규모 구성 설명
VMSSNAME PREFIX + VMSS 확장 집합의 이름입니다.
VMSSSKUSIZE Standard_B1s Standard_B1s Standard_F16s_v2 Standard_F32s_v2 설정할 SKU입니다(표준, 프리미엄 또는 울트라).
VMSSVMTOCREATE 2 2 20 50 확장 집합을 만들 때 배포할 가상 컴퓨터 인스턴스의 수입니다.
VMSSSTORAGESKU Standard_LRS Standard_LRS Premium_LRS Premium_LRS 설정할 스토리지 SKU입니다(표준, 프리미엄 또는 울트라).
VMSSACELERATEDNETWORKING false false true true 가속화된 네트워킹의 이점에 대해 자세히 알아보세요.
VMSSUPGRADEPOLICY Manual Manual 롤링 롤링 수동, 자동 또는 롤링. 위에서 설명했습니다.
HEALTHPROBEID 상태 프로브 ID 사용 상태 프로브 ID 사용 롤링 업그레이드 모드의 경우 필수입니다.

Azure Storage 및 컨테이너 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 9-create-vmss.sh 또는 Windows Batch 9-create-vmss.bat Azure CLI 스크립트 또는 9-create-vmss.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

명명 규칙을 준수하는 한 Azure 가상 컴퓨터 확장 집합 이름만 창의적으로 지정할 수 있습니다. myGameBackendVMSS는 예일 뿐입니다. 나머지 변수는 예상되는 특정 값 집합으로 채워야 합니다.

export VMSSNAME=${PREFIX}VMSS
export GOLDENIMAGENAME=myGoldenImage
export VMSSSKUSIZE=Standard_B1s
export VMSSVMTOCREATE=2
export VMSSSTORAGESKU=Premium_LRS
export VMSSACELERATEDNETWORKING=false
export VMSSUPGRADEPOLICY=Manual
export HEALTHPROBEID=/subscriptions/${YOURSUBSCRIPTIONID}/resourceGroups/${RESOURCEGROUPNAME}/providers/Microsoft.Network/loadBalancers/${LBNAME}/probes/http
export VMSSOVERPROVISIONING=--disable-overprovision

확장 집합 만들기

az-vmss-create Azure CLI 및 New-AzVmss PowerShell 명령에 대해 자세히 알아보세요.

az vmss create \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMSSNAME \
 --image $GOLDENIMAGENAME \
 --upgrade-policy-mode $VMSSUPGRADEPOLICY \
 --load-balancer $LBNAME \
 --lb-sku $LBSKU \
 --vnet-name $VNETNAME \
 --subnet $SUBNETNAME \
 --admin-username $LOGINUSERNAME \
 --instance-count $VMSSVMTOCREATE \
 --backend-pool-name $LBBEPOOLNAME \
 --storage-sku $VMSSSTORAGESKU \
 --vm-sku $VMSSSKUSIZE \
 --lb-nat-pool-name $LBNATPOOLNAME \
 --accelerated-networking $VMSSACELERATEDNETWORKING \
 --generate-ssh-keys $VMSSOVERPROVISIONING

확장 집합 업그레이드 정책 확인

az vmss show \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMSSNAME \
 --query upgradePolicy

부하 분산 장치 상태 프로브를 확장 집합에 연결

az vmss update Azure CLI 명령에 대해 자세히 알아보세요.

az vmss update \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMSSNAME \
 --query virtualMachineProfile.networkProfile.healthProbe \
 --set virtualMachineProfile.networkProfile.healthProbe.id='${HEALTHPROBEID}'

확장 집합의 모든 인스턴스 업데이트

az vmss update-instances Azure CLI 명령에 대해 자세히 알아보세요.

az vmss update-instances \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMSSNAME \
 --instance-ids *

롤링 업그레이드 모드로 전환

az vmss update \
 --resource-group $RESOURCEGROUPNAME \
 --name $VMSSNAME \
 --query upgradePolicy \
 --set upgradePolicy.mode=Rolling

Azure Resource Manager 템플릿

이 ARM 템플릿은 Azure 가상 컴퓨터 확장 집합을 배포하고 부하 분산 장치 상태 프로브를 확장 집합에 연결하는 예제 템플릿입니다.

Deploy

Azure Portal

Azure Portal을 사용하여 VM 확장 집합을 배포하는 방법을 알아보려면 Azure Portal에서 가상 컴퓨터 확장 집합 만들기를 참조하세요.

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 Azure 가상 컴퓨터 확장 집합을 배포하고 부하 분산 장치 상태 프로브를 확장 집합에 연결하는 예제 템플릿입니다. Azure 가상 컴퓨터 확장 집합 인스턴스를 부하 분산 장치 NAT 풀에 매핑하지는 않습니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

10. autoscaler 만들기

이 도구는 확장 집합에서 가상 컴퓨터 인스턴스의 성능을 모니터링합니다. 이러한 자동 크기 조정 규칙은 이러한 성능 메트릭에 대한 응답으로 가상 컴퓨터 인스턴스 수를 늘리거나 줄입니다.

autoscaler를 만드는 데 사용된 방법에 관계없이 숨겨진 형식 표시 확인란을 선택하지 않는 한 리소스 그룹 내에 직접 노출된 리소스가 표시되지 않습니다. 사용하도록 설정된 autoscaler는 아래 이미지와 같을 것입니다.

Oautoscaler 만들기 결과

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 소규모 구성 중규모 구성 대규모 구성 설명
VMSSAUTOSCALERNAME PREFIX + Autoscaler autoscaler의 이름입니다.
VMSSAUTOSCALERCRITERIA CPU 사용률 CPU 사용률 CPU 사용률 CPU 사용률 autoscaler를 트리거하는 데 사용되는 일반 조건입니다. 자세한 내용을 알아보세요.
VMSSAUTOSCALERMAXCOUNT 10 10 15 40 확장 집합에 포함될 최대 가상 컴퓨터 수입니다. 이 개수에 도달하면 autoscaler가 더 이상 가상 컴퓨터를 만들지 않습니다.
VMSSAUTOSCALERMINCOUNT 2 2 10 20 확장 집합에 포함될 최소 가상 컴퓨터 수입니다. 이 개수에 도달하면 autoscaler가 더 이상 가상 컴퓨터를 종료하지 않습니다. 일반적으로 VMSSVMTOCREATE와 일치합니다.
VMSSAUTOSCALERUPTRIGGER 50 avg 5m 50 avg 5m 50 avg 5m 50 avg 5m 확장 작업을 트리거할 조건입니다. 모범 사례를 자세히 알아보세요.
VMSSAUTOSCALERDOWNTRIGGER 30 avg 5m 30 avg 5m 30 avg 5m 30 avg 5m 축소 작업을 트리거할 조건입니다. 모범 사례를 자세히 알아보세요.
VMSSAUTOSCALEROUTINCREASE 1 1 2 3 확장 요청이 트리거되면 확장 집합에 추가할 새 인스턴스 수입니다.
VMSSAUTOSCALERINDECREASE 1 1 2 3 축소 요청이 트리거되면 확장 집합에서 제거할 새 인스턴스 수입니다.

Azure Storage 및 컨테이너 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 10-create-autoscaler.sh 또는 Windows Batch 10-create-autoscaler.bat Azure CLI 스크립트 또는 10-create-autoscaler.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

명명 규칙을 준수하는 한 autoscaler 이름만 창의적으로 지정할 수 있습니다. myGameBackendAutoscaler는 예일 뿐입니다. 나머지 변수는 예상되는 특정 값 집합으로 채워야 합니다.

export VMSSAUTOSCALERNAME=${PREFIX}Autoscaler
export VMSSAUTOSCALERCRITERIA=Percentage CPU
export VMSSAUTOSCALERMAXCOUNT=10
export VMSSAUTOSCALERMINCOUNT=$VMSSVMTOCREATE
export VMSSAUTOSCALERUPTRIGGER=50 avg 5m
export VMSSAUTOSCALERDOWNTRIGGER=30 avg 5m
export VMSSAUTOSCALEROUTINCREASE=1
export VMSSAUTOSCALERINDECREASE=1

자동 크기 조정 프로필 정의

az monitor autoscale create Azure CLI 명령에 대해 자세히 알아보세요.

az monitor autoscale create \
 --resource-group $RESOURCEGROUPNAME \
 --resource $VMSSNAME \
 --resource-type Microsoft.Compute/virtualMachineScaleSets \
 --name $VMSSAUTOSCALERNAME \
 --min-count $VMSSAUTOSCALERMINCOUNT \
 --max-count $VMSSAUTOSCALERMAXCOUNT \
 --count $VMSSVMTOCREATE

확장을 위해 가상 컴퓨터 autoscaler 사용

az monitor autoscale rule create Azure CLI 및 New-AzAutoscaleRule PowerShell 명령에 대해 자세히 알아보세요.

az monitor autoscale rule create \
 --resource-group $RESOURCEGROUPNAME \
 --autoscale-name $VMSSAUTOSCALERNAME \
 --condition "${VMSSAUTOSCALERCRITERIA} > ${VMSSAUTOSCALERUPTRIGGER}" \
 --scale out $VMSSAUTOSCALEROUTINCREASE

축소를 위해 가상 컴퓨터 autoscaler 사용

az monitor autoscale rule create \
 --resource-group $RESOURCEGROUPNAME \
 --autoscale-name $VMSSAUTOSCALERNAME \
 --condition "${VMSSAUTOSCALERCRITERIA} < ${VMSSAUTOSCALERDOWNTRIGGER}" \
 --scale in $VMSSAUTOSCALERINDECREASE

Azure Resource Manager 템플릿

이 ARM 템플릿은 자동 크기 조정 프로필을 정의하고, 확장을 위해 가상 컴퓨터 확장 집합에 Azure 가상 컴퓨터 autoscaler를 사용하도록 설정하고, 축소를 위해 가상 컴퓨터 확장 집합에 autoscaler를 사용하도록 설정하는 예제 템플릿입니다.

Deploy

Azure Portal

Azure Portal에서 자동 크기 조정 규칙을 만드는 방법을 보여 주는 Azure Portal에서 가상 컴퓨터 확장 집합 자동 크기 조정을 참조하세요.

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 자동 크기 조정 프로필을 정의하고, 확장을 위해 가상 컴퓨터 확장 집합에 Azure 가상 컴퓨터 autoscaler를 사용하도록 설정하고, 축소를 위해 가상 컴퓨터 확장 집합에 autoscaler를 사용하도록 설정하는 예제 템플릿입니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

11. DDoS 공격으로부터 보호 사용

DDoS(분산된 서비스 거부) 공격은 백엔드를 클라우드로 이동하는 게임 스튜디오가 당면하는 최대의 가용성 및 보안 관련 문제입니다. DDoS 보호 표준은 가상 컴퓨터 및 부하 분산 장치와 연결된 공용 IP 주소를 포함하여 가상 네트워크의 리소스를 보호합니다. 자세한 내용을 알아보세요.

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 설명
DDOSPROTECTIONNAME PREFIX + DdosPlan DDoS 표준 보호 계획의 이름입니다.

변수 초기화

export DDOSPROTECTIONNAME=${PREFIX}DdosPlan

DDoS 보호 계획 만들기

az network ddos-protection create Azure CLI 및 New-AzDdosProtectionPlan PowerShell 명령에 대해 자세히 알아보세요.

az network ddos-protection create \
 --resource-group $RESOURCEGROUPNAME \
 --name $DDOSPROTECTIONNAME \
 --vnets $VNETNAME

가상 네트워크에서 DDoS 표준 계획 사용

az network vnet update \
 --resource-group $RESOURCEGROUPNAME \
 --name $VNETNAME \
 --ddos-protection true \
 --ddos-protection-plan $DDOSPROTECTIONNAME

Azure Resource Manager 템플릿

이 ARM 템플릿은 DDoS 보호 계획을 만들고 가상 네트워크에서 DDoS 표준 계획을 사용하도록 설정하는 예제 템플릿입니다.

Deploy

Azure Portal

Azure Portal을 통해 Azure DDoS Protection 표준을 사용하도록 설정하는 방법을 알아보려면 Azure Portal을 사용하여 Azure DDoS Protection 표준 관리를 참조하세요.

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 DDoS 보호 계획을 만들고 가상 네트워크에서 DDoS 표준 계획을 사용하도록 설정하는 예제 템플릿입니다. 사용된 명령에 대해 자세히 알아보려면 다음 자료를 참조하세요.

12. 가상 컴퓨터 확장 집합의 가상 컴퓨터 인스턴스 업데이트

이 문서에서는 다수의 PHP 파일을 원격 가상 컴퓨터 인스턴스에 업로드하는 간단한 방법을 설명합니다. Azure DevOps와 같은 보다 정교한 시스템을 사용해야 하는 경우 다음 두 문서가 훌륭한 출발점이 될 수 있습니다. Azure 가상 컴퓨터 확장 집합에 애플리케이션 배포 또는 Azure DevOps를 사용하여 가상 컴퓨터에 웹 애플리케이션 배포.

Azure CLI 사용하는 명령줄 방법

앞서 정의한 변수 이외에 다음 변수도 사용됩니다.

변수 기본값 설명
BLOBSOURCEURI app\package.tar.gz PHP 파일을 포함하는 압축 파일(TAR GZIP)의 경로입니다.
BLOBFILEDESTINATIONNAME package.tar.gz 대상에 있는 압축 파일의 파일 이름입니다.
SCRIPTUPDATESOURCEURI scripts\update-app.sh 원격으로 PHP 파일의 압축을 푸는 bash 스크립트의 경로입니다.
SCRIPTUPDATEFILEDESTINATIONAME update-app.sh 대상에 있는 업데이트 스크립트 파일의 파일 이름입니다.
DESTINATIONFOLDER /var/www/html PHP 파일의 압축이 풀리는 디렉터리입니다.
SERVICETORESTART apache2.service PHP 파일의 압축을 푼 후 다시 시작할 서비스입니다.

Azure Storage 및 컨테이너 배포의 각 부분을 이해할 수 있도록 다음에 설명하는 개별 명령 및 실행 순서 이외에 전체 Bash 12-update-app.sh 또는 Windows Batch 12-update-app.bat Azure CLI 스크립트 또는 12-update-app.ps1 PowerShell 스크립트를 다운로드하고 필요에 따라 조정하여 시간을 절약할 수 있습니다.

변수 초기화

예상된 원본 및 대상 파일/디렉터리 이름과 일치하기만 하면 이러한 모든 변수를 창의적으로 지정할 수 있습니다.

export BLOBSOURCEURI=./app/package.tar.gz
export BLOBFILEDESTINATIONNAME=package.tar.gz
export SCRIPTUPDATESOURCEURI=./scripts/update-app.sh
export SCRIPTUPDATEFILEDESTINATIONAME=update-app.sh
export DESTINATIONFOLDER=/var/www/html
export SERVICETORESTART=apache2.service

스토리지 계정에서 연결 문자열 가져오기

az storage account show-connection-string Azure CLI 명령에 대해 자세히 알아보세요.

export STORAGECONNECTIONSTRING=`az storage account show-connection-string -n $STORAGENAME -g $RESOURCEGROUPNAME --query connectionString -o tsv`

Blob 스토리지에 애플리케이션 파일 및 애플리케이션 업데이트 스크립트 업로드

az storage blob upload Azure CLI 명령에 대해 자세히 알아보세요.

az storage blob upload \
 -c $STORAGECONTAINERNAME \
 -f $BLOBSOURCEURI \
 -n $BLOBFILEDESTINATIONNAME \
 --connection-string $STORAGECONNECTIONSTRING

az storage blob upload \
 -c $STORAGECONTAINERNAME \
 -f $SCRIPTUPDATESOURCEURI \
 -n $SCRIPTUPDATEFILEDESTINATIONAME \
 --connection-string $STORAGECONNECTIONSTRING

업로드된 파일에서 URL 가져오기

az storage blob url Azure CLI 명령에 대해 자세히 알아보세요.

export BLOBURL=`az storage blob url -c $STORAGECONTAINERNAME -n $BLOBFILEDESTINATIONNAME -o tsv --connection-string $STORAGECONNECTIONSTRING`
export SCRIPTURL=`az storage blob url -c $STORAGECONTAINERNAME -n $SCRIPTUPDATEFILEDESTINATIONAME -o tsv --connection-string $STORAGECONNECTIONSTRING`

보호된 설정 JSON 문자열 빌드

이 기능은 사용자 지정 스크립트 확장이 스토리지 계정에서 파일을 다운로드하는 데 사용됩니다. 이 명령에 대해 자세히 알아보기

export STORAGEKEY=`az storage account keys list --account-name $STORAGENAME --resource-group $RESOURCEGROUPNAME --query [0].value --output tsv`
export PROTECTEDSETTINGS="{\"storageAccountName\":\"${STORAGENAME}\",\"storageAccountKey\":\"${STORAGEKEY}\"}"
export SETTINGS="{\"fileUris\":[\"${BLOBURL}\",\"${SCRIPTURL}\"],\"commandToExecute\":\"bash ${SCRIPTUPDATEFILEDESTINATIONAME} ${BLOBFILEDESTINATIONNAME} ${DESTINATIONFOLDER} ${SERVICETORESTART}\"}"

확장 집합에서 구성 파일 업데이트

az vmss extension set Azure CLI 명령에 대해 자세히 알아보세요.

az vmss extension set \
 --resource-group $RESOURCEGROUPNAME \
 --vmss-name $VMSSNAME \
 --publisher Microsoft.Azure.Extensions \
 --name CustomScript \
 --version 2.0 \
 --settings $SETTINGS \
 --force-update \
 --protected-settings $PROTECTEDSETTINGS

확장 집합의 모든 인스턴스 업데이트

이렇게 하면 다음 업데이트 라운드에서 각 인스턴스가 스토리지 계정에 업로드된 파일을 다운로드하여 설치할 수 있습니다. 이 명령에 대해 자세히 알아보세요.

az vmss update-instances \
 --instance-ids * \
 --name $VMSSNAME \
 --resource-group $RESOURCEGROUPNAME

Azure Resource Manager 템플릿

이 ARM 템플릿은 다수의 PHP 파일을 원격 가상 컴퓨터 인스턴스에 업로드하고 원격으로 PHP 파일의 압축을 푸는 bash 스크립트를 실행하는 예제 템플릿입니다.

참고

전체 bash 12-update-app.sh 또는 Windows batch 12-update-app.bat Azure CLI 스크립트 또는 12-update-app.ps1 PowerShell 스크립트와 달리, 이 템플릿은 Blob 스토리지에 대한 파일 업로드를 포함하지 않습니다. 변수 초기화, 스토리지 계정에서 연결 문자열 가져오기, Blob 스토리지에 애플리케이션 파일 및 애플리케이션 업데이트 스크립트 업로드업로드된 파일에서 URL 가져오기를 실행하거나 수동으로 Blob 스토리지에 파일을 업로드할 수 있습니다.

파일 경로는 <Blob Url>/app/package.tar.gz<Script Url>/scripts/update-app.sh이어야 합니다.

Deploy

Hashicorp Terraform

Hashicorp Terraform의 Azure 공급자 템플릿은 다수의 PHP 파일을 원격 가상 컴퓨터 인스턴스에 업로드하고 원격으로 PHP 파일의 압축을 푸는 bash 스크립트를 실행하는 예제 템플릿입니다.

애플리케이션 레이어

  • 빠른 시작에서는 PHP 애플리케이션을 사용하여 Azure Database for MySQL에 연결하는 방법을 보여줍니다. 또한 SQL 문을 사용하여 데이터베이스의 데이터를 쿼리, 삽입, 업데이트 및 삭제하는 방법을 보여줍니다. 이 항목에서는 사용자가 PHP를 사용한 개발은 잘 알고 있지만 Azure Database for MySQL 사용은 처음이라고 가정합니다.
  • Retwis 샘플은 Redis Hello World입니다. 이것은 Predis 클라이언트를 사용하여 Redis 및 PHP로 작성된 최소 Twitter 스타일 소셜 네트워크 클론입니다. 소스 코드는 매우 간단한 동시에 다양한 Redis 데이터 구조를 표시하도록 설계되었습니다.
  • GitHub에서 Azure Storage용 PHP 클라이언트 라이브러리 소스 코드를 보고, 다운로드하고, 설치합니다.
  • PHP 클라이언트 라이브러리를 사용하여 작성된 Blob 스토리지 샘플을 탐색합니다.

요약

Azure에서 단일 지역 LAMP 아키텍처를 배포하면 스크립트(Bash 또는 Windows Batch) 또는 ARM 배포 템플릿을 사용하여 처음부터 끝까지 90분 이내가 소요됩니다. Azure Portal을 사용하면 시간이 더 오래 걸립니다. 배포된 아키텍처는 아래 이미지와 같을 것입니다.

S배포된 단일 지역 LAMP 아키텍처

다음 표에는 이 문서에서 설명한 단계에 사용할 수 있는 스크립트 및 템플릿이 요약되어 있습니다.

작업 Azure CLI Azure PowerShell ARM 템플릿 Hashicorp Terraform 포털
관리되는 디스크에 가상 컴퓨터 배포 1-create-vm.sh
1-create-vm.bat
1-create-vm.ps1 배포 1-create-vm.tf VM 만들기, 관리되는 데이터 디스크 연결
Apache, PHP 버전 및 기타 원하는 항목 설치 2-install-apache-and-php.sh 해당 없음 배포 2-install-apache-and-php.tf 해당 없음
가상 컴퓨터 할당 취소 및 일반화 3-prepare-vm.sh
3-prepare-vm.bat
3-prepare-vm.ps1 해당 없음 해당 없음 해당 없음
사용자 지정 골든 이미지 생성 4-create-golden-image.sh
4-create-golden-image.bat
4-create-golden-image.ps1 해당 없음 4-create-golden-image.tf 해당 없음
네트워킹 리소스 배포 5-create-networking.sh
5-create-networking.bat
5-create-networking.ps1 기본 LB 배포
표준 LB 배포
5-create-networking.tf
5-create-networking-standard.tf
기본, 표준
Azure Cache for Redis 배포 6-create-redis.sh
6-create-redis.bat
6-create-redis.ps1 배포 6-create-redis.tf 캐시 만들기, 캐시 구성, 클러스터링 설정, VNET 지원
Azure Database for MySQL 배포 7-create-mysql.sh
7-create-mysql.bat
7-create-mysql.ps1 배포 7-create-mysql.tf 서버 만들기, 읽기 복제본 만들기, 서버 엔드포인트 만들기
Azure Storage 계정 및 컨테이너 만들기 8-create-storage.sh
8-create-storage.bat
8-create-storage.ps1 배포 8-create-storage.tf 스토리지 계정 만들기, 컨테이너 만들기
가상 컴퓨터 확장 집합 만들기 9-create-vmss.sh
9-create-vmss.bat
9-create-vmss.ps1 배포 9-create-vmss.tf 확장 집합 만들기
자동 크기 조정 설정 구성 10-create-autoscaler.sh
10-create-autoscaler.bat
10-create-autoscaler.ps1 배포 10-create-autoscaler.tf 확장 집합 자동 크기 조정
DDoS 공격으로부터 보호 사용 11-enable-ddos-protection.sh
11-enable-ddos-protection.bat
11-enable-ddos-protection.ps1 배포 11-enable-ddos-protection.tf DDoS 계획 만들기
가상 컴퓨터 인스턴스 업데이트 12-update-app.sh
12-update-app.bat
12-update-app.ps1 배포 12-update-app.tf 해당 없음