Automation 런북으로 EC2 Windows 인스턴스 업그레이드
Automation 런북으로 EC2 Windows 인스턴스 업그레이드 (Use Automation runbooks to upgrade an EC2 Windows instance)
AWS Systems Manager Automation 런북(runbook)으로 AWS의 Windows 및 SQL Server 인스턴스를 자동 업그레이드할 수 있어요.
출처: 문서
본문
관련 서비스 (Related services)
자동 업그레이드 프로세스에는 다음 AWS 서비스가 사용돼요.
- AWS Systems Manager – AWS 리소스를 중앙에서 관리하기 위한 강력하고 통합된 인터페이스예요. 자세한 내용은 AWS Systems Manager User Guide를 참고하세요.
- AWS Systems Manager Agent (SSM Agent) – Amazon EC2 인스턴스, 온프레미스 서버 또는 가상 머신(VM)에 설치하고 구성할 수 있는 Amazon 소프트웨어예요. SSM Agent는 Systems Manager가 이러한 리소스를 업데이트, 관리, 구성할 수 있게 해줘요. 에이전트는 AWS 클라우드의 Systems Manager 서비스에서 요청을 처리한 다음 요청에 지정된 대로 실행해요. 자세한 내용은 AWS Systems Manager User Guide의 Working with SSM Agent를 참고하세요.
- AWS Systems Manager SSM 런북 – SSM 런북은 Systems Manager가 관리형 인스턴스에서 수행하는 작업을 정의해요. SSM 런북은 JavaScript Object Notation(JSON) 또는 YAML을 사용하며, 지정하는 단계와 파라미터를 포함해요. 이 항목은 자동화에 두 개의 Systems Manager SSM 런북을 사용해요. 자세한 내용은 AWS Systems Manager User Guide의 AWS Systems Manager Automation runbook reference를 참고하세요.
실행 옵션 (Execution options)
Systems Manager 콘솔에서 Automation을 선택한 다음 Execute를 선택해요. Automation 문서를 선택하면 자동화 실행 옵션을 선택하라는 메시지가 표시돼요. 다음 옵션 중에서 선택해요. 이 항목의 이후 경로 단계에서는 Simple execution 옵션을 사용해요.
Simple execution
단일 인스턴스를 업데이트하려고 하지만 결과를 감사하기 위해 각 자동화 단계를 거치고 싶지 않을 때 이 옵션을 선택해요. 이 옵션은 뒤이은 업그레이드 단계에서 자세히 설명돼요.
Rate control
둘 이상의 인스턴스에 업그레이드를 적용하려면 이 옵션을 선택해요. 다음 설정을 정의해요.
- Parameter – Multi-Account and Region 설정에도 설정되는 이 설정은 자동화가 어떻게 분기되는지 정의해요.
- Targets – 자동화를 적용할 대상(target)을 선택해요. 이 설정은 Multi-Account and Region 설정에도 설정돼요.
- Parameter Values – 자동화 문서 파라미터에 정의된 값을 사용해요.
- Resource Group – AWS에서 리소스는 작업할 수 있는 엔터티예요. 예를 들어 Amazon EC2 인스턴스, AWS CloudFormation 스택, Amazon S3 버킷이 있어요. 여러 리소스로 작업한다면 매번 AWS 서비스를 오가기보다 그룹으로 관리하는 것이 유용할 수 있어요. 어떤 경우에는 애플리케이션 계층을 구성하는 EC2 인스턴스처럼 많은 수의 관련 리소스를 관리해야 할 수도 있어요. 이 경우 한 번에 이러한 리소스에 대량 작업을 수행해야 할 가능성이 커요.
- Tags – 태그는 목적, 소유자, 환경 같은 다양한 방식으로 AWS 리소스를 분류하는 데 도움을 줘요. 같은 유형의 리소스가 많을 때 유용해요. 지정된 태그를 사용해 특정 리소스를 빠르게 식별할 수 있어요.
- Rate Control – Rate Control도 Multi-Account and Region 설정에 설정돼요. Rate control 파라미터를 설정하면 대상 수 또는 플릿의 백분율로 자동화를 적용할 플릿의 양을 정의해요.
Multi-Account and Region
Rate Control 아래에 지정된 파라미터와 Multi-Account and Region 설정에서도 사용되는 파라미터 외에 추가 설정이 두 개 더 있어요.
- Accounts and organizational units (OUs) – 자동화를 실행할 여러 계정을 지정해요.
- AWS Regions – 자동화를 실행할 여러 AWS 리전을 지정해요.
Manual execution
이 옵션은 Simple execution과 비슷하지만, 각 자동화 단계를 단계별로 진행하며 결과를 감사할 수 있어요.
Windows Server 업그레이드 (Upgrade Windows Server)
AWSEC2-CloneInstanceAndUpgradeWindows 런북은 계정의 Windows Server 인스턴스에서 Amazon Machine Image(AMI)를 만들고, 이 AMI를 선택한 지원 버전으로 업그레이드해요. 이 다단계 프로세스는 완료하는 데 최대 두 시간이 걸릴 수 있어요.
자동 업그레이드 프로세스에는 두 개의 AMI가 포함돼요.
- 현재 실행 중인 인스턴스(Current running instance) – 첫 번째 AMI는 업그레이드되지 않는 현재 실행 중인 인스턴스예요. 이 AMI는 제자리 업그레이드(in-place upgrade)를 실행할 다른 인스턴스를 시작하는 데 사용돼요. 프로세스가 완료되면 원본 인스턴스 유지를 명시적으로 요청하지 않는 한 이 AMI는 계정에서 삭제돼요. 이 설정은
KeepPreUpgradeImageBackUp파라미터로 처리돼요(기본값false, 즉 기본적으로 AMI가 삭제됨). - 업그레이드된 AMI(Upgraded AMI) – 이 AMI는 자동화 프로세스의 결과물이에요.
최종 결과는 하나의 AMI, 즉 업그레이드된 인스턴스의 AMI예요.
업그레이드가 완료되면 Amazon VPC에서 새 AMI를 시작해 애플리케이션 기능을 테스트할 수 있어요. 테스트 후, 또 다른 업그레이드를 수행하기 전에 업그레이드된 인스턴스로 완전히 전환하기 전에 애플리케이션 중단 시간을 예약해요.
사전 요구 사항 (Prerequisites)
AWS Systems Manager Automation 문서로 Windows Server 업그레이드를 자동화하려면 다음 작업을 수행해야 해요.
- Systems Manager가 Amazon EC2 인스턴스에서 자동화 작업을 수행하도록 지정된 IAM 정책이 있는 IAM 역할을 만들고 Systems Manager 사용 사전 요구 사항을 충족하는지 확인해요. 자세한 내용은 AWS Identity and Access Management User Guide의 Creating a role to delegate permissions to an AWS service를 참고하세요.
- 자동화 실행 방식을 선택해요. 실행 옵션은 Simple execution, Rate control, Multi-account and Region, Manual execution이에요. 이 옵션에 대한 자세한 내용은 실행 옵션을 참고하세요.
- 인스턴스에 SSM Agent가 설치되어 있는지 확인해요. 자세한 내용은 Windows Server용 Amazon EC2 인스턴스에 SSM Agent 설치 및 구성을 참고하세요.
- 인스턴스에 Windows PowerShell 3.0 이상이 설치되어 있어야 해요.
- Microsoft Active Directory 도메인에 가입된 인스턴스의 경우, 호스트 이름 충돌을 피하기 위해 도메인 컨트롤러에 연결되지 않는 SubnetId를 지정할 것을 권장해요.
- 인스턴스 서브넷에 인터넷으로의 아웃바운드 연결이 있어야 해요. 이는 Amazon S3 같은 AWS 서비스에 접근하고 Microsoft에서 패치를 다운로드하는 데 필요해요. 이 요구 사항은 서브넷이 공용 서브넷이고 인스턴스에 공용 IP 주소가 있거나, 인터넷 트래픽을 공용 NAT 장치로 보내는 라우트가 있는 프라이빗 서브넷이면 충족돼요.
- 이 Automation은 Windows Server 2008 R2, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019를 실행하는 인스턴스와 함께 작동해요.
- 인스턴스 부팅 디스크에 20GB의 여유 디스크 공간이 있는지 확인해요.
- 인스턴스가 AWS가 제공하는 Windows 라이선스를 사용하지 않으면 Windows Server 2012 R2 설치 미디어가 포함된 Amazon EBS 스냅샷 ID를 지정해요. 이렇게 하려면:
- Amazon EC2 인스턴스가 Windows Server 2012 이상을 실행 중인지 확인해요.
- 인스턴스가 실행 중인 가용 영역과 같은 가용 영역에 6GB Amazon EBS 볼륨을 만들어요.
- 볼륨을 인스턴스에 연결해요. 예를 들어 D 드라이브로 마운트해요.
- ISO의 상황에 맞는(오른쪽 클릭) 메뉴를 열고, 예를 들어 E 드라이브로 인스턴스에 마운트해요.
- ISO의 내용을 E:\에서 D:\로 복사해요.
- 위 2단계에서 만든 6GB 볼륨의 Amazon EBS 스냅샷을 만들어요.
Windows Server 업그레이드 제한 사항 (Windows Server upgrade limitations)
이 자동화는 Windows 도메인 컨트롤러, 클러스터, Windows 데스크톱 운영체제의 업그레이드를 지원하지 않아요. 또한 다음 역할이 설치된 Windows Server용 Amazon EC2 인스턴스는 지원하지 않아요.
- Remote Desktop Session Host (RDSH)
- Remote Desktop Connection Broker (RDCB)
- Remote Desktop Virtualization Host (RDVH)
- Remote Desktop Web Access (RDWA)
Windows Server 자동 업그레이드 단계 (Steps to perform an automated upgrade of Windows Server)
다음 단계에 따라 AWSEC2-CloneInstanceAndUpgradeWindows automation 런북으로 Windows Server 인스턴스를 업그레이드해요.
- AWS Management Console에서 Systems Manager를 엽니다.
- 왼쪽 탐색 창의 Change Management 아래에서 Automation을 선택해요.
- Execute automation을 선택해요.
AWSEC2-CloneInstanceAndUpgradeWindows라는 automation 문서를 검색해요.- 문서 이름이 나타나면 선택해요. 선택하면 문서 세부 정보가 나타나요.
- Execute automation을 선택해 이 문서의 파라미터를 입력해요. 페이지 상단에서 Simple execution을 선택한 상태로 둬요.
- 다음 지침에 따라 요청된 파라미터를 입력해요.
- InstanceID – 유형: String (필수). SSM 에이전트가 설치된 Windows Server 2008 R2, 2012 R2, 2016 또는 2019를 실행하는 인스턴스.
- InstanceProfile – 유형: String (필수). IAM 인스턴스 프로필. Amazon EC2 인스턴스와 AWS AMI에 대해 Systems Manager 자동화를 수행하는 데 사용되는 IAM 역할이에요. 자세한 내용은 AWS Systems Manager User Guide의 Configure EC2 instance permissions를 참고하세요.
- TargetWindowsVersion – 유형: String (필수). 대상 Windows 버전을 선택해요.
- SubnetId – 유형: String (필수). 업그레이드 프로세스용 서브넷이자 소스 EC2 인스턴스가 있는 서브넷이에요. 서브넷에 Amazon S3를 포함한 AWS 서비스와 Microsoft(패치 다운로드용)로의 아웃바운드 연결이 있는지 확인해요.
- KeepPreUpgradedBackUp – 유형: String (선택 사항). 이 파라미터가
true로 설정되면 자동화가 인스턴스에서 만든 이미지를 유지해요. 기본 설정은false예요. - RebootInstanceBeforeTakingImage – 유형: String (선택 사항). 기본값은
false(재부팅 없음)예요. 이 파라미터가true로 설정되면 Systems Manager가 업그레이드용 AMI를 만들기 전에 인스턴스를 재부팅해요.
- 파라미터를 입력한 후 Execute를 선택해요. 자동화가 시작되면 실행 진행 상황을 모니터링할 수 있어요.
- 자동화가 완료되면 AMI ID가 표시돼요. AMI를 시작해 Windows OS가 업그레이드되었는지 확인할 수 있어요. 참고 자동화가 모든 단계를 실행할 필요는 없어요. 단계는 자동화와 인스턴스의 동작에 따라 조건부예요. Systems Manager가 필요하지 않은 일부 단계를 건너뛸 수 있어요. 또한 일부 단계는 시간 초과될 수 있어요. Systems Manager는 모든 최신 패치를 업그레이드하고 설치하려고 시도해요. 하지만 주어진 단계에 대한 정의 가능한 시간 초과 설정에 따라 패치가 시간 초과되는 경우가 있어요. 이 경우 Systems Manager 자동화는 내부 OS가 대상 Windows Server 버전으로 업그레이드되도록 다음 단계로 계속 진행해요.
- 자동화가 완료된 후 AMI ID를 사용해 Amazon EC2 인스턴스를 시작해 업그레이드를 검토할 수 있어요. AWS AMI에서 Amazon EC2 인스턴스를 만드는 방법에 대한 자세한 내용은 How do I launch an EC2 instance from a custom AMI?을 참고하세요.
SQL Server 업그레이드 (Upgrade SQL Server)
AWSEC2-CloneInstanceAndUpgradeSQLServer 스크립트는 계정의 SQL Server를 실행하는 Amazon EC2 인스턴스에서 AMI를 만든 다음, AMI를 더 최신 버전의 SQL Server로 업그레이드해요. 이 다단계 프로세스는 완료하는 데 최대 두 시간이 걸릴 수 있어요.
이 워크플로에서 자동화는 인스턴스에서 AMI를 만든 다음 제공된 서브넷에서 새 AMI를 시작해요. 그런 다음 자동화가 SQL Server의 제자리 업그레이드를 수행해요. 업그레이드가 완료된 후 자동화는 업그레이드된 인스턴스를 종료하기 전에 새 AMI를 만들어요.
자동 업그레이드 프로세스에는 두 개의 AMI가 포함돼요.
- 현재 실행 중인 인스턴스(Current running instance) – 첫 번째 AMI는 업그레이드되지 않는 현재 실행 중인 인스턴스예요. 이 AMI는 제자리 업그레이드를 실행할 다른 인스턴스를 시작하는 데 사용돼요. 프로세스가 완료되면 원본 인스턴스 유지를 명시적으로 요청하지 않는 한 이 AMI는 계정에서 삭제돼요. 이 설정은
KeepPreUpgradeImageBackUp파라미터로 처리돼요(기본값false). - 업그레이드된 AMI(Upgraded AMI) – 이 AMI는 자동화 프로세스의 결과물이에요.
최종 결과는 하나의 AMI, 즉 업그레이드된 인스턴스의 AMI예요.
업그레이드가 완료되면 Amazon VPC에서 새 AMI를 시작해 애플리케이션 기능을 테스트할 수 있어요. 테스트 후, 또 다른 업그레이드를 수행하기 전에 업그레이드된 인스턴스로 완전히 전환하기 전에 애플리케이션 중단 시간을 예약해요.
사전 요구 사항 (Prerequisites)
AWS Systems Manager Automation 문서로 SQL Server 업그레이드를 자동화하려면 다음 작업을 수행해야 해요.
- Systems Manager가 Amazon EC2 인스턴스에서 자동화 작업을 수행하도록 지정된 IAM 정책이 있는 IAM 역할을 만들고 Systems Manager 사용 사전 요구 사항을 충족하는지 확인해요. 자세한 내용은 AWS Identity and Access Management User Guide의 Creating a role to delegate permissions to an AWS service를 참고하세요.
- 자동화 실행 방식을 선택해요. 실행 옵션은 Simple execution, Rate control, Multi-account and Region, Manual execution이에요. 이 옵션에 대한 자세한 내용은 실행 옵션을 참고하세요.
- Amazon EC2 인스턴스가 Windows Server 2008 R2 이상과 SQL Server 2008 이상을 사용해야 해요.
- 인스턴스에 SSM Agent가 설치되어 있는지 확인해요. 자세한 내용은 Windows Server용 Amazon EC2 인스턴스에서 SSM Agent 작업을 참고하세요.
- 인스턴스에 충분한 여유 디스크 공간이 있는지 확인해요. Windows Server 2008 R2에서 2012 R2로, 또는 Windows Server 2012 R2에서 이후 운영체제로 업그레이드하는 경우 인스턴스 부팅 디스크에 20GB의 여유 공간이 있는지 확인해요. Windows Server 2008 R2에서 2016 이상으로 업그레이드하는 경우 인스턴스 부팅 디스크에 40GB의 여유 공간이 있는지 확인해요.
- BYOL(Bring Your Own License) SQL Server 버전을 사용하는 인스턴스의 경우 다음 추가 사전 요구 사항이 적용돼요.
- 대상 SQL Server 설치 미디어가 포함된 Amazon EBS 스냅샷 ID를 제공해요. 이렇게 하려면:
- Amazon EC2 인스턴스가 Windows Server 2008 R2 이상을 실행 중인지 확인해요.
- 인스턴스가 실행 중인 가용 영역과 같은 가용 영역에 6GB Amazon EBS 볼륨을 만들어요.
- 볼륨을 인스턴스에 연결해요. 예를 들어 D 드라이브로 마운트해요.
- ISO의 상황에 맞는(오른쪽 클릭) 메뉴를 열고, 예를 들어 E 드라이브로 인스턴스에 마운트해요.
- ISO의 내용을 E:\에서 D:\로 복사해요.
- 위 2단계에서 만든 6GB 볼륨의 Amazon EBS 스냅샷을 만들어요.
- 대상 SQL Server 설치 미디어가 포함된 Amazon EBS 스냅샷 ID를 제공해요. 이렇게 하려면:
SQL Server 자동 업그레이드 제한 사항 (SQL Server automated upgrade limitations)
AWSEC2-CloneInstanceAndUpgradeSQLServer 런북으로 자동 업그레이드를 수행할 때는 다음 제한 사항이 적용돼요.
- Windows 인증을 사용하는 SQL Server에서만 업그레이드를 수행할 수 있어요.
- 인스턴스에 보류 중인 보안 패치 업데이트가 없는지 확인해요. Control Panel을 연 다음 Check for updates를 선택해요.
- HA 및 미러링 모드의 SQL Server 배포는 지원되지 않아요.
SQL Server 자동 업그레이드 단계 (Steps to perform an automated upgrade of SQL Server)
다음 단계에 따라 AWSEC2-CloneInstanceAndUpgradeSQLServer automation 런북으로 SQL Server를 업그레이드해요.
- 아직 다운로드하지 않았다면 SQL Server 2016
.iso파일을 다운로드하고 소스 서버에 마운트해요. .iso파일이 마운트되면 모든 구성요소 파일을 복사해 선택한 볼륨에 배치해요.- 볼륨의 Amazon EBS 스냅샷을 만들고 스냅샷 ID를 클립보드에 복사해 나중에 사용해요. 자세한 내용은 Amazon EBS User Guide의 Create Amazon EBS snapshots를 참고하세요.
- Amazon EC2 소스 인스턴스에 인스턴스 프로필을 연결해요. 이렇게 하면 Systems Manager가 AWS Systems Manager 서비스에 추가된 후 EC2 인스턴스와 통신하고 명령을 실행할 수 있어요. 이 예시에서는 역할에
AmazonSSMManagedInstanceCore정책이 연결된SSM-EC2-Profile-Role이라는 역할을 사용했어요. - AWS Systems Manager 콘솔의 왼쪽 탐색 창에서 Managed Instances를 선택해요. EC2 인스턴스가 관리형 인스턴스 목록에 있는지 확인해요. 몇 분 후에도 인스턴스가 보이지 않으면 AWS Systems Manager User Guide의 Where Are My Instances?를 참고하세요.
- 왼쪽 탐색 창의 Change Management에서 Automation을 선택해요.
- Execute automation을 선택해요.
AWSEC2-CloneInstanceAndUpgradeSQLServer라는 automation 문서를 검색해요.AWSEC2-CloneInstanceAndUpgradeSQLServerSSM 문서를 선택한 다음 Next를 선택해요.- Simple execution 옵션이 선택되어 있는지 확인해요.
- 다음 지침에 따라 요청된 파라미터를 입력해요.
- InstanceId – 유형: String (필수). SQL Server 2008 R2(이상)를 실행하는 인스턴스.
- IamInstanceProfile – 유형: String (필수). IAM 인스턴스 프로필.
- SQLServerSnapshotId – 유형: String (필수). 대상 SQL Server 설치 미디어의 스냅샷 ID. SQL Server 라이선스 포함 인스턴스에는 이 파라미터가 필요하지 않아요.
- SubnetId – 유형: String (필수). 업그레이드 프로세스용 서브넷이자 소스 EC2 인스턴스가 있는 서브넷. 서브넷에 Amazon S3를 포함한 AWS 서비스와 Microsoft(패치 다운로드용)로의 아웃바운드 연결이 있는지 확인해요.
- KeepPreUpgradedBackUp – 유형: String (선택 사항). 이 파라미터가
true로 설정되면 자동화가 인스턴스에서 만든 이미지를 유지해요. 기본 설정은false예요. - RebootInstanceBeforeTakingImage – 유형: String (선택 사항). 기본값은
false(재부팅 없음)예요. 이 파라미터가true로 설정되면 Systems Manager가 업그레이드용 AMI를 만들기 전에 인스턴스를 재부팅해요. - TargetSQLVersion – 유형: String (선택 사항). 대상 SQL Server 버전. 기본값은
2016이에요.
- 파라미터를 입력한 후 Execute를 선택해요. 자동화가 시작되면 실행 진행 상황을 모니터링할 수 있어요.
- Execution status가 Success를 표시하면 Outputs를 펼쳐 AMI 정보를 확인해요. AMI ID를 사용해 선택한 VPC의 SQL Server 인스턴스를 시작할 수 있어요.
- Amazon EC2 콘솔을 엽니다. 왼쪽 탐색 창에서 AMIs를 선택해요. 새 AMI가 보여야 해요.
- 새 SQL Server 버전이 성공적으로 설치되었는지 확인하려면 새 AMI를 선택하고 Launch를 선택해요.
- AMI에 원하는 인스턴스 유형, 배포할 VPC와 서브넷, 사용할 스토리지를 선택해요. 새 인스턴스를 AMI에서 시작하므로 볼륨이 시작하는 새 EC2 인스턴스에 포함하는 옵션으로 제공돼요. 이 볼륨 중 일부를 제거하거나 볼륨을 추가할 수 있어요.
- 인스턴스를 식별하는 데 도움이 되는 태그를 추가해요.
- 보안 그룹을 인스턴스에 추가해요.
- Launch Instance를 선택해요.
- 인스턴스의 태그 이름을 선택하고 Actions 드롭다운에서 Connect를 선택해요.
- 새 SQL Server 버전이 새 인스턴스의 데이터베이스 엔진인지 확인해요.