기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Auto Scaling을 사용하여 IBM WebSphere 애플리케이션 서버에서 Amazon EC2의 Apache Tomcat으로 마이그레이션하세요.
작성자: Kevin Yung(AWS) 및 Afroz Khan(AWS)
요약
이 패턴은 Amazon EC2 Auto Scaling이 활성화된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 Java 애플리케이션을 IBM WebSphere Application Server에서 Apache Tomcat으로 마이그레이션하기 위한 지침을 제공합니다.
이 패턴을 사용하면 다음을 달성할 수 있습니다.
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/리소스를 구성해야 합니다. 기본적으로 JAR 라이브러리는 디렉토리에 로드되지 않습니다. 또는, src/main/resources 아래에 모든 리소스를 배포할 수도 있습니다. Java 응용 프로그램 내에서 하드 코딩된 컨텍스트 루트가 있는지 확인하고 Apache Tomcat의 새 컨텍스트 루트를 업데이트하십시오.
JVM 런타임 옵션을 설정하려면 Apache Tomcat bin 폴더에 setenv.sh 구성 파일을 생성할 수 있습니다(예: JAVA_OPTS, JAVA_HOME, 등).
인증은 컨테이너 수준에서 구성되며 Apache Tomcat 구성에서 영역으로 설정됩니다. 인증은 다음 세 가지 영역 중 하나에 대해 설정됩니다.
JDBC Database Realm
은 JDBC 드라이버에 의해 접근된 관계형 데이터베이스에서 사용자를 조회합니다. DataSource Database Realm
은 JNDI에 의해 접근된 데이터베이스에서 사용자를 조회합니다. JNDI Directory Realm
은 JNDI 제공자에 의해 접근된 LDAP(Lightweight Directory Access Protocol) 디렉토리에서 사용자를 조회합니다. 조회에는 다음이 필요합니다. LDAP 연결 세부 정보: 사용자 검색 기준, 검색 필터, 역할 기반, 역할 필터
키 JNDI Directory Realm: LDAP에 연결하고, 사용자를 인증하고, 사용자가 구성원인 모든 그룹을 검색합니다.
권한 부여: web.xml 권한 부여 제약 조건을 확인하는 역할 기반 권한 부여가 있는 컨테이너의 경우 웹 리소스를 정의하고 제약 조건에 정의된 역할과 비교해야 합니다. LDAP에 그룹 역할 매핑이 없는 경우 web.xml의 <security-role-ref>에서 속성을 설정하여 그룹 역할 매핑을 구현해야 합니다. 구성 문서의 예를 보려면 Oracle 설명서
를 참조하세요. 데이터베이스 연결: Amazon Relational Database Service(RDS) 엔드포인트 URL 및 연결 세부 정보를 사용하여 Apache Tomcat에서 리소스 정의를 생성합니다. JNDI 조회를 사용하여 DataSource를 참조하도록 애플리케이션 코드를 업데이트하세요. WebSphere에 정의된 기존 DB 연결은 WebSphere의 JNDI 이름을 사용하므로 작동하지 않습니다. JNDI 이름 및 DataSource 유형 정의를 사용하여 web.xml에<resource-ref> 항목을 추가할 수 있습니다. 샘플 구성 문서를 보려면 Apache Tomcat 설명서
를 참조하세요. 로깅: 기본적으로 Apache Tomcat은 콘솔이나 로그 파일에 기록합니다. logging.properties를 업데이트하여 영역 수준 추적을 활성화할 수 있습니다(Tomcat 내 로깅
참조). Apache Log4j를 사용하여 파일에 로그를 추가하는 경우 tomcat-juli를 다운로드하여 클래스 경로에 추가해야 합니다. 세션 관리: 애플리케이션 로드 밸런싱 및 세션 관리를 위해 IBM WebSeal을 유지하는 경우에는 변경할 필요가 없습니다. AWS 기반 Application Load Balancer 또는 Network Load Balancer를 사용하여 IBM WebSEAL 구성 요소를 대체하는 경우, Amazon ElastiCache 인스턴스를 Memcached 클러스터와 함께 사용하여 세션 관리를 설정하고 오픈 소스 세션 관리
를 사용하도록 Apache Tomcat을 설정해야 합니다. IBM WebSEAL 전달 프록시를 사용하는 경우 AWS에 새 Network Load Balancer를 설정해야 합니다. WebSEAL 접합 구성에는 Network Load Balancer에서 제공하는 IP를 사용하세요.
SSL 구성: 종단 간 통신에는 보안 소켓 계층(SSL)을 사용하는 것이 좋습니다. Apache Tomcat에서 SSL 서버 구성을 설정하려면 Apache Tomcat 설명서
의 지침을 따르세요.
아키텍처
소스 기술 스택
IBM WebSphere Application Server
대상 기술 스택
이 아키텍처는 Elastic Load Balancing(버전 2)을 사용합니다. 식별 관리 및 로드 밸런싱을 위해 IBM WebSEAL을 사용하는 경우, AWS 기반 Network Load Balancer를 선택하여 IBM WebSEAL 역방향 프록시와 통합할 수 있습니다.
Java 애플리케이션은 Amazon EC2 Auto Scaling 그룹의 EC2 인스턴스에서 실행되는 Apache Tomcat 애플리케이션 서버에 배포됩니다. CPU 사용률과 같은 Amazon CloudWatch 지표를 기반으로 규모 조정 정책을 설정할 수 있습니다.
로드 밸런싱을 위한 IBM WebSEAL 사용을 중단하려는 경우, Amazon ElastiCache for Memcached를 사용하여 세션 관리를 할 수 있습니다.
백엔드 데이터베이스의 경우 Amazon RDS용 High Availability (Multi-AZ) for Amazon RDS를 배포하고 데이터베이스 엔진 유형을 선택할 수 있습니다.
대상 아키텍처

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