기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Flink 2.2로 업그레이드: 전체 가이드
이 가이드에서는 Amazon Managed Service for Apache Flink 애플리케이션을 Flink 1.x에서 Flink 2.2로 업그레이드하기 위한 step-by-step 지침을 제공합니다. 이는 신중한 계획 및 테스트가 필요한 주요 버전 업그레이드입니다.
메이저 버전 업그레이드는 단방향입니다.
업그레이드 작업은 상태 보존을 통해 애플리케이션을 Flink 1.x에서 2.2로 이동할 수 있지만 2.2 상태에서 2.2에서 1.x로 되돌릴 수는 없습니다. 업그레이드 후 애플리케이션이 비정상 상태가 되면 롤백 API를 사용하여 최신 스냅샷에서 원래 1.x 상태로 1.x 버전으로 돌아갑니다.
사전 조건
업그레이드를 시작하기 전에:
테스트를 위한 비프로덕션 환경이 있는지 확인합니다.
현재 애플리케이션 구성 및 종속성 문서화
마이그레이션 경로 이해
업그레이드 환경은 애플리케이션의 Flink 2.2와의 호환성에 따라 달라집니다. 이러한 경로를 이해하면 적절하게 준비하고 현실적인 기대치를 설정하는 데 도움이 됩니다.
경로 1: 호환 가능한 바이너리 및 애플리케이션 상태
예상되는 사항:
업그레이드 작업 호출
애플리케이션 상태 전환으로 2.2로 마이그레이션 완료:
RUNNING→UPDATING→RUNNING데이터 손실 또는 재처리 없이 모든 애플리케이션 상태 보존
마이너 버전 마이그레이션과 동일한 경험
가장 적합: 호환되는 직렬화를 사용하는 상태 비저장 애플리케이션 또는 애플리케이션(Avro, 호환되는 Protobuf 스키마, 컬렉션POJOs)
경로 2: 이진 비호환성
예상되는 사항:
업그레이드 작업 호출
작업이 실패하고 작업 API 및 로그를 통해 이진 비호환성을 표시합니다.
자동 롤백이 활성화된 경우: 애플리케이션이 개입 없이 몇 분 내에 자동으로 롤백됩니다.
자동 롤백이 비활성화된 경우: 애플리케이션이 데이터 처리 없이 실행 상태로 유지되고 수동으로 이전 버전으로 롤백합니다.
바이너리가 수정되면 경로 1과 유사한 환경에 UpdateApplication API를 사용합니다.
가장 적합: Flink 작업 시작 중에 감지된 제거된 APIs 사용하는 애플리케이션
경로 3: 호환되지 않는 애플리케이션 상태
예상되는 사항:
업그레이드 작업 호출
마이그레이션이 처음에 성공하는 것처럼 보임
상태 복원이 실패하면 애플리케이션이 몇 초 내에 재시작 루프에 들어갑니다.
연속 재시작을 보여주는 CloudWatch 지표를 통해 장애 감지
롤백 작업 수동 호출
롤백을 시작한 후 몇 분 이내에 프로덕션으로 돌아갑니다.
상태 마이그레이션 애플리케이션 검토
가장 적합: 상태 직렬화 비호환성이 있는 애플리케이션(컬렉션POJOs, 특정 Kryo 직렬화 상태)
참고
프로덕션 애플리케이션에 대해 동일한 단계를 수행하기 전에 프로덕션 애플리케이션의 복제본을 생성하고 복제본에서 다음 각 업그레이드 단계를 테스트하는 것이 좋습니다.
1단계: 준비
애플리케이션 코드 업데이트
Flink 2.2와 호환되도록 애플리케이션 코드를 업데이트합니다.
pom.xml또는에서 Flink 종속성을 버전 2.2.0으로 업데이트build.gradle커넥터 종속성을 Flink 2.2 호환 버전으로 업데이트( 참조커넥터 가용성)
더 이상 사용되지 않는 API 사용 제거:
DataSet API를 DataStream API 또는 테이블 API/SQL로 교체
레거시
SourceFunction/SinkFunction를 FLIP-27 소스 및 FLIP-143 싱크 APIs로 대체Scala API 사용량을 Java API로 바꾸기
Java 17로 업데이트
업데이트된 애플리케이션 코드 업로드
Flink 2.2 종속성을 사용하여 애플리케이션 JAR 빌드
현재 JAR과 다른 파일 이름으로 Amazon S3에 업로드(예:
my-app-flink-2.2.jar)업그레이드 단계에서 사용할 S3 버킷 및 키 기록
2단계: 자동 롤백 활성화
자동 롤백을 사용하면 업그레이드에 실패할 경우 Amazon Managed Service for Apache Flink가 자동으로 이전 버전으로 되돌릴 수 있습니다.
자동 롤백 상태 확인
AWS Management Console:
애플리케이션으로 이동
구성 선택
애플리케이션 설정에서 시스템 롤백이 활성화되어 있는지 확인합니다.
AWS CLI:
aws kinesisanalyticsv2 describe-application \ --application-name MyApplication \ --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'
자동 롤백 활성화(활성화되지 않은 경우)
aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --application-configuration-update '{ "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": true } }'
3단계: 스냅샷 생성(선택 사항)
애플리케이션에 자동 스냅샷이 활성화된 경우이 단계를 건너뛰고, 그렇지 않으면 업그레이드하기 전에 애플리케이션의 스냅샷을 생성하여 애플리케이션의 상태를 저장할 수 있습니다.
실행 중인 애플리케이션에서 스냅샷 생성
AWS Management Console:
애플리케이션으로 이동
스냅샷 선택
스냅샷 생성을 선택합니다.
스냅샷 이름 입력(예:
pre-flink-2.2-upgrade)생성을 선택합니다.
AWS CLI:
aws kinesisanalyticsv2 create-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade
스냅샷 생성 확인
aws kinesisanalyticsv2 describe-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade
계속하기 READY 전에 SnapshotStatus가 될 때까지 기다립니다.
4단계: 애플리케이션 업그레이드
UpdateApplication 작업을 사용하여 Flink 애플리케이션을 업그레이드할 수 있습니다.
UpdateApplication API는 다음과 같은 여러 가지 방식으로 직접적으로 호출할 수 있습니다.
AWS Management Console을 사용합니다.
AWS Management Console에서 앱 페이지로 이동합니다.
구성을 선택합니다.
새 런타임과 복원 구성이라고도 하는 시작하려는 스냅샷을 선택합니다. 최신 스냅샷에서 앱을 시작하려면 최신 설정을 복원 구성으로 사용합니다. Amazon S3에 있는 새로 업그레이드된 애플리케이션 JAR/zip 파일을 지정합니다.
update-application작업을 사용합니다 AWS CLI. 를 사용합니다 CloudFormation.
RuntimeEnvironment필드를 업데이트합니다. 이전에는 CloudFormation 이 애플리케이션을 삭제한 뒤 새로 생성하여 스냅샷과 기타 앱 기록이 손실되었습니다. 이제RuntimeEnvironment가 현재를 CloudFormation 업데이트하고 애플리케이션을 삭제하지 않습니다.
AWS SDK를 사용합니다.
원하는 프로그래밍 언어의 SDK 설명서를 참조하세요.
UpdateApplication을(를) 참조하세요.
애플리케이션이 RUNNING 상태이거나 READY 상태로 중지된 경우 업그레이드를 수행할 수 있습니다. Amazon Managed Service for Apache Flink는 원래 런타임 버전과 대상 런타임 버전 간의 호환성을 검증합니다. 이 호환성 검사는 상태UpdateApplication일 때를 수행하거나 RUNNING 상태일 때 업그레이드할 StartApplication 때 실행됩니다READY.
실행 중 상태에서 업그레이드
aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'
READY 상태에서 업그레이드
aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'
5단계: 업그레이드 모니터링
호환성 검사
작업 API를 사용하여 업그레이드 상태를 확인합니다. 이진 비호환성 또는 작업 시작 문제가 있는 경우 로그와 함께 업그레이드 작업이 실패합니다.
업그레이드 작업이 성공했지만 애플리케이션이 재시작 루프에 멈춘 경우 상태가 새 Flink 버전과 호환되지 않거나 업데이트된 코드에 문제가 있는 것입니다. 상태 비호환성 문제를 식별하는 Flink 2.2 업그레이드를 위한 상태 호환성 가이드 방법을 검토합니다.
애플리케이션 상태 모니터링
애플리케이션 상태:
애플리케이션 상태가 전환되어야 함:
RUNNING→UPDATING→RUNNING애플리케이션의 런타임을 확인합니다. 2.2인 경우 업그레이드 작업이 성공한 것입니다.
애플리케이션이에
RUNNING있지만 여전히 이전 런타임에 있는 경우 자동 롤백이 시작되었습니다. 작업 API는 작업을 로 표시합니다FAILED. 로그를 확인하여 실패에 대한 예외를 찾습니다.
또한 CloudWatch에서 이러한 지표를 모니터링합니다.
지표 다시 시작:
numRestarts: 예기치 않은 재시작 모니터링 -가 0이고uptime또는numRestarts가 증가하는 경우 업그레이드runningTime가 성공합니다.
체크포인트 지표:
lastCheckpointDuration: 업그레이드 전 값과 유사해야 합니다.numberOfFailedCheckpoints: 0을 유지해야 합니다.
6단계: 애플리케이션 동작 검증
애플리케이션이 Flink 2.2에서 실행된 후:
기능 검증
소스에서 데이터를 읽고 있는지 확인
싱크에 데이터가 기록되고 있는지 확인
비즈니스 로직이 예상 결과를 생성하는지 확인
출력과 업그레이드 전 기준 비교
성능 검증
지연 시간 지표 모니터링(end-to-end 처리 시간)
처리량 지표 모니터링(초당 레코드 수)
체크포인트 기간 및 크기 모니터링
메모리 및 CPU 사용률 모니터링
24시간 이상 실행
다음을 보장하기 위해 프로덕션 환경에서 최소 24시간 동안 애플리케이션을 실행하도록 허용합니다.
메모리 누수 없음
안정적인 체크포인트 동작
예기치 않은 재시작 없음
일관된 처리량
7단계: 롤백 절차
업그레이드에 실패하거나 애플리케이션이 실행 중이지만 비정상인 경우 이전 버전으로 롤백합니다.
자동 롤백
자동 롤백이 활성화되어 있고 시작 중에 업그레이드가 실패하면 Amazon Managed Service for Apache Flink가 자동으로 이전 버전으로 돌아갑니다.
수동 롤백
애플리케이션이 실행 중이지만 비정상인 경우 RollbackApplication API를 사용합니다.
AWS Management Console:
애플리케이션으로 이동
작업 → 롤백을 선택합니다.
롤백 확인
AWS CLI:
aws kinesisanalyticsv2 rollback-application \ --application-name MyApplication \ --current-application-version-id <version-id>
롤백 중에 발생하는 일:
애플리케이션 중지
런타임이 이전 Flink 버전으로 되돌림
애플리케이션 코드가 이전 JAR로 되돌림
업그레이드 전에 마지막으로 성공한 스냅샷에서 애플리케이션이 다시 시작됩니다.
중요
Flink 1.x에서는 Flink 2.2 스냅샷을 복원할 수 없습니다.
롤백은 업그레이드 전에 생성된 스냅샷을 사용합니다.
업그레이드하기 전에 항상 스냅샷 생성(3단계)
다음 단계
업그레이드 중 질문이나 문제는 섹션을 참조Managed Service for Apache Flink 문제 해결하거나 AWS Support에 문의하세요.