전통적인 3 Tier 구조에서 따로 설정을 해주지 않는다면 Client의 IP는 얻지 못할 수도 있다.
이는, 앞 단에 LB가 있기 때문인데 앞 단에 ALB가 있냐, NLB가 있냐에 따라서도 다르고 Target Group의 Type이 Instance냐 IP냐에 따라서도 다르지만 이번에는 앞 단에 Application Load Balancer가 있다고 가정을 해볼 것이다.
Apache의 Modules 디렉터리에 들어가보면 하기 4개의 Log 관련 모듈들이 있다.
modlog_config.so
mod_log_debug.so
mod_log_forensic.so
mod_logio.so
(참고로, Apache는 Nginx와 다르게 Module 기반의 Web 서버이기 때문에 여러가지 모듈을 Load하여 다양한 기능들을 사용할 수 있다.)
=> Remote Client의 IP 주소를 얻어낼 수 있음
Traffic 흐름
Client -> Application Load Balancer -> Apache
-> Network Load Balancer -> Tomcat -> RDS
1. Apache
1. Module을 Load한다. (httpd.conf 파일에서 설정 가능)
modlog_config.so
mod_log_debug.so
mod_log_forensic.so
mod_logio.so
2. httpd_vhosts.conf 파일 Include (httpd.conf 파일에서 설정 가능)
3. Test를 위한 Tomcat과 연동
4. httpd.conf 로그 포맷 변경
- %{X-Forwarded-For}i
- %{User-Agent}i
2. Tomcat
- Tomcat의 Format 설정 값들 정리
3. Log 기록
1. apache access_log
앞에는 Client IP, 뒤에는 ALB의 IP이다.
2. tomcat access_log
앞에는 Client IP, 그 뒤에는 각각 ALB, NLB의 IP이다.
4. 정리
- Application에서 Log 기록은 추후 문제가 발생했을 시 Trouble Shooting에서 굉장히 중요한 요소이다. 고로, Log 관리를 잘 한다면 나중에 문제 발생할 경우 참고해서 수월하게 문제를 해결할 수 있을 것이라고 본다.
'AWS' 카테고리의 다른 글
AWS와 Azure간 Transit Gateway을 통한 Site to Site VPN 연동 (2) | 2021.07.20 |
---|---|
[AWS] Amazon EC2 Instance 유형 알아보기 (1) | 2021.06.05 |
[AWS] CloudFront Behavior을 통한 S3, ELB 연동 실습 (0) | 2021.05.25 |
[AWS] NLB, ALB, Lambda를 통한 고정 IP 사용 방법 (2) | 2021.05.11 |
[EKS] EKS Cluster에 IAM User를 통한 kubectl 권한 설정하기 (1) | 2021.05.09 |