쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Amazon FSx를 사용하여 SQL Server Always On FCI용 다중 AZ 인프라 설정 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon FSx를 사용하여 SQL Server Always On FCI용 다중 AZ 인프라 설정

작성자: Manish Garg(AWS), T.V.R.L.Phani Kumar Dadi(AWS), Nishad Mankar(AWS), RAJNEESH TYAGI(AWS)

요약

많은 Microsoft SQL Server Always On 장애 조치 클러스터 인스턴스(FCI)를 빠르게 마이그레이션해야 하는 경우 이 패턴을 이용하면 프로비저닝 시간을 최소화할 수 있습니다. 자동화 및 Amazon FSx for Windows File Server를 이용하면 많은 클러스터를 배포하는 데 필요한 수동 작업, 사람이 저지르는 오류 및 시간을 줄일 수 있습니다.

이 패턴은 Amazon Web Services(AWS)의 다중 가용 영역(다중 AZ) 배포에서 SQL Server FCI의 인프라를 설정합니다. 이 인프라에 필요한 AWS 서비스의 프로비저닝은 AWS 클라우드Formation 템플릿을 사용하여 자동화됩니다. Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 SQL Server 설치 및 클러스터 노드 생성은 PowerShell 명령을 사용하여 수행됩니다.

이 솔루션은 가용성이 높은 다중 AZ Amazon FSx for Windows 파일 시스템을 SQL Server 데이터베이스 파일을 저장하기 위한 공용 감시 시스템으로 사용합니다. SQL Server를 호스팅하는 Amazon FSx 파일 시스템 및 EC2 Windows 인스턴스는 동일한 AWS Directory Service for Microsoft Active Directory(AWS Managed Microsoft AD) 도메인에 조인됩니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 상태의 AWS 계정

  • AWS 클라우드Formation 템플릿을 사용하여 리소스를 프로비저닝할 수 있는 권한이 충분히 있는 AWS 사용자

  • Microsoft Active Directory용 AWS Directory Service

  • 키-값 페어로 AWS Managed Microsoft AD에 인증하기 위한 AWS Secrets Manager의 보안 인증 정보:

    • ADDomainName: <도메인 이름>

    • ADDomainJoinUserName: <도메인 사용자 이름>

    • ADDomainJoinPassword: <도메인 사용자 비밀번호>

    • TargetOU: <대상 OU 값>

    참고

    AWS Systems Manager 자동화에서 AWS Managed Microsoft AD 조인 활동에 동일한 키 이름을 사용합니다.

  • SQL Server 설치용 SQL Server 미디어 파일과 생성된 Windows 서비스 또는 도메인 계정(클러스터 생성 시 사용됨)

  • 별도의 가용 영역에 있는 두 공개 서브넷, 가용 영역에 있는 두 비공개 서브넷, 인터넷 게이트웨이, NAT 게이트웨이, 라우팅 테이블 연결, 점프 서버를 포함하는 Virtual Private Cloud(VPC)

제품 버전

  • Windows Server 2012 R2와 Microsoft SQL Server 2016

아키텍처

소스 기술 스택

  • 공용 드라이브를 사용하는 온프레미스 SQL Server

대상 기술 스택

  • AWS EC2 인스턴스

  • Amazon FSx for Windows File Server

  • AWS Systems Manager Automation 런북

  • 네트워크 구성(VPC, 서브넷, 인터넷 게이트웨이, NAT 게이트웨이, 점프 서버, 보안 그룹)

  • AWS Secrets Manager

  • AWS Managed Microsoft AD

  • Amazon EventBridge

  • AWS Identity and Access Management(IAM)

대상 아키텍처

다음 다이어그램은 가용 영역 두 개, NAT 게이트웨이가 있는 공개 서브넷 두 개, 첫 번째 공개 서브넷의 점프 서버 한 개, 비공개 서브넷 두 개(각각 노드 보안 그룹의 SQL Server 노드용 EC2 인스턴스 포함), 각 SQL Server 노드에 연결되는 Amazon FSx 파일 시스템을 포함하는 VPC가 있는 단일 AWS 리전의 AWS 계정을 보여줍니다. AWS Directory Service, Amazon EventBridge, AWS Secrets Manager 및 AWS Systems Manager도 포함됩니다.

퍼블릭 및 프라이빗 서브넷에 리소스가 있고 노드 보안 그룹이 있는 다중 AZ 아키텍처입니다.

자동화 및 규모 조정

  • AWS Systems Manager를 사용하여 AWS Managed Microsoft AD에 조인하고 SQL 서버 설치를 수행할 수 있습니다.

도구

서비스

  • AWS CloudFormation을 사용하면 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, 전체 AWS 계정 및 리전에서 수명 주기 전반에 걸쳐 관리할 수 있습니다.

  • AWS Directory Service는 Amazon Elastic Compute Cloud(Amazon EC2), Amazon Relational Database Service(RDS) for SQL Server, Amazon FSx for Windows File Server 등의 기타 AWS Service와 함께 Microsoft Active Directory(AD)를 사용할 수 있는 다양한 방법을 제공합니다.

  • Amazon Elastic Compute Cloud(Amazon EC2)는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. 필요한 만큼 가상 서버를 시작하고 빠르게 스케일 업하거나 스케일 다운할 수 있습니다.

  • Amazon EventBridge는 애플리케이션을 다양한 소스의 실시간 데이터와 연결할 수 있는 서버리스 이벤트 버스 서비스입니다. AWS Lambda 함수, API 대상을 사용하는 HTTP 간접 호출 엔드포인트 또는 다른 AWS 계정의 이벤트 버스를 예로 들 수 있습니다.

  • AWS Identity and Access Management(IAM)를 이용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.

  • AWS Secrets Manager를 사용하면 코드에 하드코딩된 보안 인증 정보(암호 등)를Secrets Manager에 대한 API 직접 호출로 바꾸어 프로그래밍 방식으로 보안 암호를 검색할 수 있습니다.

  • AWS Systems Manager는 AWS 클라우드에서 실행되는 애플리케이션과 인프라를 관리하는 데 도움이 됩니다. 애플리케이션 및 리소스 관리를 간소화하고, 운영 문제의 감지 및 해결 시간을 단축하며, AWS 리소스를 규모에 따라 안전하게 관리하는 데 도움이 됩니다.

기타 도구

  • PowerShell은 Windows, Linux 및 macOS에서 실행되는 마이크로소프트 자동화 및 구성 관리 프로그램입니다. 이 패턴은 PowerShell 스크립트를 이용합니다.

코드 리포지토리

이 패턴의 코드는 GitHub aws-windows-failover-cluster-automation 리포지토리에서 사용할 수 있습니다.

모범 사례

에픽

작업설명필요한 기술

Systems Manager CloudFormation 스택을 배포합니다.

  1. AWS 계정에 로그인하고 AWS Management Console을 엽니다.

  2. CloudFormation 콘솔로 이동하여 ssm.yaml 템플릿을 업로드하여 Systems Manager CloudFormation 스택을 생성합니다. 다음의 파라미터 값을 입력합니다.

    • StateUnJoinAssociationLoggingBucketName-로그 목적으로 생성할 S3 버킷의 이름을 입력합니다.

    • SSMAssociationADUnjoinName-AWS::SSM::Association 리소스의 이름을 입력합니다.

    • SSMAutomationDocumentName-Systems Manager Automation 런북 이름을 입력합니다.

    • EventBridgeName-EventBridge 이벤트 버스의 이름을 입력합니다.

  3. ssm.yaml CloudFormation 템플릿을 실행하여 Systems Manager CloudFormation 스택을 배포합니다. 템플릿은 태그 ADJoined: FSXADD가 있는 새 EC2 인스턴스가 시작될 때 시작되는 Systems Manager Automation 런북을 생성합니다. Automation 런북은 AWS Managed Microsoft AD 디렉터리에 인스턴스를 추가합니다.

AWS DevOps, DevOps 엔지니어

인프라 스택을 배포합니다.

Systems Manager 스택을 성공적으로 배포한 후 EC2 인스턴스 노드, 보안 그룹, Amazon FSx for Windows File Server 파일 시스템 및 IAM 역할을 포함하는 infra 스택을 생성합니다.

  1. CloudFormation 콘솔로 이동하여 infra-cf.yaml 템플릿을 실행합니다. 이 스택을 배포하려면 다음의 파라미터가 필요합니다.

    • ActiveDirectoryId-AWS Managed Microsoft AD의 ID

    • ADDnsIpAddresses1-AWS Managed Microsoft AD의 기본 DNS IP 주소

    • ADDnsIpAddresses2-AWS Managed Microsoft AD의 보조 DNS IP 주소

    • FSxSecurityGroupName-Amazon FSx 보안 그룹의 이름

    • FSxWindowsFileSystemName-Amazon FSx 드라이브 이름

    • ImageID-SQL 서버 인스턴스 노드를 생성하는 데 사용된 기본 Windows 2012 R2 이미지 또는 Amazon Machine Image(AMI)의 ID

    • KeyPairName-액세스를 위해 EC2 인스턴스 노드에 연결할 키-값 페어

    • Node1SecurityGroupName-첫 번째 노드 보안 그룹의 이름

    • Node2SecurityGroupName-두 번째 노드 보안 그룹의 이름

    • OUSecretName-AWS Managed Microsoft AD 정보가 들어 있는 보안 암호의 이름

    • PrivateSubnet1-첫 번째 비공개 서브넷의 ID

    • PrivateSubnet2-두 번째 비공개 서브넷의 ID

    • SqlFSxFCIName-기본 및 보조 노드와 Amazon FSx에 적용되는 태그의 이름.

    • SqlFSxServerNetBIOSName1-기본 EC2 인스턴스 노드의 이름(최대 15자)

    • SqlFSxServerNetBIOSName2-보조 EC2 인스턴스 노드의 이름(최대 15자)

    • VPC-VPC ID

    • WorkloadInstanceType-EC2 인스턴스 유형

    infra 스택을 배포합니다. 스택은 Windows SQL Server FCI를 설정하는 데 필요한 모든 인프라 구성 요소를 생성합니다.

  2. EC2 인스턴스 노드가 시작되면 Systems Manager Automation 문서를 간접적으로 호출하여 이러한 인스턴스를 AWS Managed Microsoft AD에 조인합니다. Systems Manager 콘솔 자동화 페이지에서 진행 상황을 추적할 수 있습니다.

AWS DevOps, DevOps 엔지니어

인프라 배포

작업설명필요한 기술

Systems Manager CloudFormation 스택을 배포합니다.

  1. AWS 계정에 로그인하고 AWS Management Console을 엽니다.

  2. CloudFormation 콘솔로 이동하여 ssm.yaml 템플릿을 업로드하여 Systems Manager CloudFormation 스택을 생성합니다. 다음의 파라미터 값을 입력합니다.

    • StateUnJoinAssociationLoggingBucketName-로그 목적으로 생성할 S3 버킷의 이름을 입력합니다.

    • SSMAssociationADUnjoinName-AWS::SSM::Association 리소스의 이름을 입력합니다.

    • SSMAutomationDocumentName-Systems Manager Automation 런북 이름을 입력합니다.

    • EventBridgeName-EventBridge 이벤트 버스의 이름을 입력합니다.

  3. ssm.yaml CloudFormation 템플릿을 실행하여 Systems Manager CloudFormation 스택을 배포합니다. 템플릿은 태그 ADJoined: FSXADD가 있는 새 EC2 인스턴스가 시작될 때 시작되는 Systems Manager Automation 런북을 생성합니다. Automation 런북은 AWS Managed Microsoft AD 디렉터리에 인스턴스를 추가합니다.

AWS DevOps, DevOps 엔지니어

인프라 스택을 배포합니다.

Systems Manager 스택을 성공적으로 배포한 후 EC2 인스턴스 노드, 보안 그룹, Amazon FSx for Windows File Server 파일 시스템 및 IAM 역할을 포함하는 infra 스택을 생성합니다.

  1. CloudFormation 콘솔로 이동하여 infra-cf.yaml 템플릿을 실행합니다. 이 스택을 배포하려면 다음의 파라미터가 필요합니다.

    • ActiveDirectoryId-AWS Managed Microsoft AD의 ID

    • ADDnsIpAddresses1-AWS Managed Microsoft AD의 기본 DNS IP 주소

    • ADDnsIpAddresses2-AWS Managed Microsoft AD의 보조 DNS IP 주소

    • FSxSecurityGroupName-Amazon FSx 보안 그룹의 이름

    • FSxWindowsFileSystemName-Amazon FSx 드라이브 이름

    • ImageID-SQL 서버 인스턴스 노드를 생성하는 데 사용된 기본 Windows 2012 R2 이미지 또는 Amazon Machine Image(AMI)의 ID

    • KeyPairName-액세스를 위해 EC2 인스턴스 노드에 연결할 키-값 페어

    • Node1SecurityGroupName-첫 번째 노드 보안 그룹의 이름

    • Node2SecurityGroupName-두 번째 노드 보안 그룹의 이름

    • OUSecretName-AWS Managed Microsoft AD 정보가 들어 있는 보안 암호의 이름

    • PrivateSubnet1-첫 번째 비공개 서브넷의 ID

    • PrivateSubnet2-두 번째 비공개 서브넷의 ID

    • SqlFSxFCIName-기본 및 보조 노드와 Amazon FSx에 적용되는 태그의 이름.

    • SqlFSxServerNetBIOSName1-기본 EC2 인스턴스 노드의 이름(최대 15자)

    • SqlFSxServerNetBIOSName2-보조 EC2 인스턴스 노드의 이름(최대 15자)

    • VPC-VPC ID

    • WorkloadInstanceType-EC2 인스턴스 유형

    infra 스택을 배포합니다. 스택은 Windows SQL Server FCI를 설정하는 데 필요한 모든 인프라 구성 요소를 생성합니다.

  2. EC2 인스턴스 노드가 시작되면 Systems Manager Automation 문서를 간접적으로 호출하여 이러한 인스턴스를 AWS Managed Microsoft AD에 조인합니다. Systems Manager 콘솔 자동화 페이지에서 진행 상황을 추적할 수 있습니다.

AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

윈도우 도구를 설치합니다.

  1. 기본 EC2 인스턴스(노드 1)에 로그인합니다. Windows 기능(Active Directory 및 FCI 도구)을 설치하려면 다음의 PowerShell 스크립트를 실행합니다.

    Install-WindowsFeature -Name RSAT-AD-Powershell,Failover-Clustering -IncludeManagementTools Install-WindowsFeature -Name RSAT-Clustering,RSAT-ADDS-Tools,RSAT-AD-Powershell,RSAT-DHCP,RSAT-DNS-Server
  2. 보조 EC2 인스턴스(노드 2)에 로그인하고 동일한 스크립트를 실행하여 노드 2에서 기능을 활성화합니다.

AWS DevOps, DevOps 엔지니어, DBA

Active Directory Domain Services에서 클러스터 컴퓨터 객체를 사전 준비합니다.

Active Directory Domain Services(AD DS)에서 클러스터 이름 개체(CNO)를 사전 준비하고 클러스터된 역할을 위해 가상 컴퓨터 개체(VCO)를 사전 준비하려면 Windows Server 설명서의 지침을 따릅니다.

AWS DevOps, DBA, DevOps 엔지니어

WSFC를 생성합니다.

Windows Server Failover Clustering(WSFC) 클러스터를 만들려면 다음과 같이 합니다.

  1. 기본 EC2 인스턴스(노드 1)에 로그인합니다. Amazon FSx 파일 공유를 생성하고 나열된 AD 서비스 계정에 대한 전체 액세스 권한을 부여하려면 다음 코드를 실행합니다.

    Invoke-Command -ComputerName "<FSx Windows Remote PowerShell Endpoint>" -ConfigurationName FSxRemoteAdmin -scriptblock { New-FSxSmbShare -Name "SQLDB" -Path "D:\share" -Description "SQL Databases Share" -ContinuouslyAvailable $true -FolderEnumerationMode AccessBased -EncryptData $true grant-fsxsmbshareaccess -name SQLDB -AccountName "<domain\user>" -accessRight Full }

    또한 이 명령을 실행하면 지속적으로 사용 가능한(CA) 파일 공유가 만들어지는데, 이 공유는 Microsoft SQL Server에서 사용하도록 최적화되어 있습니다.

  2. 기본 인스턴스(노드 1)에 장애 조치 클러스터를 만들려면 다음 명령을 실행합니다.

    New-Cluster -Name <CNO Name> -Node  <Node1 Name>, <Node2 Name> -StaticAddress <Node1 Secondary Private IP>, <Node2 Secondary Private IP>

    명령은 다음 파라미터를 필요로 합니다.

    • Name-클러스터의 이름(CNO)

    • Node-기본 노드와 보조 노드의 이름 각각

    • StaticAddress-기본 노드와 보조 노드의 보조 IP 주소 각각

    중요

    도메인 관리자 또는 일반 사용자는 Windows Server 장애 조치 클러스터링(WSFC) 클러스터를 생성하려면 두 노드 모두에 대한 관리자 권한이 있어야 합니다. 그렇지 않으면 이전 명령이 실패하고 You do not have administrator privilege on servers라는 메시지가 반환됩니다.

  3. 클러스터가 생성된 후 다음 명령을 실행하여 파일 공유 감시를 연결합니다.

    Set-ClusterQuorum -FileShareWitness \\<FSx Windows Remote PowerShell Endpoint>\share\witness
AWS DevOps, DBA, DevOps 엔지니어

SQL Server 장애 조치 클러스터를 설치합니다.

WSFC 클러스터를 설정한 후 기본 인스턴스(노드1)에 SQL Server 클러스터를 설치합니다.

  1. 두 노드의 T 드라이브에 tempdb log 폴더를 생성합니다. 폴더는 PowerShell 명령에서 사용됩니다.

  2. SQL Server 설치용 SQL Server 미디어 파일을 두 노드에 모두 복사한 후 노드 1에서 다음 PowerShell 명령을 실행하여 노드 1에 SQL Server를 설치합니다.

D:\setup.exe /Q ` /ACTION=InstallFailoverCluster ` /IACCEPTSQLSERVERLICENSETERMS ` /FEATURES="SQL,IS,BC,Conn" ` /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server” ` /INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" ` /RSINSTALLMODE="FilesOnlyMode" ` /INSTANCEID="MSSQLSERVER" ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /INSTANCEDIR="C:\Program Files\Microsoft SQL Server" ` /ENU="True" ` /ERRORREPORTING=0 ` /SQMREPORTING=0 ` /SAPWD=“<Domain User password>” ` /SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" ` /SQLSYSADMINACCOUNTS="<domain\username>" ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="<domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server" ` /SQLUSERDBDIR="\\<FSX DNS name>\share\data" ` /SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" ` /SQLTEMPDBDIR="T:\tempdb" ` /SQLTEMPDBLOGDIR="T:\log" ` /SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, DevOps 엔지니어

클러스터에 보조 노드를 추가합니다.

보조 노드(노드 2)에 SQL Server를 추가하려면 다음 PowerShell 명령을 실행합니다.

D:\setup.exe /Q ` /ACTION=AddNode ` /IACCEPTSQLSERVERLICENSETERMS ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /CONFIRMIPDEPENDENCYCHANGE=1 ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, DevOps 엔지니어

SQL 서버 FCI를 테스트합니다.

  1. 노드 중 하나에 대한 Windows 인스턴스의 관리 도구에서 장애 조치 클러스터 관리자를 시작합니다.

  2. 노드로 이동하여 노드 상태가 실행 상태인지 확인합니다.

  3. 역할을 선택하고 SQL Serve(MSSQLSERVER)의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 이동 및 노드 선택을 선택합니다.

  4. 노드를 선택한 후에는 다른 노드에서 SQL Server가 실행되고 있어야 합니다.

DBA, DevOps 엔지니어

Windows SQL Server Always On FCI 설정

작업설명필요한 기술

윈도우 도구를 설치합니다.

  1. 기본 EC2 인스턴스(노드 1)에 로그인합니다. Windows 기능(Active Directory 및 FCI 도구)을 설치하려면 다음의 PowerShell 스크립트를 실행합니다.

    Install-WindowsFeature -Name RSAT-AD-Powershell,Failover-Clustering -IncludeManagementTools Install-WindowsFeature -Name RSAT-Clustering,RSAT-ADDS-Tools,RSAT-AD-Powershell,RSAT-DHCP,RSAT-DNS-Server
  2. 보조 EC2 인스턴스(노드 2)에 로그인하고 동일한 스크립트를 실행하여 노드 2에서 기능을 활성화합니다.

AWS DevOps, DevOps 엔지니어, DBA

Active Directory Domain Services에서 클러스터 컴퓨터 객체를 사전 준비합니다.

Active Directory Domain Services(AD DS)에서 클러스터 이름 개체(CNO)를 사전 준비하고 클러스터된 역할을 위해 가상 컴퓨터 개체(VCO)를 사전 준비하려면 Windows Server 설명서의 지침을 따릅니다.

AWS DevOps, DBA, DevOps 엔지니어

WSFC를 생성합니다.

Windows Server Failover Clustering(WSFC) 클러스터를 만들려면 다음과 같이 합니다.

  1. 기본 EC2 인스턴스(노드 1)에 로그인합니다. Amazon FSx 파일 공유를 생성하고 나열된 AD 서비스 계정에 대한 전체 액세스 권한을 부여하려면 다음 코드를 실행합니다.

    Invoke-Command -ComputerName "<FSx Windows Remote PowerShell Endpoint>" -ConfigurationName FSxRemoteAdmin -scriptblock { New-FSxSmbShare -Name "SQLDB" -Path "D:\share" -Description "SQL Databases Share" -ContinuouslyAvailable $true -FolderEnumerationMode AccessBased -EncryptData $true grant-fsxsmbshareaccess -name SQLDB -AccountName "<domain\user>" -accessRight Full }

    또한 이 명령을 실행하면 지속적으로 사용 가능한(CA) 파일 공유가 만들어지는데, 이 공유는 Microsoft SQL Server에서 사용하도록 최적화되어 있습니다.

  2. 기본 인스턴스(노드 1)에 장애 조치 클러스터를 만들려면 다음 명령을 실행합니다.

    New-Cluster -Name <CNO Name> -Node  <Node1 Name>, <Node2 Name> -StaticAddress <Node1 Secondary Private IP>, <Node2 Secondary Private IP>

    명령은 다음 파라미터를 필요로 합니다.

    • Name-클러스터의 이름(CNO)

    • Node-기본 노드와 보조 노드의 이름 각각

    • StaticAddress-기본 노드와 보조 노드의 보조 IP 주소 각각

    중요

    도메인 관리자 또는 일반 사용자는 Windows Server 장애 조치 클러스터링(WSFC) 클러스터를 생성하려면 두 노드 모두에 대한 관리자 권한이 있어야 합니다. 그렇지 않으면 이전 명령이 실패하고 You do not have administrator privilege on servers라는 메시지가 반환됩니다.

  3. 클러스터가 생성된 후 다음 명령을 실행하여 파일 공유 감시를 연결합니다.

    Set-ClusterQuorum -FileShareWitness \\<FSx Windows Remote PowerShell Endpoint>\share\witness
AWS DevOps, DBA, DevOps 엔지니어

SQL Server 장애 조치 클러스터를 설치합니다.

WSFC 클러스터를 설정한 후 기본 인스턴스(노드1)에 SQL Server 클러스터를 설치합니다.

  1. 두 노드의 T 드라이브에 tempdb log 폴더를 생성합니다. 폴더는 PowerShell 명령에서 사용됩니다.

  2. SQL Server 설치용 SQL Server 미디어 파일을 두 노드에 모두 복사한 후 노드 1에서 다음 PowerShell 명령을 실행하여 노드 1에 SQL Server를 설치합니다.

D:\setup.exe /Q ` /ACTION=InstallFailoverCluster ` /IACCEPTSQLSERVERLICENSETERMS ` /FEATURES="SQL,IS,BC,Conn" ` /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server” ` /INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" ` /RSINSTALLMODE="FilesOnlyMode" ` /INSTANCEID="MSSQLSERVER" ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /INSTANCEDIR="C:\Program Files\Microsoft SQL Server" ` /ENU="True" ` /ERRORREPORTING=0 ` /SQMREPORTING=0 ` /SAPWD=“<Domain User password>” ` /SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" ` /SQLSYSADMINACCOUNTS="<domain\username>" ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="<domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server" ` /SQLUSERDBDIR="\\<FSX DNS name>\share\data" ` /SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" ` /SQLTEMPDBDIR="T:\tempdb" ` /SQLTEMPDBLOGDIR="T:\log" ` /SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, DevOps 엔지니어

클러스터에 보조 노드를 추가합니다.

보조 노드(노드 2)에 SQL Server를 추가하려면 다음 PowerShell 명령을 실행합니다.

D:\setup.exe /Q ` /ACTION=AddNode ` /IACCEPTSQLSERVERLICENSETERMS ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /CONFIRMIPDEPENDENCYCHANGE=1 ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, DevOps 엔지니어

SQL 서버 FCI를 테스트합니다.

  1. 노드 중 하나에 대한 Windows 인스턴스의 관리 도구에서 장애 조치 클러스터 관리자를 시작합니다.

  2. 노드로 이동하여 노드 상태가 실행 상태인지 확인합니다.

  3. 역할을 선택하고 SQL Serve(MSSQLSERVER)의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 이동 및 노드 선택을 선택합니다.

  4. 노드를 선택한 후에는 다른 노드에서 SQL Server가 실행되고 있어야 합니다.

DBA, DevOps 엔지니어
작업설명필요한 기술

리소스를 정리합니다.

리소스를 정리하려면 AWS 클라우드Formation 스택 삭제 프로세스를 사용하세요.

  1. AWS 클라우드Formation 콘솔을 엽니다.

  2. 스택 페이지에서 infra 스택을 선택합니다. 스택이 현재 실행 중이어야 합니다.

  3. 스택 세부 정보 창에서 삭제를 선택합니다.

  4. 메시지가 나타나면 스택 삭제를 선택하세요.

  5. ssm 스택에 대해 2~4단계를 반복합니다.

스택 삭제가 완료되면 스택의 상태가 DELETE_COMPLETE으로 바뀝니다. 상태가 DELETE_COMPLETE인 스택은 기본적으로 CloudFormation 콘솔에 표시되지 않습니다. 삭제된 스택을 표시하려면 AWS 클라우드Formation 콘솔에서 삭제된 스택 보기에 설명된 것처럼 스택 보기 필터를 변경해야 합니다.

삭제에 실패하면 스택이 DELETE_FAILED 상태가 됩니다. 해결 방법은 CloudFormation 설명서의 스택 삭제 실패를 참조하세요.

AWS DevOps, DBA, DevOps 엔지니어

리소스 정리

작업설명필요한 기술

리소스를 정리합니다.

리소스를 정리하려면 AWS 클라우드Formation 스택 삭제 프로세스를 사용하세요.

  1. AWS 클라우드Formation 콘솔을 엽니다.

  2. 스택 페이지에서 infra 스택을 선택합니다. 스택이 현재 실행 중이어야 합니다.

  3. 스택 세부 정보 창에서 삭제를 선택합니다.

  4. 메시지가 나타나면 스택 삭제를 선택하세요.

  5. ssm 스택에 대해 2~4단계를 반복합니다.

스택 삭제가 완료되면 스택의 상태가 DELETE_COMPLETE으로 바뀝니다. 상태가 DELETE_COMPLETE인 스택은 기본적으로 CloudFormation 콘솔에 표시되지 않습니다. 삭제된 스택을 표시하려면 AWS 클라우드Formation 콘솔에서 삭제된 스택 보기에 설명된 것처럼 스택 보기 필터를 변경해야 합니다.

삭제에 실패하면 스택이 DELETE_FAILED 상태가 됩니다. 해결 방법은 CloudFormation 설명서의 스택 삭제 실패를 참조하세요.

AWS DevOps, DBA, DevOps 엔지니어

문제 해결

문제Solution

AWS 클라우드Formation 템플릿 실패

CloudFormation 템플릿이 배포 도중에 실패하는 경우 다음을 수행합니다.

  1. AWS 클라우드Formation 콘솔을 엽니다.

  2. CloudFormation 콘솔의 스택 페이지에서 스택을 선택합니다.

  3. 이벤트를 선택하고 스택 상태를 확인합니다.

AWS Managed Microsoft AD 조인 실패

조인 문제를 해결하려면 다음 단계를 수행하세요.

  1. Systems Manager 콘솔을 엽니다.

  2. 배포 리전을 선택합니다.

  3. 왼쪽 창에서 자동화를 선택하고 실패한 자동화 런북을 찾습니다.

  4. 자동화 런북을 열고 실행 상태 및 실행 단계를 확인합니다.

  5. 실패한 단계의 세부 정보를 조사하여 정확한 오류 또는 실패를 확인합니다.

관련 리소스

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.