SQL Server 장애 조치 클러스터 인스턴스 구성

Compute Engine에서 Microsoft SQL Server의 고가용성 및 중복화가 필요한 경우 Storage Spaces Direct(S2D)를 사용하여 상시 사용 설정 장애 조치 클러스터 인스턴스(FCI)를 구성할 수 있습니다.

상시 사용 설정 FCI는 Windows Server 장애 조치 클러스터(WSFC) 노드 전체에 설치되는 단일 Microsoft SQL Server 인스턴스를 제공합니다. 실제로는 WSFC의 노드 1개가 SQL 인스턴스를 호스팅합니다. 장애 조치가 발생할 경우 WSFC 서비스는 인스턴스의 리소스 소유권을 지정된 장애 조치 노드로 전송합니다.

S2D는 Compute Engine VM의 데이터 디스크를 사용하여 SQL 데이터베이스를 저장할 수 있는 소프트웨어 기반 가상 SAN을 제공합니다.

이 가이드에서는 설정 예를 제공합니다. 이 가이드를 마치면 Compute Engine에 S2D를 사용하는 상시 사용 설정 SQL Server FCI를 만들 수 있습니다.

목표

  • Windows 도메인 컨트롤러로 VPC 네트워크를 설정합니다.
  • 클러스터 노드로 사용할 2개의 Windows SQL Server VM 인스턴스를 만듭니다.
  • 클러스터 저장소를 포함한 장애 조치 클러스터를 설정합니다.
  • 내부 부하 분산기가 활성 노드로 트래픽을 보내도록 설정합니다.
  • 장애 조치 작업을 테스트해 클러스터가 작동하는지 확인합니다.

비용

이 가이드는 Windows Server 라이선스를 포함하는 Compute Engine 이미지를 사용합니다. 따라서 VM을 계속 실행하면 이 가이드를 진행하는 데 소요되는 비용이 상당할 수 있습니다. 사용하지 않을 때는 되도록 VM을 중지하세요.

이 가이드를 완료하는 데 필요한 예상 비용은 가격 계산기를 참조하세요.

시작하기 전에

  1. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Google Cloud Platform 프로젝트를 선택하거나 만듭니다.

    리소스 관리 페이지로 이동

  3. Google Cloud Platform 프로젝트에 결제가 사용 설정되어 있는지 확인하세요.

    결제 사용 설정 방법 알아보기

  4. Compute Engine API를 사용 설정합니다.

    API 사용 설정

  5. 이 가이드의 모든 gcloud 명령을 실행할 수 있는 Cloud Shell 인스턴스를 시작합니다.
    Cloud Shell 열기
  6. 필요한 경우 SSD 영구 디스크 할당량을 검토하고 할당량 증가를 요청합니다. 이 가이드의 경우 500GB가 필요합니다.

개요

이 설정 예에는 다음 구성요소와 IP 주소가 포함됩니다.

  • 커스텀 VPC 네트워크: 10.0.0.0/24
  • Active Directory 도메인 컨트롤러: 10.0.0.3
  • 연결된 S2D 저장소가 있는 WSFC 노드 2개
    • node-1: 10.0.0.4
    • node-2: 10.0.0.5
  • Windows Server 장애 조치 클러스터(클러스터 관리용): 10.0.0.201
  • 내부 부하 분산기 및 SQL FCI 리스너(SQL 연결용): 10.0.0.200

부하 분산기는 요청을 수신하고, 상태 확인 결과에 따라 활성 상태인 SQL Server 노드를 확인하고 이 노드로 트래픽을 보냅니다. 활성 노드에 장애가 발생하면 FCI 장애 조치 노드가 활성화됩니다. 상태 확인기는 정상 노드의 신호를 수신하고, 부하 분산기는 트래픽을 리디렉션합니다. S2D 볼륨에 저장된 데이터베이스는 계속 사용할 수 있습니다.

장애 조치 클러스터의 Compute Engine VM 2개를 보여주는 아키텍처 다이어그램

VPC 네트워크 설정

이 가이드에서는 기존 네트워크를 사용할 수 있지만, 트래픽을 제한하는 방화벽 규칙을 사용하여 시스템을 여러 네트워크 및 서브넷으로 분리하는 것이 좋습니다.

  1. 서브넷과 IP 범위를 완전히 제어할 수 있는 커스텀 모드 VPC 네트워크를 만듭니다.

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. 이 가이드의 모든 VM을 포함하는 서브넷 wsfc-subnet1을 추가합니다.

    gcloud compute networks subnets create wsfc-subnet1 \
        --network wsfcnet \
        --region us-central1 \
        --range 10.0.0.0/24
    
  3. 이 네트워크에서 VM 간 내부 트래픽을 허용하는 방화벽 규칙을 만듭니다.

    gcloud compute firewall-rules create allow-internal-ports \
        --network wsfcnet \
        --allow tcp:1-65535,udp:1-65535,icmp \
        --source-ranges 10.0.0.0/24
    
  4. 포트 3389에서 들어오는 RDP 트래픽을 허용하는 방화벽 규칙을 만듭니다. 이 경우 모든 IP 주소(0.0.0.0/0)에 대해 tcp:3389가 열립니다. 프로덕션 환경에서는 승인된 IP로만 액세스를 제한합니다.

    gcloud compute firewall-rules create allow-rdp \
        --network wsfcnet \
        --allow tcp:3389 \
        --source-ranges 0.0.0.0/0
    

Windows 도메인 컨트롤러 만들기 및 구성

이 가이드에 필요한 도메인 이름 서비스, Windows 장애 조치 클러스터링 및 Storage Spaces Direct 기능에는 Active Directory 도메인이 사용됩니다. 이 가이드에서는 절차를 단순하게 하기 위해 동일한 VPC에 AD 도메인 컨트롤러가 있지만 반드시 그래야 하는 것은 아닙니다.

이 가이드에서 사용하는 도메인은 gontoso.com입니다. 도메인 컨트롤러 VM 이름은 dc-windows입니다(기본적으로 Windows 컴퓨터 이름은 VM 이름 dc-windows와 일치함). 이 VM은 서브넷 10.0.0.3에 생성됩니다.

  1. 도메인 컨트롤러로 사용할 VM을 만듭니다. 머신 유형과 Windows 서버는 필요한 대로 지정할 수 있지만 이 예에서는 다음 매개변수를 사용합니다.

    gcloud compute instances create "dc-windows" \
        --zone "us-central1-a" \
        --machine-type "n1-standard-2" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.3" \
        --can-ip-forward \
        --image-family "windows-2016" \
        --image-project "windows-cloud" \
        --boot-disk-size "200" \
        --boot-disk-type "pd-standard" \
        --boot-disk-device-name "dc-windows"
    
  2. 로컬 계정을 사용하여 도메인 컨트롤러 VM에 연결할 수 있도록 비밀번호를 생성합니다. 나중에 사용할 수 있도록 사용자 이름과 비밀번호를 기록해 둡니다.

  3. RDP를 사용하여 로컬 계정 사용자 이름과 비밀번호로 도메인 컨트롤러 VM에 연결합니다.

  4. VM에서 PowerShell을 관리자 권한으로 실행하여 권한 상승 모드의 PowerShell 프롬프트를 엽니다.

  5. 관리자 사용자를 설정합니다.

    1. 다음 명령어를 실행한 다음 관리자 계정에 사용할 비밀번호를 입력합니다.

      PS C:\> $Password = Read-Host -AsSecureString
      

      입력한 비밀번호를 기록해 둡니다. 관리자 계정에 이 비밀번호를 사용합니다.

    2. 관리자 계정 비밀번호를 설정합니다.

      PS C:\> Set-LocalUser -Name Administrator -Password $Password
      
    3. 관리자 계정을 사용 설정합니다.

      PS C:\> Enable-LocalUser -Name Administrator
      
  6. SQL Agent 및 SQL Admin 계정으로 사용할 SQL Server 서비스 계정을 설정합니다.

    1. SQL Server 서비스 계정에 사용할 안전한 비밀번호를 입력합니다.

      PS C:\> $Password = Read-Host -AsSecureString
      

      입력한 비밀번호를 기록해 둡니다. SQL Server 서비스 계정에 이 비밀번호를 사용합니다.

    2. SQL Server 서비스 계정을 만들고 비밀번호를 설정합니다.

      PS C:\> New-LocalUser -Name "service_account" -Description "SQL Agent and SQL Admin account."  -Password $Password
      
  7. 로그오프한 다음 관리자 계정 및 비밀번호로 RDP를 사용하여 도메인 컨트롤러 VM에 다시 연결합니다.

  8. 권한 상승 모드의 PowerShell에서 Active Directory 포리스트를 구성하는 데 사용할 다음 변수를 설정합니다.

    PS C:\> $DomainName = "gontoso.com";
    PS C:\> $DomainMode = "Win2012R2";
    PS C:\> $ForestMode = "Win2012R2";
    PS C:\> $DatabasePath = "C:\Windows\NTDS";
    PS C:\> $LogPath = "C:\Windows\NTDS";
    PS C:\> $SysvolPath = "C:\Windows\SYSVOL";
    
  9. Active Directory 서비스 및 도구를 설치합니다.

    PS C:\> Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
    Success Restart Needed Exit Code      Feature Result
    ------- -------------- ---------      --------------
    True    No             Success        {Active Directory Domain Services, Group P...
    
    
  10. Active Directory 포리스트를 설치하고 구성합니다. 이 명령어에는 사용자 인증 정보가 필요합니다. 이전 단계에서 만든 Administrator 사용자 이름과 비밀번호를 사용합니다.

    PS C:\> Install-ADDSForest -CreateDnsDelegation:$false -DatabasePath $DatabasePath -LogPath $LogPath -SysvolPath $SysvolPath -DomainName $DomainName -DomainMode $DomainMode -ForestMode $ForestMode -InstallDNS:$true -NoRebootOnCompletion:$false -SafeModeAdministratorPassword ((Get-Credential).Password) -Force:$true;
    
    cmdlet Get-Credential at command pipeline position 1
    Supply values for the following parameters:
    Credential
    ...
    
    

    머신이 재부팅됩니다.

  11. VM이 다시 시작되면 RDP를 사용하여 VM에 다시 연결합니다. 이때 원래 사용자 인증 정보와 일치하는 로컬 계정 사용자 인증 정보를 사용합니다.

클러스터의 VM 및 데이터 디스크 만들기

추가 데이터 디스크가 있는 SQL Server VM 2개를 만듭니다. VM 하나는 활성 FCI 노드로 작동하고, 다른 하나는 장애 조치 노드로 작동합니다. 추가 디스크는 S2D 볼륨으로 작동합니다.

각 SQL Server VM은 다음 요구사항을 충족해야 합니다.

  • 앞에서 정의한 서브넷 wsfc-subnet1에 생성되어 있어야 합니다.
  • 서브넷 범위 10.0.0.0/24에 비공개 IP가 있어야 합니다.
  • Windows Server 장애 조치 클러스터링 기능이 설치되어 있어야 합니다.
  • 장애 조치 클러스터의 활성 노드를 모니터링할 수 있는 Compute Engine WSFC 에이전트가 사용 설정되어 있어야 합니다.
  1. Cloud Shell에서 추가 데이터 디스크가 있는 SQL Server VM 2개를 만듭니다. 이 디스크는 S2D 용량 및 캐시 볼륨으로 사용됩니다.

    gcloud compute instances create "node-1" \
        --zone "us-central1-f" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.4" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-1" \
        --create-disk=name=node-1-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
    
    gcloud compute instances create "node-2" \
        --zone "us-central1-a" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.5" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-2" \
        --create-disk=name=node-2-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
      
  2. 필요한 경우 RDP를 사용하여 각 노드에 연결하고 권한 상승 모드의 PowerShell에서 장애 조치 클러스터링이 사용 설정되었는지 확인합니다.

    PS C:> Get-WindowsFeature Failover-Clustering
    Display Name                                            Name                       Install State


    [X] Failover Clustering Failover-Clustering Installed

클러스터 VM의 네트워크 구성

  1. 첫 번째 노드를 구성합니다.

    1. node-1비밀번호를 생성합니다. 나중에 사용할 수 있도록 사용자 이름과 비밀번호를 기록해 둡니다.

    2. RDP를 사용하여 node-1에 연결합니다.

    3. 권한 상승 모드의 PowerShell을 엽니다.

    4. Compute Engine WSFC 에이전트에 대해 포트를 여는 방화벽 규칙을 추가합니다. 기본적으로 Compute Engine WSFC 에이전트는 tcp:59998에서 수신 대기합니다. 이 포트를 다른 포트로 변경할 수 있지만 나중에 정의할 상태 확인기 포트와 일치해야 합니다. 상태 확인 프로세스는 주기적으로 각 클러스터 노드에서 에이전트를 핑하여 가용성을 확인합니다.

      PS C:\> netsh advfirewall firewall add rule name="Open Compute Engine WSFC agent port for Health Check" dir=in action=allow protocol=TCP localport=59998
      
    5. 일반적으로 tcp:1433에서 실행되는 SQL Server 인스턴스에 대해 포트를 여는 방화벽 규칙을 추가합니다.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. DNS를 도메인 컨트롤러로 설정합니다.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. 노드에서 고정 IP 주소를 사용하도록 업데이트하고 넷마스크를 설정합니다.

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.4 255.255.0.0 10.0.0.1 1
      

      VM과의 연결이 끊어집니다. RDP를 사용하여 로컬 사용자 이름과 비밀번호로 VM에 다시 연결합니다.

    8. 앞에서 만든 Active Directory 도메인에 노드를 추가합니다.

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      사용자 인증 정보를 입력하라는 메시지가 나타납니다. 이전 단계에서 도메인 컨트롤러 VM을 구성할 때 설정한 관리자 사용자 이름과 비밀번호를 사용합니다.

      머신이 재부팅됩니다.

  2. 두 번째 노드를 구성합니다.

    1. node-2비밀번호를 생성합니다. 나중에 사용할 수 있도록 사용자 이름과 비밀번호를 기록해 둡니다.

    2. RDP를 사용하여 node-2에 연결합니다.

    3. 권한 상승 모드의 PowerShell을 엽니다.

    4. Compute Engine WSFC 에이전트에 대해 포트를 여는 방화벽 규칙을 추가합니다. 이 포트는 나중에 정의할 상태 확인기 포트와 일치해야 합니다.

      PS C:\> netsh advfirewall firewall add rule name="Open Compute Engine WSFC agent port for Health Check" dir=in action=allow protocol=TCP localport=59998
      
    5. 일반적으로 tcp:1433에서 실행되는 SQL Server 인스턴스에 대해 포트를 여는 방화벽 규칙을 추가합니다.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. DNS를 도메인 컨트롤러로 설정합니다.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. 노드에서 고정 IP 주소를 사용하도록 업데이트하고 넷마스크를 설정합니다.

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.5 255.255.0.0 10.0.0.1 1
      

      VM과의 연결이 끊어집니다. RDP를 사용하여 로컬 사용자 이름과 비밀번호로 VM에 다시 연결합니다.

    8. 앞에서 만든 Active Directory 도메인에 노드를 추가합니다.

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      사용자 인증 정보를 입력하라는 메시지가 나타납니다. 이전 단계에서 도메인 컨트롤러 VM을 구성할 때 설정한 관리자 사용자 이름과 비밀번호를 사용합니다.

      머신이 재부팅됩니다.

파일 공유 감시 생성

동률 처리 기능을 제공하고 장애 조치 시나리오를 위한 쿼럼을 확보하기 위해 감시 역할을 하는 파일 공유를 만들 수 있습니다. 이 가이드에서는 도메인 컨트롤러 VM에 파일 공유 감시를 만듭니다. 프로덕션 환경에서는 다른 위치에 파일 공유 감시를 만들 수 있습니다.

  1. RDP를 사용하여 관리자 계정으로 도메인 컨트롤러 VM dc-windows에 연결합니다.

  2. 권한 상승 모드의 PowerShell을 엽니다.

  3. 감시 폴더를 만듭니다.

    PS C:\> New-Item "C:\QWitness" –type directory
    
  4. 이 폴더를 공유합니다.

    PS C:\> New-SmbShare -Name "QWitness" -Path "C:\QWitness" -Description "SQL File Share Witness" -FullAccess "gontoso.com\Administrator", "gontoso.com\node-1$", "gontoso.com\node-2$"
    
  5. 필요한 경우 RDP를 사용하여 두 노드 중 하나에 gontoso.com\Administrator로 연결하고 해당 공유 디렉토리에 액세스할 수 있는지 확인합니다.

    PS C:\> dir \\\\dc-windows\QWitness
    

내부 부하 분산기 만들기

내부 부하 분산기는 SQL Server에 단일 IP를 제공합니다. 부하 분산기는 요청을 수신하고 네트워크 트래픽을 활성 클러스터 노드로 라우팅하며, 각 노드에 대해 상태 확인기가 실행되고 있으므로 어떤 노드가 활성 노드인지를 파악할 수 있습니다. 활성 노드만 정상 상태로 응답합니다. 활성 노드가 중단되면 SQL FCI 장애 조치 노드가 활성화됩니다. 상태 확인기가 이 신호를 수신하면 트래픽이 해당 노드로 리디렉션됩니다.

  1. 2개의 인스턴스 그룹을 만들고 각 그룹에 SQL Server 노드를 하나씩 추가합니다. 이러한 인스턴스 그룹은 부하 분산기가 트래픽을 보낼 수 있는 대상 백엔드로 작동합니다.

    gcloud compute instance-groups unmanaged create wsfc-group-f --zone us-central1-f
    gcloud compute instance-groups unmanaged add-instances wsfc-group-f --instances node-1 --zone us-central1-f
    
    gcloud compute instance-groups unmanaged create wsfc-group-a --zone us-central1-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a --instances node-2 --zone us-central1-a
    
  2. 부하 분산기가 활성 노드를 확인하는 데 사용할 수 있는 상태 확인기를 만듭니다.

    gcloud compute health-checks create tcp sql-healthcheck \
        --check-interval="2s" \
        --healthy-threshold=1 \
        --unhealthy-threshold=2 \
        --port=59998 \
        --request=10.0.0.200 \
        --timeout="1s" \
        --response=1
    
  3. 상태 확인을 허용하는 방화벽 규칙을 추가합니다.

    gcloud compute firewall-rules create allow-health-check \
        --network wsfcnet \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --allow tcp
    
  4. 백엔드 서비스를 1개 만들고 백엔드 인스턴스 그룹 2개를 추가합니다.

    gcloud compute backend-services create wsfcbackend \
        --load-balancing-scheme internal \
        --region us-central1 \
        --health-checks sql-healthcheck \
        --protocol tcp
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-a \
        --instance-group-zone us-central1-a \
        --region us-central1
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-f \
        --instance-group-zone us-central1-f \
        --region us-central1
    
  5. SQL FCI의 활성 노드로 요청을 전달할 내부 부하 분산기를 만듭니다. 이후 단계에서 FCI를 생성하여 10.0.0.200에서 수신 대기하도록 구성하게 됩니다.

    gcloud compute forwarding-rules create wsfc-forwarding-rule \
        --load-balancing-scheme internal \
        --ports 1433 \
        --network wsfcnet \
        --subnet wsfc-subnet1 \
        --region us-central1 \
        --backend-service wsfcbackend \
        --address 10.0.0.200
    

Windows 장애 조치 클러스터 만들기

  1. RDP를 사용하여 node-1gontoso.com\Administrator로 다시 연결합니다. 다시 연결하려면 이전 인증서를 삭제해야 할 수도 있습니다.

  2. 권한 상승 모드의 PowerShell을 엽니다.

  3. 클러스터를 만듭니다.

    PS C:\> New-Cluster -Name windows-fci -Node node-1, node-2 -StaticAddress 10.0.0.201 -NoStorage
    
    PS C:\> Set-ClusterQuorum -FileShareWitness \\\\dc-windows\QWitness
    
  4. 클러스터를 테스트합니다. 몇 가지 경고가 표시되지만 무시해도 됩니다.

    PS C:\> Test-Cluster
    WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings..
    WARNING: Network - Validate Network Communication: The test reported some warnings..
    WARNING:
    Test Result:
    HadUnselectedTests, ClusterConditionallyApproved
    Testing has completed for the tests you selected. You should review the warnings in the Report.  A cluster solution is
    supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
    Test report file path: C:\Users\Administrator\AppData\Local\Temp\Validation Report 2018.05.01 At 19.25.01.htm
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----         5/1/2018   7:26 PM         747166 Validation Report 2018.05.01 At 19.25.01.htm
    
    

    cluadmin.msc를 실행하여 클러스터 관리 GUI를 시작하고 클러스터 상태를 검토할 수도 있습니다.

Storage Spaces Direct 사용 설정

  1. RDP를 사용하여 node-1 또는 node-2에 연결하고 권한 상승 모드의 PowerShell을 엽니다.

  2. Storage Spaces Direct를 사용 설정합니다.

    PS C:\> Enable-ClusterS2D
    
    Confirm
    Are you sure you want to perform this action?
    Performing operation 'Enable Cluster Storage Spaces Direct' on Target 'windows-fci'.
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    WARNING: 2018/05/01-19:36:41.315 Node node-1: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.330 Node node-2: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.362 C:\Windows\Cluster\Reports\Enable-ClusterS2D on 2018.05.01-19.36.41.362.htm
    
    

    확인 메시지가 나타나면 기본값을 승인합니다. 몇 가지 경고가 표시되지만 무시해도 됩니다.

    • 디스크 성능을 높이기 위해 필요한 경우 표준 SSD 영구 디스크 외에도 로컬 SSD를 클러스터의 VM에 추가할 수 있습니다. 로컬 SSD는 S2D 캐싱 계층으로 사용할 수 있습니다. 용량 드라이브(이 경우에는 SSD 영구 디스크)의 수는 로컬 SSD 수의 배수여야 합니다. 캐싱과 함께 S2D를 사용 설정하려면 다음 명령어를 실행합니다.

      PS C:\> Enable-ClusterS2D -CacheDeviceModel "EphemeralDisk"
      
    • 읽기 처리량을 높이기 위해 클러스터 공유 볼륨(CSV)의 인메모리 캐시를 사용 설정할 수도 있습니다.

      PS C:\> (Get-Cluster).BlockCacheSize = 2048
      
  3. S2D의 경우 관리용으로 볼륨당 2GB가 필요한데 노드당 50GB 볼륨이 네 개씩 있으므로 저장소 풀을 정의하고 크기를 192GB로 설정합니다.

    PS C:\> New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 192GB
    
  4. 저장소 볼륨이 읽기/쓰기 모드로 존재하는지 확인합니다.

    PS C:\> dir C:\ClusterStorage\Volume1\ | Get-ACL
    
    Directory: C:\ClusterStorage\Volume1
    
    Path                Owner                  Access
    ----                -----                  ------
    MSSQL13.MSSQLSERVER BUILTIN\Administrators BUILTIN\Administrators Allow  FullControl...
    
    

FCI를 사용하여 SQL Server를 위한 고가용성 구성

  1. 첫 번째 노드에서 기본 SQL Server 인스턴스를 삭제합니다. 이 인스턴스는 나중에 새 FCI 구성으로 대체합니다.

    1. RDP를 사용하여 node-1gontoso.com\Administrator로 연결합니다.

    2. 권한 상승 모드의 PowerShell을 엽니다.

    3. 기본 SQL Server 인스턴스를 삭제합니다.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. VM을 재부팅합니다.

      PS C:\> shutdown /r
      
  2. 두 번째 노드에서 기본 SQL Server 인스턴스를 삭제합니다. 이 인스턴스는 나중에 새 FCI 구성으로 대체합니다.

    1. RDP를 사용하여 node-2gontoso.com\Administrator로 로그인합니다.

    2. 권한 상승 모드의 PowerShell을 엽니다.

    3. 기본 SQL Server 인스턴스를 삭제합니다.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. VM을 재부팅합니다.

      PS C:\> shutdown /r
      
  3. 첫 번째 노드에서 FCI를 사용하여 SQL Server를 다시 설치합니다.

    1. RDP를 사용하여 node-1gontoso\Administrator로 로그인합니다.

    2. 메모장과 같은 텍스트 편집기를 엽니다.

    3. node-1에서 fci_install_master_node.ini 구성 파일의 내용을 텍스트 편집기에 복사합니다. 줄바꿈은 유지되지 않을 수 있지만 여전히 작동합니다.

    4. 구성 파일을 gontoso.com\service_account의 비밀번호로 업데이트합니다. AGTSVCPASSWORDSQLSVCPASSWORD 두 곳에서 비밀번호를 업데이트해야 합니다. changeme를 찾아서 직접 정의한 비밀번호로 바꿉니다. 이 파일을 파일 이름이 C:\fci_install_master_node.ini인 일반 텍스트 파일로 저장합니다.

    5. 권한 상승 모드의 PowerShell을 열고 구성 파일을 사용하여 SQL Server를 설치합니다.

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_install_master_node.ini
      
  4. 두 번째 노드에서 FCI를 사용하여 SQL Server를 다시 설치합니다.

    1. RDP를 사용하여 node-2gontoso\Administrator로 로그인합니다.

    2. 메모장과 같은 텍스트 편집기를 엽니다.

    3. node-1에서 fci_add_node.ini 구성 파일의 내용을 텍스트 편집기에 복사합니다.

    4. 구성 파일을 gontoso.com\service_account의 비밀번호로 업데이트합니다. AGTSVCPASSWORDSQLSVCPASSWORD 두 곳에서 비밀번호를 업데이트해야 합니다. changeme를 찾아서 직접 정의한 비밀번호로 바꿉니다. 이 파일을 파일 이름이 C:\fci_add_node.ini인 일반 텍스트 파일로 저장합니다.

    5. 권한 상승 모드의 PowerShell을 열고 SQL Server를 설치합니다.

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_add_node.ini
      

장애 조치 시나리오 테스트

클라이언트 준비

  1. Cloud Shell에서 SQL 클라이언트로 사용할 새 VM을 만듭니다.

    gcloud compute instances create "sqlclient-1" \
    --zone "us-central1-a" \
    --machine-type "n1-standard-2" \
    --subnet "wsfc-subnet1" \
    --private-network-ip "10.0.0.10" \
    --can-ip-forward \
    --image-family "sql-ent-2016-win-2016" \
    --image-project "windows-sql-cloud" \
    --boot-disk-size "200" \
    --boot-disk-type "pd-standard" \
    --boot-disk-device-name "sqlclient-1"
    
  2. RDP를 사용하여 sqlclient-1에 연결합니다.

  3. 권한 상승 모드의 PowerShell을 엽니다.

  4. 클라이언트를 구성합니다.

    1. DNS를 도메인 컨트롤러로 설정합니다.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    2. 앞에서 만든 Active Directory 도메인에 노드를 추가합니다.

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      사용자 인증 정보를 입력하라는 메시지가 나타납니다. 이전 단계에서 도메인 컨트롤러 VM을 구성할 때 설정한 관리자 사용자 이름과 비밀번호를 사용합니다.

      머신이 재부팅됩니다.

    3. RDP를 사용하여 Administrator 계정으로 다시 연결합니다.

    4. gontoso.com\service_account를 로컬 Administrators 그룹에 추가합니다.

      PS C:\> Add-LocalGroupMember -Group "Administrators" -Member "gontoso.com\service_account"
      
    5. 로그아웃합니다.

      PS C:\> logoff
      

테스트 실행

  1. RDP를 사용하여 gontoso.com\service_account 사용자 이름 및 비밀번호로 sqlclient-1에 다시 연결합니다.

  2. PowerShell에서 시스템의 dm_os_cluster_nodes 테이블에 대한 테스트 쿼리를 실행합니다.

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    NodeName                       status      status_description is_current_owner
    \------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    
    

    node-1은 SQL Server 장애 조치 클러스터 리소스의 현재 소유자입니다.

  3. Cloud Shell을 사용하여 장애 조치 시나리오를 테스트하기 위해 node-1 VM을 종료합니다.

    gcloud compute instances stop node-1 --zone us-central1-f
    
  4. sqlclient-1 VM에서 테스트 쿼리를 다시 실행합니다.

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    NodeName                       status      status_description is_current_owner
    \------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    
    

    node-1이 손실되었음에도 쿼리에 성공했으므로 현재 node-2가 장애 조치 클러스터의 소유자임을 알 수 있습니다.

삭제

이 가이드에서 사용한 리소스 비용이 Google Cloud Platform 계정에 청구되지 않도록 하는 방법은 다음과 같습니다.

SQL Server FCI 가이드를 완료한 후에는 이후 요금이 청구되지 않도록 Google Cloud Platform에서 만든 리소스를 삭제할 수 있습니다. 다음 섹션에서는 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. GCP Console에서 프로젝트 페이지로 이동합니다.

    프로젝트 페이지로 이동

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

인스턴스 삭제

Compute Engine 인스턴스를 삭제하는 방법은 다음과 같습니다.

  1. GCP Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 다음 옆에 있는 체크박스를 클릭합니다. 삭제할 인스턴스
  3. 페이지 상단의 삭제 삭제를 클릭하여 인스턴스를 삭제합니다.

영구 디스크 삭제

영구 디스크를 삭제하는 방법:

  1. GCP 콘솔에서 디스크 페이지로 이동합니다.

    디스크 페이지로 이동

  2. 삭제할 디스크 옆의 체크박스를 선택합니다.

  3. 페이지 상단의 삭제 버튼을 클릭합니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서