2013-03-05 4 views
0

에서 SSL을 통한 Websocket 지연 문제이 링크의 지침 ( How do you get Amazon's ELB with HTTPS/SSL to work with Web Sockets?)을 따라 ELS가 Websocket (TCP 모드에서 ELB를 443에서 8443까지 사용)과 작동하도록 설정했습니다. 이제 wss : server가 message1을 보내고 클라이언트가 메시지를받지 못한다. 몇 초 후에 서버는 message2를 보내고 클라이언트는 두 메시지를받습니다 (두 메시지는 약 30 바이트입니다). 나는이 문제를 상당히 쉽게 재현 할 수있다. 서버에서 iptable을 사용하여 포트 포워딩을 설정하고 클라이언트가 서버 (포트 443)에 직접 연결하면 문제가 발생하지 않습니다. 또한 문제는 wss에만 발생하는 것으로 보입니다. ws는 잘 작동합니다.Amazon ELB

서버가 jetty8을 실행 중입니다.

EC2 포럼을 확인했지만 실제로 찾지 못했습니다. 나는 누군가가 같은 문제를 보았는지 궁금해.

감사합니다.

+0

SSL이 ELB에서 종료되고 암호화되지 않은 상태로 전달됩니까? – oberstet

답변

1

당신이 묘사 한 바에서 이것은 ELB의 버퍼링 문제 일 가능성이 큽니다. 빠른 연구는 이것이 실제로 문제가된다고 제안합니다. ELB docs에서

: 당신이 모두 프런트 엔드에 대한 TCP를 사용하여 연결 엔드 백업하면

, 당신의 로드 밸런서는 백엔드 인스턴스에 요청 헤더에 수정없이 전달합니다. 이 구성은 세션 끈적임 또는 X-Forwarded- * 헤더에 쿠키를 삽입하지 않을 수도 있습니다 ( ). 당신이 연결을 모두 프런트 엔드에 대한 HTTP (레이어 7)을 사용하고 백엔드을 때

, 당신의로드 밸런서는 요청에 헤더를 구문 분석하고 전에 연결을 종료합니다 ( 등록 된 인스턴스에 요청을 다시 전송 에스). 이것은 Elastic Load Balancing에서 제공하는 기본 구성입니다. AWS forums에서

:

나는이 HTTP/HTTPS 특정 되었으나 구성 할 수 없습니다하지만 난 확신 말할 수 있다고 생각합니다. 평범한 TCP 모드 (포트 80)에서 ELB를 사용하려고 할 수도 있습니다.이 모드에서는 버퍼링없이 클라이언트가 클라이언트로 트래픽을 전달하며 그 반대의 경우도 마찬가지입니다.

더 많은 측정을하고이 지연이 메시지 크기에 어떻게 의존하는지 확인할 수 있습니까?

이제는 내가 한 일, 실패한 일, 실패하지 않은 것에 대해 완전히 확신하지 못했습니다. 그러나 문서 및 포럼 게시물에서 솔루션은 프런트 엔드와 백 엔드 모두 에 대해 TCP/SSL (계층 4) ELB 유형을 사용하는 것으로 보입니다.이 "월리의 알고리즘"공감

+0

이제 클라이언트는 EC2 인스턴스의 IP 나 ELB의 IP에 직접 연결합니까? ELB의 IP가 ELB에 병목 현상을 일으키지 않는가? – xrDDDD

+0

로드 밸런서는 일반적으로 CPU 집중 기능을 전혀 수행하지 않습니다.로드 밸런서의 핵심은 네트워크 트래픽을 올바른 방향으로 조정하는 것입니다. 이론적으로 유일한 병목 현상은 네트워크 대역폭입니다. ELB의 경우 아마존은 이것이 결코 당신의 병목이되지 않을 것이라고 확신합니다. 그렇지 않은 경우 ELB에 대한 모니터링 기능이있어 한계에 도달했는지 여부를 확인할 수 있습니다. ELB에 과부하가 걸리기 쉽지 않다는 것을 그들은 아마 거대한 항구가있을 것입니다. –

+0

EC2 인스턴스 앞에 여러 개의 ELB가있을 수 있습니다. – xrDDDD

0

은 ... TCP 스택은 트래픽을 줄이기 위해 와이어를 통해 전송하기 전에 요청을 번들로 구성 할 수있다. 이것은 증상을 설명 할 수 있지만 한번 시도해 볼 가치가 있습니다.