|
| 1 | +# AWS Aurora MySQL Blue/Green Deployment Automation Tool |
| 2 | + |
| 3 | +이 프로젝트의 내용은 AWS 환경 전반에 걸쳐 Amazon Aurora MySQL 클러스터의 블루/그린 배포를 관리하기 위한 종합적인 자동화 툴킷을 제공합니다. 이를 통해서 Aurora mysql의 블루그린 배포 프로세스를 단순화하고, 다운타임을 줄이며, 안전한 데이터베이스 버전 업그레이드를 원활하게 진행하는데 도움이 될 것입니다. |
| 4 | +아래에서 소개하는 각각의 파이썬 스크립트는 블루그린 배포 생성, 배포과정의 상태 모니터링, 블루와 그린의 전환과정, 배포이후 old 클러스터(블루클러스트)의 정리 작업을 포함한 전체 블루/그린 배포 수명 주기의 자동화된 관리를 제공합니다. 단일 및 다중 계정 배포를 모두 지원하여 소수의 인원으로 많은 수의 데이터베이스를 업그레이드 해야 하는 기업 환경에 가장 적합합니다. |
| 5 | + |
| 6 | +## Repository Structure |
| 7 | +``` |
| 8 | +. |
| 9 | +├── bluegreen_create.py # 새로운 Blue/Green 배포를 생성하는데 사용하는 스크립트입니다. |
| 10 | +├── blugreen_creation_check.py # Blue/Green 배포 생성과정에서 진행상태를 체크하는데 사용하는 스크립트입니다. |
| 11 | +├── bluegreen_switchover_precheck.py # Blue/Green을 전환하기전, 사전 체크하는 스크립트입니다. |
| 12 | +├── bluegreen_switchover.py # Blue/Green을 전환할때 사용하는 스크립트 입니다. |
| 13 | +├── bluegreen_delete_old.py # Blue/Green 배포 이후 구 클러스터를 삭제할때 사용하는 스크립트입니다. |
| 14 | +└── multi-account-bluegreen-deployment.py # 여러개의 어카운트, 리전에 있는 Aurora mysql 클러스터의 Blue/Green 배포를 생성합니다. |
| 15 | +``` |
| 16 | + |
| 17 | +## Usage Instructions |
| 18 | +### 사전준비사항 |
| 19 | +- Python 3.6 또는 그 이상 |
| 20 | +- AWS 자격 증명이 적절한 권한으로 구성되었는지 확인 |
| 21 | +- boto3 ,rich 라이브러리 설치 되었는지 확인 |
| 22 | + |
| 23 | +실행에 필요한 AWS 권한들: |
| 24 | +- rds:CreateBlueGreenDeployment |
| 25 | +- rds:DeleteBlueGreenDeployment |
| 26 | +- rds:DescribeBlueGreenDeployments |
| 27 | +- rds:SwitchoverBlueGreenDeployment |
| 28 | +- rds:DescribeDBClusters |
| 29 | +- rds:DeleteDBCluster |
| 30 | +- rds:DeleteDBInstance |
| 31 | +- sts:GetCallerIdentity |
| 32 | + |
| 33 | +### 환경 배포 과정 |
| 34 | +```bash |
| 35 | +# Clone the repository |
| 36 | +git clone <repository-url> |
| 37 | +cd aurora-bluegreen-deployment |
| 38 | + |
| 39 | +# Install required Python packages |
| 40 | +pip install boto3 rich |
| 41 | +``` |
| 42 | + |
| 43 | +### Quick Start |
| 44 | +1. Create a new Blue/Green deployment: |
| 45 | +```bash |
| 46 | +python bluegreen_create.py |
| 47 | +``` |
| 48 | +1. 위 스크립트를 실행할때 다음 사항들을 입력해주세요: |
| 49 | +- AWS region |
| 50 | +- DB Cluster identifier |
| 51 | +- Target engine version |
| 52 | +- Parameter group name |
| 53 | + |
| 54 | +2. 배포를 실행한 다음 배포상태를 아래 스크립트로 체크합니다: |
| 55 | +```bash |
| 56 | +python blugreen_creation_check.py --region us-west-2 |
| 57 | +``` |
| 58 | + |
| 59 | +3. 배포가 잘 되고 업그레이드가 잘 진행되었다면 사전체크를 진행하여 문제가 없다면, Blue/Green 전환을 진행합니다: |
| 60 | +```bash |
| 61 | +python bluegreen_switchover_pre_check,py us-west-2 |
| 62 | +python bluegreen_switchover.py us-west-2 |
| 63 | +``` |
| 64 | + |
| 65 | +4. 배포 이후 사용하지 않는 old cluster 삭제과정입니다: |
| 66 | +```bash |
| 67 | +# 특정리전에 있는 클러스터들을 모두 삭제할때 사용합니다. |
| 68 | +python bluegreen_delete_old.py --region us-west-2 |
| 69 | + |
| 70 | +# 특정 클러스터만 삭제할 때 사용합니다. |
| 71 | +python bluegreen_delete_old.py --region us-west-2 --cluster_name mydb |
| 72 | +``` |
| 73 | + |
| 74 | +### 멀티 어카운트, 멀티 리전에 배포하는 예제 |
| 75 | +1. Multi-account, Multi-region에 Blue/Green 배포를 생성하는 과정입니다. |
| 76 | +```bash |
| 77 | +# account_id,secret_name,region 정보가 accounts.csv에 들어가 있어야 합니다. |
| 78 | +python multi-account-bluegreen-deployment.py accounts.csv |
| 79 | +``` |
| 80 | + |
| 81 | + |
| 82 | +### Troubleshooting |
| 83 | +Common issues and solutions: |
| 84 | + |
| 85 | +1. Deployment Creation Fails |
| 86 | +- Error: "InvalidParameterCombination" |
| 87 | + - 새로운 데이터베이스 버전이 현재 버전과 호환되는지 확인하세요. |
| 88 | + - 설정한 파라미터 그룹이 실제로 존재하는지, 그리고 새 데이터베이스 버전과 호환되는지 확인하세요. |
| 89 | + - 원본 데이터베이스 클러스터가 현재 사용 가능한 상태인지 확인하세요. 유지보수 중이거나 다른 작업 중이면 배포를 시작할 수 없습니다. |
| 90 | + |
| 91 | +2. Switchover Issues |
| 92 | +- Error: "InvalidDBClusterState" |
| 93 | + - 새로 만든 데이터베이스 배포가 완전히 준비되어 "사용 가능(AVAILABLE)" 상태인지 확인하세요. 아직 준비 중이면 전환할 수 없습니다. |
| 94 | + - 데이터베이스에 예정된 유지보수 작업이 있는지 확인하세요. 있다면 먼저 처리해야 합니다. |
| 95 | + - 백업이나 복원 같은 다른 작업이 진행 중인지 확인하고, 완료될 때까지 기다리세요. |
| 96 | + |
| 97 | +3. Deletion Failures |
| 98 | +- Error: "ResourceBusy" |
| 99 | + - 데이터베이스에서 진행 중인 작업(예: 백업, 복원, 구성 변경)이 있다면 완료될 때까지 기다리세요. |
| 100 | + - 이 데이터베이스를 사용 중인 다른 서비스나 애플리케이션이 있는지 확인하세요. 있다면 먼저 연결을 끊어야 합니다. |
| 101 | + - 이 작업을 수행할 권한이 충분한지 확인하세요. 특히 데이터베이스 삭제 권한이 있는지 체크해보세요. |
| 102 | + |
| 103 | +Debug Mode: |
| 104 | +```bash |
| 105 | +# Enable debug logging |
| 106 | +export AWS_DEBUG=True |
| 107 | +export AWS_LOG_LEVEL=DEBUG |
| 108 | +``` |
| 109 | + |
| 110 | +## Data Flow |
| 111 | +The toolkit manages Aurora MySQL cluster upgrades through AWS Blue/Green deployment mechanism, coordinating creation, validation, and switchover processes. |
| 112 | + |
| 113 | +```ascii |
| 114 | +[Source Cluster] --> [Blue/Green Creation] --> [Green Cluster] |
| 115 | + | |
| 116 | +[Validation & Monitoring] <-------------------------| |
| 117 | + | |
| 118 | + v |
| 119 | +[Switchover] --> [Cleanup Old Resources] |
| 120 | +``` |
| 121 | + |
| 122 | +Blue/Green 배포 전 과정을 정리하면 다음과 같습니다: |
| 123 | +1. 생성 프로세스는 소스 클러스터를 검증하고 Green 환경을 생성합니다. |
| 124 | +2. 모니터링은 배포 상태를 확인하여 배포가 제대로 되었는지 검증합니다. |
| 125 | +3. 전환과정을 통해 효과적으로 Blue/Green 전환을 진행합니다. (사전에 꼭 먼저 체크하시기 바랍니다) |
| 126 | +4. 구 클러스터(old_로 시작하는 블루 클러스터)를 충분한 시간동안 확인하고 나서, 제거합니다. |
0 commit comments