Auto Scaling을 사용하여 IBM WebSphere Application Server에서 Amazon의 Apache TomcatEC2으로 마이그레이션 - AWS 권장 가이드

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

Auto Scaling을 사용하여 IBM WebSphere Application Server에서 Amazon의 Apache TomcatEC2으로 마이그레이션

작성자: Kevin Yung(AWS) 및 Afroz Khan(AWS)

R 유형: 리플랫포밍

소스: 애플리케이션

대상: Auto Scaling이 활성화된 Amazon EC2 인스턴스의 Apache Tomcat

작성자: AWS

환경: PoC 또는 파일럿

기술: 웹 및 모바일 앱, 마이그레이션

워크로드: 오픈 소스 IBM

AWS 서비스: Amazon EC2

요약

이 패턴은 Amazon EC2 Auto Scaling이 활성화된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 IBM WebSphere Application Server에서 Apache Tomcat으로 Java 애플리케이션을 마이그레이션하기 위한 지침을 제공합니다. 

이 패턴을 사용하면 다음을 달성할 수 있습니다.

  • IBM 라이선스 비용 절감

  • 다중 AZ 배포를 사용하는 고가용성

  • Amazon EC2 Auto Scaling을 통한 애플리케이션 복원력 개선

사전 조건 및 제한 사항

사전 조건 

  • Java 애플리케이션(버전 7.x 또는 8.x )은 LAMP 스택으로 개발해야 합니다.

  • 대상 상태는 Linux 호스트에서 Java 애플리케이션을 호스팅하는 것입니다. 이 패턴은 Red Hat Enterprise Linux(RHEL) 7 환경에서 성공적으로 구현되었습니다. 다른 Linux 배포판도 이 패턴을 따를 수 있지만 Apache Tomcat 배포판의 구성을 참조해야 합니다.

  • Java 애플리케이션의 종속성을 이해해야 합니다.

  • 변경하려면 Java 애플리케이션 소스 코드에 액세스할 수 있어야 합니다.

제한 및 변경 사항 리플랫포밍

  • 엔터프라이즈 아카이브(EAR) 구성 요소를 이해하고 모든 라이브러리가 웹 구성 요소 WAR 파일에 패키징되었는지 확인해야 합니다. Apache Maven WAR 플러그인을 구성하고 WAR 파일 아티팩트를 생성해야 합니다.

  • Apache Tomcat 8을 사용할 때 servlet-api.jar 및 응용 프로그램 패키지에 내장된 jar 파일 간에 알려져 있는 충돌이 존재합니다. 이 문제를 해결하려면 응용 프로그램 패키지에서 servlet-api.jar를 삭제합니다.

  • Apache Tomcat 구성의 클래스 경로에 있는 WEB-INF/리소스를 구성해야 합니다. https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html 기본적으로 JAR 라이브러리는 디렉터리에 로드되지 않습니다. 또는, src/main/resources 아래에 모든 리소스를 배포할 수도 있습니다.

  • Java 응용 프로그램 내에서 하드 코딩된 컨텍스트 루트가 있는지 확인하고 Apache Tomcat의 새 컨텍스트 루트를 업데이트하십시오.

  • JVM 런타임 옵션을 설정하려면 Apache Tomcat bin 폴더에서 구성 파일 setenv.sh, 예를 들어 JAVA_, OPTSJAVA_HOME 등을 생성할 수 있습니다. 

  • 인증은 컨테이너 수준에서 구성되며 Apache Tomcat 구성에서 영역으로 설정됩니다. 인증은 다음 세 가지 영역 중 하나에 대해 설정됩니다. 

    • JDBC Database Realm은 JDBC 드라이버가 액세스하는 관계형 데이터베이스에서 사용자를 검색합니다.

    • DataSource Database Realm은 에서 액세스하는 데이터베이스에서 사용자를 검색합니다JNDI.

    • JNDI Directory Realm은 JNDI 공급자가 액세스하는 Lightweight Directory Access Protocol(LDAP) 디렉터리에서 사용자를 검색합니다. 조회에는 다음이 필요합니다. 

      • LDAP 연결 세부 정보: 사용자 검색 기반, 검색 필터, 역할 기반, 역할 필터 

      • 키 JNDI 디렉터리 영역: 에 연결하고LDAP, 사용자를 인증하고, 사용자가 멤버인 모든 그룹을 검색합니다.

  • 권한 부여: web.xml 권한 부여 제약 조건을 확인하는 역할 기반 권한 부여가 있는 컨테이너의 경우 웹 리소스를 정의하고 제약 조건에 정의된 역할과 비교해야 합니다. LDAP 에 그룹-역할 매핑이 없는 경우 그룹-역할 매핑을 달성하려면 web.xml에서 속성 <security-role-ref>을 설정해야 합니다. 구성 문서의 예를 보려면 Oracle 설명서를 참조하세요. 

  • 데이터베이스 연결: Amazon Relational Database Service(AmazonRDS) 엔드포인트 URL 및 연결 세부 정보를 사용하여 Apache Tomcat에서 리소스 정의를 생성합니다. JNDI 조회를 DataSource 사용하여 를 참조하도록 애플리케이션 코드를 업데이트합니다. 에 정의된 기존 DB 연결 WebSphere 은 WebSphere의 JNDI 이름을 사용하기 때문에 작동하지 않습니다. web.xml에서 JNDI 이름 및 DataSource 유형 정의와 함께 <resource-ref> 항목을 추가할 수 있습니다. 샘플 구성 문서를 보려면 Apache Tomcat 설명서를 참조하세요.

  • 로깅: 기본적으로 Apache Tomcat은 콘솔이나 로그 파일에 기록합니다. logging.properties를 업데이트하여 영역 수준 추적을 활성화할 수 있습니다(Tomcat 내 로깅 참조). Apache Log4j를 사용하여 파일에 로그를 추가하는 경우 tomcat-juli를 다운로드하여 클래스 경로에 추가해야 합니다.

  • 세션 관리: 애플리케이션 로드 밸런싱 및 세션 관리를 위해 IBM 웹SEAL을 유지하는 경우 변경할 필요가 없습니다. 에서 Application Load Balancer 또는 Network Load BalancerAWS를 사용하여 IBM 웹SEAL 구성 요소를 교체하는 경우 Memcached 클러스터가 있는 Amazon ElastiCache 인스턴스를 사용하여 세션 관리를 설정하고 오픈 소스 세션 관리를 사용하도록 Apache Tomcat을 설정해야 합니다. 

  • IBM 웹SEAL 전달 프록시를 사용하는 경우 에서 새 Network Load Balancer를 설정해야 합니다AWS. 웹SEAL 연결 구성에는 Network Load Balancer에서 IPs 제공하는 를 사용합니다.

  • SSL 구성: 통신에는 Secure Sockets Layer(SSL)를 end-to-end 사용하는 것이 좋습니다. Apache Tomcat에서 SSL 서버 구성을 설정하려면 Apache Tomcat 설명서의 지침을 따르세요. 

아키텍처

소스 기술 스택  

  • IBM WebSphere 애플리케이션 서버

대상 기술 스택

  • 이 아키텍처는 Elastic Load Balancing(버전 2)을 사용합니다. 식별 관리 및 로드 밸런싱에 IBM 웹SEAL을 사용하는 경우 에서 Network Load Balancer를 선택하여 IBM 웹SEAL 역방향 프록시와 AWS 통합할 수 있습니다.

  • Java 애플리케이션은 Amazon EC2 Auto Scaling 그룹 의 EC2 인스턴스에서 실행되는 Apache Tomcat 애플리케이션 서버에 배포됩니다. CPU 사용률과 같은 Amazon CloudWatch 지표를 기반으로 조정 정책을 설정할 수 있습니다. 

  • 로드 밸런싱을 위해 IBM 웹SEAL 사용을 중단하는 경우 세션 관리를 위해 Amazon ElastiCache for Memcached를 사용할 수 있습니다.

  • 백엔드 데이터베이스의 경우 Amazon용 고가용성(Multi-AZ)RDS을 배포하고 데이터베이스 엔진 유형을 선택할 수 있습니다.

대상 아키텍처 

AWS 클라우드 architecture with VPC, two availability zones, load balancer, and database setup.

도구

에픽

작업설명필요한 기술
가상 프라이빗 클라우드를 생성합니다(VPC).
서브넷을 생성합니다.
필요한 경우 라우팅 테이블을 생성하세요.
네트워크 액세스 제어 목록()을 생성합니다ACLs.
AWS Direct Connect 또는 회사 VPN 연결을 설정합니다.
작업설명필요한 기술
애플리케이션 빌드 Maven 구성을 리팩터링하여 WAR 아티팩트를 생성합니다.
Apache Tomcat에서 애플리케이션 종속성 데이터 소스를 리팩터링합니다.
Apache Tomcat에서 JNDI 이름을 사용하도록 애플리케이션 소스 코드를 리팩터링합니다.
WAR 아티팩트를 Apache Tomcat에 배포합니다.
애플리케이션 검증 및 테스트를 완료하세요.
작업설명필요한 기술
종속성 서비스에 연결할 수 있도록 회사 방화벽을 구성합니다.
최종 사용자가 의 Elastic Load Balancing에 액세스할 수 있도록 회사 방화벽을 구성합니다AWS.
작업설명필요한 기술
EC2 인스턴스에서 애플리케이션을 생성하고 배포합니다.
세션 관리를 위한 Amazon ElastiCache for Memcached 클러스터를 생성합니다.
백엔드 데이터베이스에 대한 Amazon RDS 다중 AZ 인스턴스를 생성합니다.
SSL 인증서를 생성하고 AWS Certificate Manager()로 가져옵니다ACM.
로드 밸런서에 SSL 인증서를 설치합니다.
Apache Tomcat 서버에 대한 SSL 인증서를 설치합니다.
애플리케이션 검증 및 테스트를 완료하세요.
작업설명필요한 기술
기존 인프라를 종료합니다.
프로덕션에서 Amazon 로 데이터베이스를 복원합니다RDS.
DNS 변경하여 애플리케이션을 잘라냅니다.

참조

자습서 및 동영상