728x90
반응형
EC2는 Running인데 웹 페이지가 안 열렸던 이유
Terraform으로 EC2를 생성했는데 인스턴스 상태는 Running인데도
curl로 접속하면 Connection Refused가 발생했다.
보안 그룹에서 80번 포트는 이미 열어둔 상태였기 때문에
네트워크 문제가 아니라 서버 내부 설정 문제라고 판단했다.
원인
문제는 user_data 스크립트에 있었다.
패키지 설치 명령어에서 에러가 발생했지만
쉘 스크립트는 중단되지 않고 다음 줄을 그대로 실행했다.
결과적으로는 다음과 같은 상태였다.
- Apache 설치 실패
- 실행할 웹 서버 프로그램 자체가 없음
- systemctl start는 실행됐지만 실제로 시작된 서비스는 없음
- 80번 포트를 리스닝하는 프로세스가 없어서 Connection Refused 발생
즉, 서버는 켜졌지만 웹 서버는 존재하지 않는 상태였다.
| 구분 | 이전코드(실패원인) | 변경된코드 |
| 운영체제 가정 | Ubuntu 계열 기준 | Amazon Linux 기준 |
| 패키지 매니저 | apt-get | yum |
| 웹 서버 패키지 | apache2 (Amazon Linux에 없음) | httpd |
| 패키지 설치 결과 | 설치 실패 (에러 발생) | 정상 설치 |
| 서비스 시작 명령 | systemctl start apache2 | systemctl start httpd |
| 실제 서비스 실행 여부 | 실행할 서비스 없음 | 웹 서버 정상 실행 |
| 80번 포트 상태 | 리스닝 프로세스 없음 | 정상 리스닝 |
| 접속 결과 | Connection Refused | 웹 페이지 정상 응답 |
수정
이전
user_data = <<-EOF
#!/bin/bash
apt-get update
apt-get install -y apache2
echo "Hello, Terraform! I am $(hostname -f)" > /var/www/html/index.html
systemctl start apache2
systemctl enable apache2
EOF
수정
# amazon linux용 스크립트로 변경
user_data = <<-EOF
#!/bin/bash
yum update -y
yum install -y httpd
echo "Hello, Terraform! I am $(hostname -f)" > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd
EOF728x90
반응형
'Infra' 카테고리의 다른 글
| minikube(미니쿠브) 란 무엇인가 (0) | 2025.12.18 |
|---|---|
| terraform apply 실행 시 No default VPC for this user 에러 (0) | 2025.12.16 |
댓글