항상 도움만 받게 되서 죄송하지만 또 질문을 올립니다. external ELB…

항상 도움만 받게 되서 죄송하지만 또 질문을 올립니다.

external ELB 밑에 WAS(EC2)서버가 2대가 있구요.
이 2대의 EC2 중 1대가 또 다른 internal ELB 밑에 있는 이미지처리(EC2)서버 2대 중 하나를 호출해서 돌아가는 API가 있습니다.
external ELB만 Public subnet에 속해 있구요. 나머지는 모두 같은 private subnet에 속해있습니다. Availability zone은 모두 같습니다.

API호출은 이렇습니다. 클라이언트에서 아바타를 생성하는 작업을 실행하면 external ELB를 통해서 WAS(2대 중 하나)안에 있는 API를 호출하구요.
이 작업이 이뤄지는 과정중에 internal ELB를 통해 이미지처리 (2대 중 하나)를 호출합니다.
이미지처리서버 안에서는 작업이 3번의 호출 단계를 거쳐서 완료되고 결과물은 다시 WAS로 리턴받게 되요.
근데 문제가 이 3번의 호출 단계가 모두 같은 이미지처리(EC2)서버 내에서 처리되어야 하나 2대의 이미지처리서버 사이를 왔다 갔다 하면서 처리되고 있어 정상적인 진행이 안되고 있습니다.
그리고, Sticky Session을 300초 정도 설정했음에도 증상은 마찬가지네요.
설명이 충분히 되었는지 모르겠습니다만. 어떤 부분이 문제일까요?

8 thoughts on “항상 도움만 받게 되서 죄송하지만 또 질문을 올립니다. external ELB…

  1. WAS에서 이미지 서버로 요청을 날릴때 ELB가 내려준 쿠키를 다음 요청시 다시 보내는지 여부를 확인해보심이 좋을 듯 합니다. ELB에서 쿠키를 이용해 Sticky Session을 구현할 것으로 알고 있습니다.

  2. 쿠키 이름 중에 AWSELB 라고 있는데 ELB에서 셋팅되는 값입니다.
    (ext_elb와 int_elb 쿠키명 중복을 잠깐 생각 해봤는데.. 그럴리가 없겠네요… 클라이언트가 다르니..^^;;)
    윗분 말씀대로 쿠키가 유지되는 것 확인이 먼저 필요하겠네요..
    직접 세션 관리를 하실려면 이미지서버 Application Generated 쿠키 쓰는것도 고려해볼만합니다.
    그리고 http(s)만 됩니다. TCP를 직접 쓰는 프로토콜은 elb의 sticky session이 동작하지 않는걸로 알고 있습니다..(XMPP나.. 커스텀 프로토콜 같은..)

  3. ext_elb에서 생성한 쿠키는 브라우저에서 확인이 가능한 걸 확인했습니다만 int_elb에서 생성한 쿠키는 어디서 확인해야 할까요? ㅠㅠ

  4. WAS 에서 이미지서버로 요청 보내고 응답의 헤더를 찍어보세요. WAS에서 어떤 클라이언트(자바라면, HttpUrlConnection 혹은 HttpClient?) 이용해서 요청하고 계신가요?

  5. 이정행 WAS에 있는 Java 서블릿 API에서 이미지를 처리하는 부분(php)를 호출하고 그 php에서 internal ELB(이 안에 이미지서버가 있음)를 호출합니다. 이렇게 되면 응답의 헤더를 java에서 찍어야 할지, php에서 찍어야할지.. 헷갈리네요.

  6. PHP코드에서 internal ELB에 http요청을 보내는 것이라면 PHP쪽에서 찍어봐야겠죠. 3번의 호출단계동안 요청 보낼때마다 쿠키가 유지되어야 할 것같습니다.

  7. php에서 apache_request_headers(), apache_response_headers() 둘다 써서 찍어봤는데 안 나오네요. 쿠키가 안 만들어지는 건지 아니면 사라지는 건지 모르겠네요 ㅠㅠ ELB쿠키로도 해보고, 어플리케이션 쿠키로도 해봤는데 마찬가지. 어떻게 해야할지 참 답답하네요 ㅠㅠ

Comments are closed.