AWS에서 몇 가지 환경을 가장 잘 설정하는 방법에 대해 생각하고 있습니다. 두 개의 서버를 설정하고 싶습니다.
- 애플리케이션 서버 (웹 애플리케이션 및 REST 서비스 실행)
- 도구 서버 (여러 ETL 작업 실행)
최종 결과는 두 개의 애플리케이션 서버와 두 개의 툴 서버 (즉, 각 가용 영역에서 하나의 appserver / toolserver) 여야합니다.
- 모든 환경이 동일한 데이터베이스와 통신합니다
- 각 환경에는 자체 EBS 스토리지가 있습니다
- 4 가지 환경에서 액세스 할 수있는 단일 외부 공유 스토리지 (EFS).
스토리지를 설정하는 방법에 대해서는 약간 혼란 스럽습니다. 목표는 EC2 인스턴스가 손실 된 경우 데이터를 잃지 않도록하는 것입니다. 이를 달성하기 위해 코드가 로컬 저장소 (EBS)에 배포되고 동적 콘텐츠가 외부 공유 저장소 (EFS)에 저장되도록 설정하고 싶습니다.
모든 응용 프로그램은 다음과 같은 구조의 폴더에 있습니다
├─ application
├─ bin
├─ lib
├─ config
├─ logs
├─ data
├─ processed
├─ failed
EC2 인스턴스가 죽으면 구성, 로그 및 데이터 폴더를 유지하고 싶습니다. 다른 폴더 (bin 및 lib)에는 GIT에서 다시 빌드 할 수있는 이진 코드 만 포함됩니다. 이를 달성하기 위해 다음 스토리지를 생각하고 있습니다.
앱 서버 1 및 앱 서버 2의 EBS
├─ applications
├─ finance
├─ appname1
├─ bin
├─ lib
├─ config --> /storage/finance/config
├─ logs --> /storage/finance/logs
├─ data --> /storage/finance/date
마지막 세 개는 외부 저장소의 폴더에 대한 심볼릭 링크입니다.
EFS (공유 스토리지)
├─ storage
├─ finance
├─ appname1
├─ config
├─ logs
├─ data
위의 구조는 유지 보수의 악몽이 될 수 있지만 다른 대안은 생각할 수 없습니다. 위의 접근 방식을 사용하면 코드가 각 응용 프로그램 서버에 배포되지만 두 응용 프로그램 서버간에 데이터가 공유됩니다. 한 AV 영역의 한 응용 프로그램 서버가 죽더라도 다른 응용 프로그램 서버는 계속 작동합니다.
내가 고려한 다른 옵션에는 EBS 스토리지에 모든 것을 포함하고 백업 / 이미지에 의존하는 것이 포함됩니다. 구성 파일이 동적이며 이미지에 항상 최신 데이터가있는 것은 아니기 때문에 작동하지 않습니다.
EFS 저장소에 대해 읽으면 쓰기 속도가 느려서 약간 걱정이됩니다. 질문 :
- 위의 대안이 있습니까?
- 위의 접근 방식에 다른 단점이 있습니까?
- 로컬 EBS 스토리지에 모든 것 (코드 + 데이터)을 가질 수 있고 재난 발생시에도 복구 할 수있는 방법이 있습니까?
미리 감사드립니다