작성
·
64
0
안녕하세요. 우선 제가본 강의중에 제일 좋은강의를 만들어주셔서 감사합니다.
private-subnet(ec2) >> NAT Gateway >> public-subnet(gateway) 경로를 통해 API를 호출하고 있습니다. 문제는 API 호출 시 첫 번째 요청은 느리지만, 이후의 요청은 빠르게 처리되며, 몇 분 후 다시 호출하면 같은 현상이 반복된다는 것입니다. AWS 문서를 확인해본 결과, NAT Gateway의 Keep-Alive 최대 시간이 360초라는 것을 알게 되었습니다.
이와 같이 첫 번째 API 호출이 느렸다가 이후 호출이 빨라지는 문제를 해결할 방법이 있을까요?
제가 생각해본 해결책은 private-subnet을 public-subnet으로 이동시켜 Keep-Alive 시간을 증가시키는 것이었지만, 다른 방법이 있을지 조언을 구하고자 합니다.
답변 1
1
제일 좋은 강의라고 말씀해 주셔서 정말 감사합니다. 도움이 된다니 다행이네요. 시간되시면 평가도 부탁드릴게요. 그리고 질문에 답변을 드리도록 할게요.
일단 API 만든 애플리케이션들이 다 Private Subent에 있는 EC2에 운영하고 계신거죠? 그래서 외부에서 유저가 ELB 를 통해 API를 호출 하는데 첫번째 호출이 늦다는 말씀이 이시구요?
제가 이해한게 맞다면, NAT 게이트웨이의 문제는 아닌것 같습니다. 확인 하는 방법은 NAT를 Route Table에서 떼어 보시죠. 그래도 API 호출은 이루어 져야 합니다. 그렇다면 NAT 문제는 아닌게 확실하구요.
일단 테스트를 여러번 해서 문제를 파악해야 겠지만, 제가 그럴수는 없으니, 가정을 하고 2가지 방법을 알려드릴테니 한번 테스트 해보시고, 아니면 다른 방법을 찾아봐야 할것 같아요.
첫번째로, CloudFront를 만들어서 ELB앞에 붙여보시죠.
두번째는, 어떤 서버를 운영하시는지 모르겠는데요. 서버의 설정값을 변경해야 될것 같습니다.
하나씩 문제들을 배제 하면서 테스트 해봐야 할듯해요. CloudFront만 달아서 제 생각에는 해결 될꺼라고 생각합니다만, 안되면 두번째를 시도해 보셔야 할듯해요.
유저 트래픽이 들어 오는 구조는 아래와 같구요.
IGW->ALB(internet facing)->EC2(public subent)->ALB(internal)->EC2(private subnet) 이 이구요.
NAT는 별개입니다. Private Subnet에 있는 EC2들이 인터넷을 하기위해 사용하는 것이기 때문에 무조건 Public Subnet에 위치 시키셔야지 됩니다.
답변 감사합니다!
NAT를 Route Table에서 떼어 보시죠.
-> 떼어도 정상 호출 확인했습니다!
첫번째로, CloudFront를 만들어서 ELB앞에 붙여보시죠.
-> 현재 테스트 진행중입니다!!
한가지 더 질문하고싶은게,
private-subnet(ec2-서버) - alb(Internal) >> NAT >> public-subnet(ec2-gateway 서버) -alb(internet)
사용자가 alb(internet) 으로 최초 접속하는 순서입니다!! 강의에서 들은 내용참고해서 한건데 위방식으로 해도 되는걸까요?? 아니면 alb(Internal) 을 NAT 앞에 두는게 좋은걸까요??