pyrasis/awsbook

안녕하세요 책 내용중에 해결이 안되는 문제가 있어서 이렇게 git issue 합니다.

Closed this issue · 13 comments

안녕하세요 정말 책 잘 읽었습니다.
책 내용을 연습하다가 31장 하고 32장에서 CloudFront 로 설정하고 연결 하려고 하면 다음과 같은 에러가 나오고 있는데 어디를 확인 해야 해결이 되는지 도움을 조금 부탁 드립니다. 구글링 해도 잘 안나오고 , 책을 계속 다시 보고 다시 셋팅 해도 똑같습니다. 그럼 확인을 좀 부탁 드리겠습니다.

ERROR

The request could not be satisfied.

CloudFront attempted to establish a connection with the origin, but either the attempt failed or the origin closed the connection.
Generated by cloudfront (CloudFront)

31장을 기준으로 설명드리겠습니다.

"The request could not be satisfied." 에러는 CloudFront에서 오리진(EC2, ELB, S3) 웹 서버에 접근할 수 없을 때 나옵니다.

  1. ELB에서 포트 설정을 80 -> 80으로 설정했는지 확인하세요.
  2. EC2에서 Security Group의 Inbound에 HTTP(80) TCP를 추가했는지 확인하세요.
  3. node.js 실행 파일이 제대로 실행되는지 확인하세요. 80번 포트이므로 반드시 root 권한으로 실행해야 합니다(sudo 사용).
  4. node.js로 만든 app.js를 제대로 만들었는지 확인하세요.

일단 확인할 사항은 이 정도이고, 웹 브라우저에서 오리진(EC2, ELB, S3)에 접속해서 내용이 잘 나오는지 점검해보세요. 웹 브라우저에서 잘 보이면 CloudFront도 문제 없이 동작하게 됩니다.

오리진이 S3이라면 http://www.pyrasis.com/book/TheArtOfAmazonWebServices/Chapter31/06에서 Grant Read Permissions on Bucket을 Yes, Update Bucket Policy로 설정했는지 확인하세요.

빠른 답변 감사합니다. 우선 모든 설정은 제대로 된것으로 확인 했습니다. 오리진 EC2에 접속 해서 확인 하면 잘 되는데..ELB 부터 안되는것 보니 그쪽 셋팅 부터 다시 보겠습니다. 31장 ELB보면 EC2 인스턴스는 연결 하지 않아도 된다고 씌여 있는데 이 부분은 맞는 거죠? 알겠습니다. 정말 빠른 답변 감사합니다.

ELB를 처음 생성할 때는 EC2를 연결할 필요가 없다는 뜻이고요.

31.10 웹 서버 Auto Scaling 설정하기
http://www.pyrasis.com/book/TheArtOfAmazonWebServices/Chapter31/10에서 Auto Scaling 설정을 끝내면 EC2 인스턴스가 1개 생성되어야 합니다(Lifecycle도 InService로 표시되어야 함).

그림 31-21과 같이 나오는지 확인하세요.

Auto Scaling을 설정할 때 Receive traffic from Elastic Load Balancer(s)에 앞에서 만든 ELB를 추가했는지 확인하세요.

그림 31-20의 4번입니다.

네. 정말 감사합니다.~!
elb
autoscaling

현재 이상태 인데...계속 확인 해 보겠습니다.

첫 번째 화면의 ELB Description에서 Status가 0 of 1 instances in service로 나오네요. 1 of 1로 나와야 정상입니다.

웹 브라우저에서 EC2 80번 포트에 접근해서 화면이 보이는지 확인해보세요.

아 그럼 마지막으로 이 이미지 한번 만 더 확인을 부탁 드립니다. 번거롭게 해드려 죄송합니다. :)
ELB의 instance 탭의 내용인데....아무래도 여기서 뭐가 잘못된듯 합니다.
elb2

아울러 웹 브라우저에서 EC2 80번 포트에 접근시 화면은 잘 보입니다.

현재 화면만 봐서는 뭐가 잘못된 건지 알기가 힘드네요.

http://www.pyrasis.com/book/TheArtOfAmazonWebServices/Chapter18/01 여기를 보시고 새 ELB를 만들어서 테스트를 해보세요.

네 알겠습니다. 정말 감사합니다.~!

음 맞는진 모르겠지만. 원인을 찾아서 해결 한듯 합니다. 해결방법을 기록 해 보겠습니다.
일단 위 링크의 2014년 버젼이 아닌 지금 버젼으로 말씀드리면 , 원인은 ELB생성시 EC2 인스턴스를 연결 안하고 생성 한뒤 , AutoScaling을 생성 하면 ELB에는 이 AutoScaling용 EC2만 연결및 생성이 됩니다. 그래서 ELB의 instance가서 가서 Edit를 눌러서 원래의 EC2를 연결하고 AutoScaling용 ec2는 일단 삭제 했습니다. 그 뒤 cloudfront의 도메인 네임으로 접속하니 잘 되었습니다.

이게 정확한 해결 방법인지는 아직은 잘 모르겠습니다..ㅎㅎ
아무튼 정말 빠른 답변 감사 드립니다. :)

링크가 2014년 버전인 것과는 상관이 없습니다(다른 분들이 이 글을 보고 오해할 수 있어서요).

예제는 Auto Scaling으로만 EC2를 생성해서 ELB를 돌리는게 목적입니다. 이미 만들어 놓은 EC2를 ELB에 Edit해서 추가하는 건 정확한 해결책이 아닙니다.

앞에서 계속 설명했듯이

Auto Scaling을 설정할 때 Receive traffic from Elastic Load Balancer(s)에 앞에서 만든 ELB를 추가했는지 확인하세요.

그림 31-20의 4번입니다.

Receive traffic from Elastic Load Balancer(s)에 ELB를 추가하면 Auto Scaling이 EC2 인스턴스를 생성할 때마다 ELB에 EC2 인스턴스를 알아서 추가해줍니다.

아 그렇군요 , 잘알겠습니다. 감사합니다. ~!