인프라 구축기
Redshift가 존재하는 VPC 내부에 EC2 및 Tableau를 구축하는 작업을 진행하려고 한다. 원래는 Private Subnet에 EC2를 생성하고, Airflow Web에 접속하는 것처럼 Bastion Host에 Nginx Proxy를 활용해 접근하려고 하였다. 그러나 로컬에서 Tableau Web 접근까지는 완료됐지만, 관리자 로그인이 원활하게 진행되지 않아 Public으로 다시 구축을 진행하였다. 아마 Proxy를 통한 접근으로 Tableau를 사용할 수 없다는 것이 나의 추측이다. 이 글에서는 AWS EC2에서 Tableau를 구축한 과정을 담으려고 한다. 구축 과정은 링크를 참고하여 진행하였다.
수정된 아키텍처
첫 번째 난관 : EC2 Instance 선정
처음으로 EC2 인스턴스를 생성하는 과정부터 난관이었다. 비용을 최대한 적게 사용하는 방향으로 가고 싶었지만, Tableau Server를 사용하게 되면 최소 사양이 4 Core (8 vCPU)와 16 GB RAM, 디스크 여유 공간도 15GB가 존재해야 한다.
t3.large - 실패
명시적으로 최소 사양이 존재하지만, 혹시나 하는 마음에 t3.large (4 vCPU, 8 GB RAM)을 사용하여 Tableau를 구축해보려고 하였다. 그러나 역시 정상 작동하지 않았다. Tableau Server 설치 파일을 받아 설치하는 과정에서 CPU와 RAM이 충분하지 않다는 이유로 설치조차 진행되지 않았다. 그래서 아쉬운 마음을 뒤로하고 최소 사양에 맞는 인스턴스로 다시 시도하였다.
m5.4xlarge - 성공
최소 사양을 만족하는 m5.4xlarge (8 vCPU, 16 GB RAM)을 사용해 Tableau를 구축을 진행하는데 무리는 없었다. t3.large에서 실패했던 설치 과정, tsm 구축 및 계정 생성도 모두 무리 없이 진행되었다. 그러나 Nginx Proxy를 사용해 웹으로 접속하는 과정에서 또다시 가로막혔다.
두 번째 난관 : Bastion Host Proxy 연결 및 Tableau 관리자 페이지 접근
Bastion Host Nginx 설정
이전에 Airflow를 설정했던 파일이 존재하고, 추가로 하나의 Proxy를 추가하는 것이기 때문에 약간 혼란이 있었다.
- 같은 주소 (Bastion Host IP)를 사용해서 두 개의 웹에 접속이 가능한가?
- 웹 접속 포트를 다르게 설정한다면 가능
- 접속 포트는 Nginx의 어떤 것을 설정해야 하는가?
- listen을 이용해 접근 포트 설정 가능
- 추가로 Bastion Host의 보안 그룹에 해당 포트를 추가해줘야 함
최종적으로 아래와 같은 파일을 작성하였다. 첫 server 구문은 Airflow 서버를 위한 코드이며, 두 번째 server 구문은 Tableau 서버를 위한 코드이다. Tableau의 경우 https를 사용해야 하며, 관리자 페이지의 경우 8850 port를 사용한다. 사용한 포트 (1234)의 경우 테스트를 위해 작성했던 것이며, 만약 작업이 성공적이라면 적절한 포트로 변경해주려고 하였다.
# Airflow 서버 설정
server {
listen 80;
server_name Bastion_Host_Public_IP;
location / {
proxy_pass http://Airflow_Private_IP:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# Tableau 서버 설정
server {
listen 1234;
server_name Bastion_Host_Public_IP;
location / {
proxy_pass https://Tableau_Private_IP:8850;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Tableau 관리자 페이지 접근
위와 같이 Nginx 설정을 마친 뒤 "http://Bastion_Host_Public_IP:1234"로 Tableau 접근하였다. 그러나 설치 과정에서 생성했던 관리자 계정 (tsmadmin)으로 로그인을 진행하더라도 다음 페이지로 이동하지 않았다. 오랜 시간을 들여 웹 페이지까지 접속했는데.. 다시 처음으로 돌아간 기분이었다. 혹시나 Proxy가 문제인 건가 해서 Nginx나 tsm 설정도 수정해보고 했지만, 결과적으로 이 오류를 해결하지 못했다.
Public EC2에 Tableau 구축
로그인이 안 되는 문제가 Private Subnet에 위치하고, Proxy를 통한 통신 때문에 발생한 오류일 것이라 생각했기 때문에 Public Subnet에 EC2를 재생성한 뒤 동일한 방법으로 Tableau 구축을 진행하였다. 이후 해당 EC2의 Public IP로 접근하자 관리자 로그인도 올바르게 진행되었다.
Reference
https://1mini2.tistory.com/116
https://help.tableau.com/current/server-linux/ko-kr/server_hardware_min.htm
'Infra > [인프라 구축기] Terraform 활용 AWS 인프라 구축' 카테고리의 다른 글
인프라 구축기 (17) : Lambda가 적용되는 EC2 변경 (0) | 2024.11.24 |
---|---|
인프라 구축기 (16) : Tableau에서 Metabase로 변경 (0) | 2024.11.21 |
인프라 구축기 (14) : EC2 인스턴스 추가 및 lambda 함수 수정 (0) | 2024.11.11 |
인프라 구축기 (13) : 진행 내용 & 진행 예정 내용 정리 (5) | 2024.11.03 |
인프라 구축기 (12) - S3에 있는 Terraform 상태 파일 활용하기 (0) | 2024.11.02 |