64k 개 이상의 웹 소켓을위한 HAProxy 확장


8

우리는 64k 개 이상의 웹 소켓을 처리 할 수있는 아키텍처를 설계하려고합니다.

우리는 먼저 Amazon ELB를 사용해 보았지만 그 디자인으로 인해 예기치 않은 트래픽 급증이나 웹 소켓이 허용되지 않습니다. (TCP 모드에서 웹 소켓이 예기치 않게 시간 초과 됨)

HAProxy를 사용하면 이러한 제한이 적용되지 않지만 HA와 백엔드 서버간에 유지되는 ~ 64k 웹 소켓으로 제한됩니다.

생각 나는 여러 가지 솔루션 :

  • 다중 HAProxy 인스턴스, DNS와의로드 밸런싱 (Route53에는 가중치 옵션이 있음)
  • Keepalived, 내부 IP 주소가 여러 개인 HAProxy 인스턴스 2 개 (가능한지 확실하지 않음)

더 좋은 방법이 있습니까?


1
왜 64k가 제한됩니까? 소스 포트인가? 이 경우 다른 포트에 바인딩 된 백엔드에 더 많은 '서버'를 추가 할 수 있습니다.
Kyle Brandt

Bastien974, 가장 쉬운 방법 @ 130K 연결로 확장, 백엔드에 대한 사용 differents의 소스 IP를, 나는 두 개의 IPS 및 tw_reuse의 sysctl 옵션을 사용
c4f4t0r

답변:


7

64k 제한이 소스 포트로 인한 경우 다음과 같은 작업을 수행 할 수 있습니다 (약간의 해킹이지만 웹 소켓에 대해 현재 SE에서 수행했습니다 (HAProxy와 일반적으로 .5 백만과 같은 작업이 있음).

server ny-web01-1 10.0.0.1:8081 check
server ny-web01-2 10.0.0.1:8082 check
server ny-web01-3 10.0.0.1:8083 check

또한 keepalived로 여러 인스턴스를 수행 할 수 있습니다. 여러 IP에서 라운드 로빈 DNS와 같은 작업을 수행하십시오. DNS 자체가로드 밸런싱을 제공하지 않기 때문에 활성로드 밸런서가 항상 IP를 가져 오도록하십시오 (여기에는 더 많은 옵션이 있으며이 옵션도 간단 함).


1
올바르게 이해하면 TCP 연결이 srcIP : srcPORT / destIP : destPORT에 의해 정의되므로 여러 포트의 백엔드 서버에서 청취 할 수 있으면 HAProxy와 백엔드 서버 사이에 있음을 의미합니다. 동일한 127.0.0.1:12345-> 10.0.0.1:8081, 127.0.0.1:12345-> 10.0.0.1:8082 등에서 여러 연결이 필요합니까? 이것이 실제로 작동합니까?
Bastien974

@ Bastien974 : 당신은 올바르게 이해합니다-작동합니다.
Kyle Brandt

@ Bastien974 : source 0.0.0.0 usesrc clienttproxy 소스 투명성을 위해 haproxy의 백엔드 구성에서 사용할 수 있습니다 . 이 방법으로 srcIP : srcPORT는 실제 클라이언트 IP / 포트 (하프 프록시 시스템의 내부 IP가 아님)가되며 로깅에도 적합합니다.
wqw

0

Anycast 및 BGP 또는 다른 경계 라우팅 프로토콜을 사용하여 동일한 IP를 공유하는 여러 HAproxy 시스템을 설정할 수 있습니다. 이런 식으로 모든 HAproxy 시스템이 활성화됩니다. 이 중 하나라도 중단되면 해당 시스템에서 BGP 경로 광고를 중단하고 ~ 30 초 내에 트래픽 수신을 중지합니다. 동일한 범위를 광고하는 다른 사용 가능한 시스템으로 다시 배포됩니다.

예를 들어 이러한 레이아웃을 설정하는 방법에 대해서는 URL을 확인하십시오.


각 인스턴스에 연결된 탄력적 IP를 사용해야하므로 AWS VPC 인프라에서 작동하는지 잘 모르겠습니다. Amazon Route53은 상태 확인을 추가 할 수있는 옵션을 제공하므로 솔루션은 DNS 솔루션과 매우 유사합니다. 저의 TTL이 낮아도 다른 국가 (전 세계에 고객이 있음) 로의 전파가 "죽은"HA 인스턴스로의 트래픽 전송을 중단 할 수는 없습니다.
Bastien974
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.