Compute Engine에 Microsoft Exchange Server 2016 배포하기


이 가이드에서는 고가용성 및 사이트 복원력을 위해 Microsoft Exchange Server 2016을 Compute Engine에 배포하고 구성하는 방법을 설명합니다.

Exchange 배포는 단일 리전 내 두 영역을 포괄합니다. 각 영역에 편지함 서버와 에지 전송 서버를 배포합니다. 편지함 서버는 데이터베이스 가용성 그룹의 일부이므로 편지함 데이터가 영역간에 복제됩니다.

다음 다이어그램은 배포를 보여줍니다.

Microsoft Exchange 배포

이 문서에서는 Google Cloud에 Active Directory를 이미 배포했으며 Exchange Server 2016, Active Directory, Compute Engine에 대한 기본 지식이 있다고 가정합니다.

목표

  • 프로젝트와 VPC 네트워크를 설정하고 Exchange Server 2016 배포를 준비합니다.
  • 두 영역에 Exchange 편지함 서버를 배포하고 데이터베이스 가용성 그룹을 만듭니다.
  • 두 영역에 Exchange 에지 전송 서버를 배포합니다.
  • 부하 분산 및 방화벽 규칙을 구성합니다.

비용

이 튜토리얼에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

가격 계산기를 사용하면 예상 사용량을 토대로 예상 비용을 산출할 수 있습니다.

시작하기 전에

이 가이드를 완료하려면 다음이 필요합니다.

  • 도메인 컨트롤러가 하나 이상 있는 기존 Active Directory 도메인 Active Directory 도메인은 공개적으로 라우팅 가능한 유효한 DNS 도메인 이름을 사용해야 합니다. corp.local과 같은 로컬 도메인 이름이나 example.com과 같은 예약된 도메인 이름은 사용할 수 없습니다.

    Compute Engine에 Active Directory 환경을 배포하는 방법에 대한 자세한 내용은 내결함성 Microsoft Active Directory 환경 배포를 참조하세요.

  • DNS 쿼리를 도메인 컨트롤러로 전달하는 Active Directory의 DNS 도메인 이름에 대한 비공개 DNS 전달 영역

  • Active Directory 도메인에 대한 관리 액세스 권한

  • Active Directory 도메인 컨트롤러에 연결할 수 있는 Google Cloud 프로젝트 및 VPC

  • Exchange VM 인스턴스에 사용할 서브넷. 서브넷은 두 개 이상의 영역을 포괄해야 합니다.

배포를 시작하기 전에 Exchange Server의 고가용성 및 사이트 복원력 요구사항을 검토하세요.

  1. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  2. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

프로젝트 및 네트워크 준비

Exchange Server 배포를 위해 Google Cloud 프로젝트와 VPC를 준비하려면 다음 안내를 따르세요.

  1. Google Cloud Console에서 프로젝트로 전환하고 Cloud Shell을 엽니다.

    Cloud Shell 열기

  2. 다음 변수를 초기화합니다.

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    SUBNET_REGION=SUBNET_REGION
    SUBNET_ZONE_1=$SUBNET_REGION-a
    SUBNET_ZONE_2=$SUBNET_REGION-b
    

    각 항목의 의미는 다음과 같습니다.

    • VPC_NAME은 VPC의 이름입니다.
    • SUBNET_NAME은 서브넷의 이름입니다.
    • SUBNET_REGION은 서브넷의 리전입니다.
  3. 기본 프로젝트 ID를 설정합니다.

    gcloud config set project PROJECT_ID
    

    PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.

설치 디스크 만들기

이제 설치 Exchange Server 설치 미디어가 포함된 디스크를 만듭니다. 여러 VM 인스턴스에 연결할 수 있는 디스크를 만들면 각 VM 인스턴스에 개별적으로 설치 미디어를 다운로드할 필요가 없습니다.

  1. ISO 파일에서 이미지 만들기의 안내를 따릅니다. 다음 URL을 다운로드 URL로 사용합니다.

    https://download.microsoft.com/download/6/6/F/66F70200-E2E8-4E73-88F9-A1F6E3E04650/ExchangeServer2016-x64-cu11.iso
    
  2. 새 이미지를 사용하여 첫 번째 영역에 디스크를 만듭니다.

    gcloud compute disks create exchange-media-1 \
      --zone=$SUBNET_ZONE_1 \
      --image-project=$GOOGLE_CLOUD_PROJECT \
      --image=IMAGE
    

    IMAGE를 이전 단계에서 만든 이미지의 이름으로 바꿉니다.

  3. 두 번째 영역에 디스크를 만듭니다.

    gcloud compute disks create exchange-media-2 \
      --zone=$SUBNET_ZONE_2 \
      --image-project=$GOOGLE_CLOUD_PROJECT \
      --image=IMAGE
    

    IMAGE를 첫 번째 단계에서 만든 이미지의 이름으로 바꿉니다.

방화벽 규칙 만들기

클라이언트가 Exchange에 연결하고 Exchange 서버 간의 통신을 사용 설정하도록 허용하려면 몇 가지 방화벽 규칙을 만들어야 합니다. 이러한 방화벽 규칙을 간단하게 만들려면 네트워크 태그를 사용합니다.

  • 에지 전송 서버는 exchange-transport 태그로 주석을 답니다.
  • 편지함 서버는 exchange-mailbox 태그로 주석을 답니다.
  • 감시 서버는 exchange-witness 태그로 주석을 답니다.
  • 모든 서버는 exchange 태그로 주석을 답니다.

다음 네트워크 태그를 사용하는 방화벽 규칙을 만듭니다.

  1. 기존 Cloud Shell 세션으로 돌아갑니다.
  2. 편지함 서버의 방화벽 규칙을 만듭니다.

    gcloud compute firewall-rules create allow-all-between-exchange-servers \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp,udp,icmp \
      --enable-logging \
      --source-tags=exchange \
      --target-tags=exchange \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-smtp-from-transport-to-mailbox \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:25 \
      --enable-logging \
      --source-tags=exchange-transport \
      --target-tags=exchange-mailbox \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-edgesync-from-mailbox-to-transport \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:50636 \
      --enable-logging \
      --source-tags=exchange-mailbox \
      --target-tags=exchange-transport \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-mail-to-mailbox \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:25,tcp:110,tcp:135,tcp:143,tcp:443,tcp:993,tcp:995 \
      --enable-logging \
      --target-tags=exchange-mailbox \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-smb-within-dag \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:135,tcp:445,udp:445,tcp:49152-65535 \
      --enable-logging \
      --source-tags=exchange-mailbox,exchange-witness \
      --target-tags=exchange-mailbox,exchange-witness \
      --network=$VPC_NAME \
      --priority 10000
    
  3. 에지 전송 서버의 방화벽 규칙을 만듭니다.

    gcloud compute firewall-rules create allow-smtp-to-transport \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:25 \
      --enable-logging \
      --target-tags=exchange-transport \
      --network=$VPC_NAME \
      --priority 10000
    

이제 프로젝트와 VPC를 Exchange Server 배포에 사용할 수 있습니다.

편지함 역할 배포

이제 Exchange를 관리하는 데 사용하는 편지함 서버와 관리 서버를 배포합니다.

VM 인스턴스는 n1-standard-8 머신 유형을 사용합니다. 니즈와 시스템 요구사항에 대한 자세한 분석은 Exchange Server 역할 요구사항 계산기를 참조하세요.

관리 서버 배포

관리 서버 역할을 하는 VM 인스턴스를 만들려면 다음 단계를 따르세요.

  1. 기존 Cloud Shell 세션으로 돌아갑니다.
  2. VM 인스턴스의 특수 스크립트를 만듭니다. 스크립트는 VM 초기화 중에 실행되며 Exchange 2016 관리 도구의 클라이언트 기본 요건을 설치합니다.

    cat << "EOF" > specialize-admin.ps1
    
    $ErrorActionPreference = "stop"
    
    # Install required Windows features
    Install-WindowsFeature RSAT-ADDS,RSAT-DNS-Server
    Enable-WindowsOptionalFeature -Online -FeatureName IIS-ManagementScriptingTools, `
        IIS-ManagementScriptingTools, `
        IIS-IIS6ManagementCompatibility, `
        IIS-LegacySnapIn, `
        IIS-ManagementConsole, `
        IIS-Metabase, `
        IIS-WebServerManagementTools, `
        IIS-WebServerRole
    
    # Install Visual C++ Redistributable Package for Visual Studio 2012
    (New-Object System.Net.WebClient).DownloadFile(
        'http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU3/vcredist_x64.exe',
        "$env:Temp\vcredist_2012_x64.exe")
    & $env:Temp\vcredist_2012_x64.exe /passive /norestart | Out-Default
    
    EOF
    
  3. specialize-admin.ps1을 특수 스크립트로 사용하는 VM 인스턴스를 만들고 Exchange 설치 디스크를 보조 디스크로 연결합니다. 나중에 보조 디스크를 사용하여 Exchange 관리 도구를 설치합니다.

    gcloud compute instances create exchange-admin \
      --image-family=windows-2019 \
      --image-project=windows-cloud \
      --machine-type=n1-standard-2 \
      --subnet=$SUBNET_NAME \
      --zone=$SUBNET_ZONE_1 \
      --tags=exchange \
      --disk=name=exchange-media-1,auto-delete=no,mode=ro \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-admin.ps1
    
  4. 직렬 포트 출력을 확인하여 VM의 초기화 프로세스를 모니터링합니다.

    gcloud compute instances tail-serial-port-output exchange-admin --zone=$SUBNET_ZONE_1
    

    출력으로 Instance setup finished가 표시될 때까지 5분 정도 기다린 다음 Ctrl+C를 누릅니다. 이제 VM 인스턴스를 사용할 수 있습니다.

  5. VM 인스턴스의 사용자 이름 및 비밀번호 만들기

  6. 원격 데스크톱을 사용하여 VM에 연결하고 이전 단계에서 만든 사용자 이름과 비밀번호를 사용하여 로그인합니다.

  7. 시작 버튼을 마우스 오른쪽 버튼으로 클릭하거나 Win+X를 누르고 명령 프롬프트(관리자)를 클릭합니다.

  8. 를 클릭하여 권한 승격 프롬프트를 확인합니다.

  9. 권한 승격 명령 프롬프트에서 PowerShell 세션을 시작합니다.

    powershell
    
  10. 컴퓨터를 Active Directory 도메인에 연결합니다.

    Add-Computer -Domain DOMAIN
    

    DOMAIN을 Active Directory 도메인의 DNS 이름으로 바꿉니다.

  11. 컴퓨터를 다시 시작합니다.

    Restart-Computer
    

    다시 시작이 완료될 때까지 1분 정도 기다립니다.

  12. 원격 데스크톱을 사용하여 VM에 연결하고 엔터프라이즈 관리자 그룹의 구성원인 도메인 사용자를 사용하여 로그인합니다.

  13. 안내에 따라 Exchange Server용 Active Directory 스키마 및 도메인을 준비합니다. 드라이브 D:에서 Exchange 설치 미디어를 찾을 수 있습니다.

  14. 안내에 따라 Exchange 관리 도구를 설치합니다.

편지함 서버 배포

이제 편지함 서버 역할을 하는 VM 인스턴스를 배포할 준비가 되었습니다.

  1. 기존 Cloud Shell 세션으로 돌아갑니다.
  2. VM 인스턴스의 특수 스크립트를 만듭니다. 스크립트는 VM 초기화 중에 실행되며 편지함 서버 설치를 위한 기본 요건을 설치합니다.

    cat << "EOF" > specialize-mailbox.ps1
    
    $ErrorActionPreference = "stop"
    
    # Install required Windows features
    Install-WindowsFeature RSAT-ADDS
    Install-WindowsFeature `
        NET-Framework-45-Features, `
        Server-Media-Foundation, `
        RPC-over-HTTP-proxy, `
        RSAT-Clustering, `
        RSAT-Clustering-CmdInterface, `
        RSAT-Clustering-Mgmt, `
        RSAT-Clustering-PowerShell, `
        WAS-Process-Model, `
        Web-Asp-Net45, `
        Web-Basic-Auth, `
        Web-Client-Auth, `
        Web-Digest-Auth, `
        Web-Dir-Browsing, `
        Web-Dyn-Compression, `
        Web-Http-Errors, `
        Web-Http-Logging, `
        Web-Http-Redirect, `
        Web-Http-Tracing, `
        Web-ISAPI-Ext, `
        Web-ISAPI-Filter, `
        Web-Lgcy-Mgmt-Console, `
        Web-Metabase, `
        Web-Mgmt-Console, `
        Web-Mgmt-Service, `
        Web-Net-Ext45, `
        Web-Request-Monitor, `
        Web-Server, `
        Web-Stat-Compression, `
        Web-Static-Content, `
        Web-Windows-Auth, `
        Web-WMI, `
        Windows-Identity-Foundation, `
        RSAT-ADDS
    
    # Install Visual C++ Redistributable Package for Visual Studio 2012
    (New-Object System.Net.WebClient).DownloadFile(
        'http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU3/vcredist_x64.exe',
        "$env:Temp\vcredist_2012_x64.exe")
    & $env:Temp\vcredist_2012_x64.exe /passive /norestart | Out-Default
    
    # Visual C++ Redistributable Package for Visual Studio 2013
    (New-Object System.Net.WebClient).DownloadFile(
        'http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe',
        "$env:Temp\vcredist_2013_x64.exe")
    & $env:Temp\vcredist_2013_x64.exe /passive /norestart | Out-Default
    
    # Install Microsoft Unified Communications Managed API
    (New-Object System.Net.WebClient).DownloadFile(
        'https://download.microsoft.com/download/2/C/4/2C47A5C1-A1F3-4843-B9FE-84C0032C61EC/UcmaRuntimeSetup.exe',
        "$env:Temp\UcmaRuntimeSetup.exe")
    & $env:Temp\UcmaRuntimeSetup.exe /passive /norestart | Out-Default
    
    EOF
    
  3. 첫 번째 영역에 VM 인스턴스를 만들고 specialize-mailbox.ps1을 전문 스크립트로 전달합니다. Exchange 설치 디스크를 보조 디스크로 연결합니다. 나중에 보조 디스크를 사용하여 Exchange Server 편지함 역할을 설치합니다.

    gcloud compute instances create mailbox-1-a \
      --image-family=windows-2016 \
      --image-project=windows-cloud \
      --machine-type=n1-standard-8 \
      --subnet=$SUBNET_NAME \
      --tags exchange,exchange-mailbox \
      --zone=$SUBNET_ZONE_1 \
      --boot-disk-type pd-ssd \
      --disk=name=exchange-media-1,auto-delete=no,mode=ro \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-mailbox.ps1
    
  4. 두 번째 영역에 다른 VM 인스턴스를 만듭니다.

    gcloud compute instances create mailbox-1-b \
      --image-family=windows-2016 \
      --image-project=windows-cloud \
      --machine-type=n1-standard-8 \
      --subnet=$SUBNET_NAME \
      --tags exchange,exchange-mailbox \
      --zone=$SUBNET_ZONE_2 \
      --boot-disk-type pd-ssd \
      --disk=name=exchange-media-2,auto-delete=no,mode=ro \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-mailbox.ps1
    
  5. 직렬 포트 출력을 확인하여 VM의 초기화 프로세스를 모니터링합니다.

    gcloud compute instances tail-serial-port-output mailbox-1-b --zone=$SUBNET_ZONE_2
    

    출력으로 Instance setup finished가 표시될 때까지 5분 정도 기다린 다음 Ctrl+C를 누릅니다. 이제 VM 인스턴스를 사용할 수 있습니다.

  6. 두 VM 인스턴스 각각에 대해 다음 단계를 수행합니다.

    1. VM 인스턴스의 사용자 이름 및 비밀번호 만들기
    2. 원격 데스크톱을 사용하여 VM에 연결하고 이전 단계에서 만든 사용자 이름과 비밀번호를 사용하여 로그인합니다.
    3. 시작 버튼을 마우스 오른쪽 버튼으로 클릭하거나 Win+X를 누르고 명령 프롬프트(관리자)를 클릭합니다.
    4. 를 클릭하여 권한 승격 프롬프트를 확인합니다.
    5. 권한 승격 명령 프롬프트에서 PowerShell 세션을 시작합니다.

      powershell
      
    6. 컴퓨터를 Active Directory 도메인에 연결합니다.

      Add-Computer -Domain DOMAIN
      

      DOMAIN을 Active Directory 도메인의 DNS 이름으로 바꿉니다.

    7. 컴퓨터를 다시 시작합니다.

      Restart-Computer
      

      다시 시작이 완료될 때까지 1분 정도 기다립니다.

    8. 원격 데스크톱을 사용하여 VM에 연결하고 엔터프라이즈 관리자 그룹의 구성원인 도메인 사용자를 사용하여 로그인합니다.

    9. 설정 마법사 또는 무인 모드를 사용하여 Exchange Server 편지함 역할을 설치합니다. 드라이브 D:에서 Exchange 설치 미디어를 찾을 수 있습니다.

감시 서버 배포

두 편지함 서버에 데이터베이스 가용성 그룹(DAG)을 설정하려면 감시 서버로 사용할 추가 VM 인스턴스가 필요합니다. 감시 서버를 배포하려면 다음 단계를 따르세요.

  1. 기존 Cloud Shell 세션으로 돌아갑니다.
  2. 첫 번째 영역에 감시 서버를 만듭니다.

    gcloud compute instances create witness \
      --image-family=windows-2016 \
      --image-project=windows-cloud \
      --machine-type n1-standard-8 \
      --subnet $SUBNET_NAME \
      --tags exchange,exchange-witness \
      --zone $SUBNET_ZONE_1 \
      --boot-disk-type pd-ssd \
      "--metadata=sysprep-specialize-script-ps1=add-windowsfeature FS-FileServer"
    
  3. 직렬 포트 출력을 확인하여 VM의 초기화 프로세스를 모니터링합니다.

    gcloud compute instances tail-serial-port-output witness --zone=$SUBNET_ZONE_1
    

    출력으로 Instance setup finished가 표시될 때까지 3분 정도 기다린 다음 Ctrl+C를 누릅니다. 이제 VM 인스턴스를 사용할 수 있습니다.

  4. VM 인스턴스의 사용자 이름 및 비밀번호 만들기

  5. 원격 데스크톱을 사용하여 VM에 연결하고 이전 단계에서 만든 사용자 이름과 비밀번호를 사용하여 로그인합니다.

  6. 시작 버튼을 마우스 오른쪽 버튼으로 클릭하거나 Win+X를 누르고 명령 프롬프트(관리자)를 클릭합니다.

  7. 를 클릭하여 권한 승격 프롬프트를 확인합니다.

  8. 권한 승격 명령 프롬프트에서 PowerShell 세션을 시작합니다.

    powershell
    
  9. 컴퓨터를 Active Directory 도메인에 연결합니다.

    Add-Computer -Domain DOMAIN
    

    DOMAIN을 Active Directory 도메인의 DNS 이름으로 바꿉니다.

  10. 컴퓨터를 다시 시작합니다.

    Restart-Computer
    

    다시 시작이 완료될 때까지 1분 정도 기다립니다.

  11. 원격 데스크톱을 사용하여 VM에 연결하고 엔터프라이즈 관리자 그룹의 구성원인 도메인 사용자를 사용하여 로그인합니다.

  12. 시작 버튼을 마우스 오른쪽 버튼으로 클릭하거나 Win+X를 누르고 명령 프롬프트(관리자)를 클릭합니다.

  13. 를 클릭하여 권한 승격 프롬프트를 확인합니다.

  14. 권한 승격 명령 프롬프트에서 PowerShell 세션을 시작합니다.

    powershell
    
  15. 로컬 관리자 그룹에 Exchange가 신뢰할 수 있는 하위 시스템 범용 보안 그룹을 추가합니다.

    Add-LocalGroupMember -Group Administrators -Member "DOMAIN\Exchange Trusted Subsystem"
    

    DOMAIN을 Active Directory 도메인의 NetBIOS 이름으로 바꿉니다.

이제 두 개의 편지함 서버와 감시 서버가 완전히 배포되었지만 여전히 데이터베이스 가용성 그룹에 추가해야 합니다.

데이터베이스 가용성 그룹 만들기

DAG를 만들려면 다음 단계를 따르세요.

  1. 원격 데스크톱을 사용하여 관리 VM에 연결하고 엔터프라이즈 관리자 그룹의 구성원인 도메인 사용자를 사용하여 로그인합니다.
  2. 시작 버튼을 마우스 오른쪽 버튼으로 클릭하거나 Win+X를 누르고 명령 프롬프트(관리자)를 클릭합니다.
  3. 를 클릭하여 권한 승격 프롬프트를 확인합니다.
  4. 권한 승격 명령 프롬프트에서 PowerShell 세션을 시작합니다.

    powershell
    
  5. Chrome 브라우저를 다운로드하고 설치합니다.

    Start-BitsTransfer `
        -Source 'https://dl.google.com/chrome/install/latest/chrome_installer.exe' `
        -Destination "$env:Temp\chrome_installer.exe"
    & $env:Temp\chrome_installer.exe
    
  6. Exchange 관리 센터(EAC)를 열려면 Chrome을 실행하고 다음 URL로 이동합니다.

    https://mailbox-1-a/ecp/?ExchClientVer=15
    
  7. 엔터프라이즈 관리자 그룹의 구성원인 도메인 사용자를 사용하여 로그인합니다.

  8. EAC 메뉴에서 서버 > 데이터베이스 가용성 그룹을 선택합니다.

  9. +를 클릭합니다.

  10. 대화상자에서 다음 설정을 입력하여 데이터베이스 가용성 그룹을 만듭니다.

    1. 데이터베이스 가용성 그룹 이름: mailbox
    2. 감시 서버: witness
  11. 저장을 클릭합니다.

  12. 관리 DAG 멤버십 아이콘을 클릭합니다.

  13. 대화상자에서 +를 클릭하여 구성원 서버를 추가합니다.

  14. mailbox-1-amailbox-1-b를 선택하고 추가를 클릭합니다.

  15. 확인을 클릭합니다.

  16. 저장을 클릭합니다.

원하는 경우 Exchange Server 설치 후 작업을 수행합니다.

부하 분산 설정

클라이언트가 편지함 서버에 연결하도록 허용하기 위해 이제 내부 부하 분산기 리소스를 만듭니다.

  1. 기존 Cloud Shell 세션으로 돌아갑니다.
  2. 영역당 하나의 비관리형 인스턴스 그룹을 만듭니다.

    gcloud compute instance-groups unmanaged create mailbox-a --zone=$SUBNET_ZONE_1
    gcloud compute instance-groups unmanaged create mailbox-b --zone=$SUBNET_ZONE_2
    
  3. 편지함 서버를 실행하는 VM 인스턴스를 인스턴스 그룹에 추가합니다.

    gcloud compute instance-groups unmanaged add-instances mailbox-a \
      --zone=$SUBNET_ZONE_1 \
      --instances=mailbox-1-a
    gcloud compute instance-groups unmanaged add-instances mailbox-b \
      --zone=$SUBNET_ZONE_2 \
      --instances=mailbox-1-b
    
  4. HTTP 경로 /owa/healthcheck.htm을 프로브하는 상태 확인을 만듭니다.

    gcloud compute health-checks create http http-80\
      --port=80 \
      --request-path=/owa/healthcheck.htm
    
  5. 부하 분산기 백엔드를 만들고 두 인스턴스 그룹을 추가합니다.

    gcloud compute backend-services create mailbox-backend \
      --load-balancing-scheme=internal \
      --protocol=tcp \
      --region=$SUBNET_REGION \
      --health-checks=http-80 \
      --session-affinity=CLIENT_IP_PORT_PROTO
    
    gcloud compute backend-services add-backend mailbox-backend \
      --region=$SUBNET_REGION \
      --instance-group=mailbox-a \
      --instance-group-zone=$SUBNET_ZONE_1
    
    gcloud compute backend-services add-backend mailbox-backend \
      --region=$SUBNET_REGION \
      --instance-group=mailbox-b \
      --instance-group-zone=$SUBNET_ZONE_2
    
  6. 부하 분산기의 고정 IP 주소를 예약합니다.

    gcloud compute addresses create mailbox-frontend \
      --region=$SUBNET_REGION \
      --subnet=$SUBNET_NAME
    
  7. 부하 분산기에 대한 전달 규칙을 만듭니다.

    gcloud compute forwarding-rules create mailbox-frontend \
      --region=$SUBNET_REGION \
      --address=mailbox-frontend  \
      --load-balancing-scheme=internal \
      --network=$VPC_NAME \
      --subnet=$SUBNET_NAME \
      --ip-protocol=TCP \
      --ports=ALL \
      --backend-service=mailbox-backend  \
      --backend-service-region=$SUBNET_REGION
    
  8. 부하 분산기의 IP 주소를 찾습니다.

    gcloud compute addresses describe mailbox-frontend  \
      --region=$SUBNET_REGION \
      --format=value\(address\)
    

편지함 서버 테스트

편지함 서버가 성공적으로 배포되었는지 확인하려면 다음 단계를 따르세요.

  1. 관리 VM에서 Chrome을 열고 https://<var>IP</var>/owa/로 이동합니다. 여기서 IP는 이전에 찾은 부하 분산기의 IP 주소입니다.
  2. 도메인 사용자를 사용하여 로그인합니다.

    이제 Outlook 웹 액세스의 사용자 인터페이스가 표시됩니다.

에지 전송 역할 배포

이제 에지 전송 서버를 배포합니다. 에지 전송 서버는 모든 수신 및 발신 메일 흐름을 처리합니다.

편지함 서버와 달리 에지 전송 서버는 인터넷에 노출됩니다. 따라서 온프레미스 배포 시 방화벽으로 내부 네트워크와 격리된 경계 네트워크에 에지 전송 서버를 배포할 수 있습니다.

Google Cloud에서는 에지 전송 서버를 별도의 VPC 또는 서브넷에 배포할 필요가 없습니다. 대신 방화벽 규칙을 사용하여 네트워크를 마이크로 세그먼트화하고 에지 전송 서버와의 네트워크 통신을 제한합니다.

편지함 서버와 달리 에지 전송 서버는 Active Directory 도메인의 구성원이 아닙니다.

VM 인스턴스는 n1-standard-8 머신 유형을 사용합니다. Exchange 배포를 어떻게 사용할지에 따라 더 큰 머신 유형을 사용해야 할 수도 있습니다. 니즈 및 시스템 요구사항에 대한 자세한 분석은 Exchange Server 역할 요구사항 계산기를 참조하세요.

에지 전송 서버 배포

에지 전송 서버를 배포하려면 다음 단계를 따르세요.

  1. 기존 Cloud Shell 세션으로 돌아갑니다.
  2. VM 인스턴스의 특수 스크립트를 만듭니다. 스크립트는 VM 초기화 중에 실행되며 에지 전송 서버 설치를 위한 기본 요건을 설치합니다.

    cat << "EOF" > specialize-transport.ps1
    
    # Install required Windows features
    Install-WindowsFeature ADLDS
    
    # Install Visual C++ Redistributable Package for Visual Studio 2012
    (New-Object System.Net.WebClient).DownloadFile(
        'http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU3/vcredist_x64.exe',
        "$env:Temp\vcredist_2012_x64.exe")
    & $env:Temp\vcredist_2012_x64.exe /passive /norestart | Out-Default
    
    EOF
    
  3. 첫 번째 영역에 VM 인스턴스를 만들고 specialize-transport.ps1을 특수 스크립트로 전달합니다. 나중에 Exchange Server 전송 서버 역할을 설치할 수 있도록 Exchange 설치 디스크를 읽기 전용 모드로 연결합니다.

    gcloud compute instances create transport-1-a \
      --image-family=windows-2016 \
      --image-project=windows-cloud \
      --machine-type=n1-standard-8 \
      --subnet=$SUBNET_NAME \
      --tags exchange,exchange-transport \
      --zone=$SUBNET_ZONE_1 \
      --boot-disk-type pd-ssd \
      --disk=name=exchange-media-1,auto-delete=no,mode=ro \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-transport.ps1
    
  4. 두 번째 영역에 다른 VM 인스턴스를 만듭니다.

    gcloud compute instances create transport-1-b \
      --image-family=windows-2016 \
      --image-project=windows-cloud \
      --machine-type=n1-standard-8 \
      --subnet=$SUBNET_NAME \
      --tags exchange,exchange-transport \
      --zone=$SUBNET_ZONE_2 \
      --boot-disk-type pd-ssd \
      --disk=name=exchange-media-2,auto-delete=no,mode=ro \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-transport.ps1
    
  5. 직렬 포트 출력을 확인하여 VM의 초기화 프로세스를 모니터링합니다.

    gcloud compute instances tail-serial-port-output transport-1-b --zone=$SUBNET_ZONE_2
    

    출력으로 Instance setup finished가 표시될 때까지 5분 정도 기다린 다음 Ctrl+C를 누릅니다. 이제 VM 인스턴스를 사용할 수 있습니다.

  6. 두 에지 전송 서버 VM 인스턴스 각각에 대해 다음 단계를 수행합니다.

    1. VM 인스턴스의 사용자 이름과 비밀번호를 만듭니다.
    2. 원격 데스크톱을 사용하여 VM에 연결하고 이전 단계에서 만든 사용자 이름과 비밀번호를 사용하여 로그인합니다.
    3. Active Directory 도메인에서 사용하는 DNS 도메인 이름과 일치하도록 기본 DNS 서픽스를 구성합니다.
    4. 설정 마법사 또는 무인 모드를 사용하여 Exchange Server 에지 전송 서버 역할을 설치합니다. 드라이브 D:에서 Exchange 설치 미디어를 찾을 수 있습니다.

DNS에서 에지 전송 서버 등록

에지 전송 서버에 에지 구독을 설정하려면 먼저 서버에 DNS 이름을 할당해야 합니다. 에지 전송 서버는 Active Directory 도메인의 구성원이 아니므로 이름을 수동으로 할당해야 합니다.

  1. 관리 서버에서 PowerShell 콘솔을 엽니다.
  2. transport-1-atransport-1-b에 대한 CNAME 레코드를 만듭니다.

    Add-DnsServerResourceRecordCName `
      -ComputerName (Get-ADDomainController).Hostname `
      -HostNameAlias "transport-1-a.REGION-a.c.PROJECT-ID.internal." `
      -Name "transport-1-a" `
      -ZoneName "DOMAIN"
    
    Add-DnsServerResourceRecordCName `
      -ComputerName (Get-ADDomainController).Hostname `
      -HostNameAlias "transport-1-b.REGION-b.c.PROJECT-ID.internal." `
      -Name "transport-1-b" `
      -ZoneName "DOMAIN"
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT-ID는 Exchange VM 인스턴스가 배포된 프로젝트의 프로젝트 ID입니다.
    • REGION은 Exchange VM 인스턴스가 배포되는 리전입니다.
    • DOMAIN은 Active Directory 도메인의 DNS 도메인입니다.

에지 구독 설정

에지 전송 서버의 Active Directory Lightweight Directory Services(AD LDS) 인스턴스를 Active Directory 데이터로 채우기 위해 이제 에지 구독을 설정합니다.

  1. 시작 > Exchange 관리 셸을 마우스 오른쪽 버튼으로 클릭하여 권한 승격된 Exchange 관리 셸을 열고 더 보기 > 관리자로 실행을 선택합니다.
  2. 에지 구독을 만듭니다.

    New-EdgeSubscription -FileName "$env:UserProfile\Desktop\EdgeSubscriptionInfo-$env:computername.xml"
    

    이제 데스크톱에 구독 파일이 표시됩니다.

  3. Exchange AD LDS 서버 인증서를 내보냅니다.

    1. 시작 > 실행을 클릭하여 Microsoft Management Console을 열고 mmc를 입력한 다음 확인을 선택합니다.
    2. 파일 > 스냅인 추가/삭제를 선택합니다.
    3. 스냅인 목록에서 인증서를 선택하고 추가를 클릭합니다.
    4. 서비스 계정을 선택하고 다음을 클릭합니다.
    5. 로컬 컴퓨터를 선택하고 다음을 클릭합니다.
    6. Microsoft Exchange ADAM을 선택한 다음 마침을 클릭합니다.
    7. 확인을 클릭합니다.
    8. 왼쪽 창에서 인증서 > ADAM_MSExchange\Personal > 인증서로 이동합니다.
    9. 오른쪽 창에서 인증서를 마우스 오른쪽 버튼으로 클릭하고 모든 작업 > 내보내기를 선택합니다.
    10. 다음을 클릭합니다.
    11. 아니요, 비공개 키를 내보내지 않습니다를 선택하고 다음을 클릭합니다.
    12. Base-64 인코딩 X.509(.cer)를 선택하고 다음을 클릭합니다.
    13. 인증서를 저장할 위치를 선택하고 다음을 클릭합니다.
  4. 두 개의 편지함 서버 VM 인스턴스 각각에 대해 다음 단계를 수행합니다.

    1. 두 에지 전송 서버의 Exchange AD LDS 서버 인증서를 임시 위치로 복사합니다.
    2. 두 에지 전송 서버의 구독 파일을 임시 위치로 복사합니다.
    3. 시작 > Exchange 관리 셸을 마우스 오른쪽 버튼으로 클릭하여 권한 승격된 Exchange 관리 셸을 열고 더 보기 > 관리자로 실행을 선택합니다.
    4. transport-1-a의 Exchange AD LDS 서버 인증서를 가져옵니다.

      Import-Certificate -FilePath "PATH" -CertStoreLocation cert:\LocalMachine\Root
      

      PATHtransport-1-a의 Exchange AD LDS 서버 인증서의 경로로 바꿉니다.

    5. transport-1-b의 Exchange AD LDS 서버 인증서를 가져옵니다.

      Import-Certificate -FilePath "PATH" -CertStoreLocation cert:\LocalMachine\Root
      

      PATHtransport-1-b의 Exchange AD LDS 서버 인증서의 경로로 바꿉니다.

    6. transport-1-atransport-1-b에지 구독 파일을 가져옵니다.

    7. 편지함 서버에서 수동으로 EdgeSync 프로세스를 시작하고 동기화가 성공했는지 확인합니다.

수신 이메일 흐름의 부하 분산 설정

에지 전송 서버로 인바운드 이메일 흐름을 사용 설정하기 위해 이제 네트워크 부하 분산기 리소스를 만듭니다.

  1. 기존 Cloud Shell 세션으로 돌아갑니다.
  2. 대상 풀을 만듭니다.

    gcloud compute target-pools create transport-pool --region $SUBNET_REGION
    
  3. 에지 전송 서버 VM 인스턴스를 대상 풀에 추가합니다.

    gcloud compute target-pools add-instances transport-pool \
      --instances-zone $SUBNET_ZONE_1 \
      --instances transport-1-a
    
    gcloud compute target-pools add-instances transport-pool \
      --instances-zone $SUBNET_ZONE_2 \
      --instances transport-1-b
    
  4. 부하 분산기의 외부 IP 주소를 예약합니다.

    gcloud compute addresses create transport-frontend --region=$SUBNET_REGION
    
  5. 전달 규칙을 만듭니다.

    gcloud compute forwarding-rules create www-rule \
      --region $SUBNET_REGION \
      --ports 25 \
      --address transport-frontend \
      --target-pool transport-pool
    
  6. 부하 분산기의 IP 주소를 찾습니다.

    gcloud compute addresses describe transport-frontend  \
      --region=$SUBNET_REGION \
      --format=value\(address\)
    

    이제 전송 서버가 이 IP 주소의 포트 25에서 이메일을 수신할 수 있으며 수신 이메일을 편지함 서버로 전달합니다.

  7. Telnet를 사용하여 Exchange 서버에서 SMTP 통신 테스트의 안내에 따라 이메일 전송이 작동하는지 확인합니다.

  8. 에지 전송 서버 설정을 완료하려면 Exchange 서버에서 메일 흐름 및 클라이언트 액세스 구성 단계를 따르세요.

SendGrid를 사용하여 발신 이메일 흐름 설정

Google Cloud는 포트 25에서 아웃바운드 연결을 허용하지 않으므로 발신 이메일을 처리하기 위해 커스텀 송신 커넥터를 설정합니다.

  1. Google Cloud Marketplace를 사용하여 SendGrid 이메일 서비스에 가입합니다.
  2. SendGrid 웹사이트에서 새 API 키를 만듭니다.
  3. VM 인스턴스 transport-1-atransport-1-b의 공개 IP 주소를 허용된 IP 주소 목록에 추가합니다.

송신 커넥터 만들기

이제 SendGrid를 스마트 호스트로 사용하는 발신 송신 커넥터를 만듭니다.

  1. Exchange 관리 센터(EAC)로 돌아갑니다.
  2. EAC 메뉴에서 메일 흐름 > 송신 커넥터를 선택합니다.
  3. +를 클릭합니다.
  4. 새 송신 커넥터 대화상자에 다음 설정을 입력합니다.
    • 이름: SendGrid
    • 유형: 인터넷(예: 인터넷 메일 전송)
  5. 다음을 클릭합니다.
  6. 네트워크 설정에서 스마트 호스트를 통해 메일 라우팅을 선택하고 +를 클릭합니다.
  7. 스마트 호스트 추가 페이지에서 smtp.sendgrid.net을 입력합니다.
  8. 저장을 클릭합니다.
  9. 다음을 클릭합니다.
  10. 스마트 호스트 인증에서 기본 인증을 선택합니다.
  11. 다음 정보를 입력합니다.
    • 사용자 이름: apikey
    • 비밀번호: SendGrid 웹사이트에서 만든 API 키를 붙여넣습니다.
  12. 다음을 클릭합니다.
  13. 주소 공간에서 +를 클릭합니다.
  14. 다음 정보를 입력합니다.
    • 유형: SMTP
    • 정규화된 도메인 이름(FQDN): *
    • 비용: 1
  15. 다음을 클릭합니다.
  16. 소스 서버에서 +를 클릭합니다.
  17. transport-1-atransport-1-b를 선택하고 확인을 클릭합니다.
  18. 마침을 클릭합니다.

SMTP 포트 변경

이제 커스텀 포트를 사용하도록 송신 커넥터를 구성합니다.

  1. 편지함 서버 중 하나에서 시작 > Exchange 관리 셸을 마우스 오른쪽 버튼으로 클릭하여 Exchange 관리 셸을 엽니다.
  2. 포트 2525를 사용하도록 송신 커넥터를 수정합니다.

    Set-SendConnector -Identity "SendGrid" -port 2525
    
  3. 에지 동기화를 트리거하여 구성 변경사항이 모든 에지 전송 서버에 반영되도록 합니다.

    Start-EdgeSynchronization -ForceFullSync
    

정리

이 가이드를 완료한 후에 추가 비용이 발생하지 않도록 하려면 만든 항목을 삭제하세요.

Google Cloud 프로젝트 삭제

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계

  • Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항 살펴보기 Cloud 아키텍처 센터 살펴보기