본문 바로가기
Infra

terraform port 80 after 10 ms Couldn't connect to server

by YoonJong 2025. 12. 17.
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
              EOF
728x90
반응형

댓글