문제

우리는 싸우고 있습니다 하프 렉시 아마존 EC2에서 며칠 동안; 경험은 지금까지 훌륭했지만 소프트웨어로드 밸런서에서 더 많은 성능을 짜는 데 갇혀 있습니다. 우리는 정확히 Linux Networking whizzes (우리는 .net 상점, 일반적으로)는 아니지만 지금까지 우리 자신의 자체적으로 개최되어 적절한 Ulimits를 설정하려고 시도하고 Kernel 메시지와 TCPDump를 불규칙적으로 검사합니다. 그러나 지금까지 우리는 약 1,700 개의 요청/초 고원에 도달했는데,이 시점에서 클라이언트 타임 아웃이 많이 있습니다 (우리는 사용하고 조정했습니다. httperf 이 목적을 위해). 동료와 나는 가장 최근의 Stack Overflow Podcast를 듣고 있었는데, Reddit 설립자들은 전체 사이트가 하나의 Haproxy 노드에서 벗어나고 지금까지 병목 현상이되지 않았다고 언급했습니다. ack! 어떻게 든 많은 동시 요청이 보이지 않거나, 우리는 끔찍하게 잘못된 일을하고 있거나 EC2의 공유 특성이 EC2 인스턴스의 네트워크 스택을 제한하고 있습니다 (대규모 인스턴스 유형을 사용하고 있음). Joel과 Reddit 설립자가 네트워크가 제한 요인이 될 가능성이 있다는 사실에 동의한다는 사실을 고려할 때, 그것이 우리가보고있는 한계 일 가능성이 있습니까?

어떤 생각도 대단히 감사합니다!

편집하다 실제로로드 밸런서 노드와 함께 실제 문제가 아닌 것 같습니다! 범인은 실제로이 경우 HTTPerf를 실행하는 노드였습니다. HTTPERF가 각 요청에 대해 소켓을 구축하고 찢어 버리면 커널에서 많은 양의 CPU 시간을 소비합니다. 요청 속도를 높이면서 TCP FIN TTL (기본적으로 60 대)은 소켓을 너무 길게 유지하고 있었고 IP_LOCAL_PORT_RANGE의 기본값은이 사용 시나리오에서 너무 낮았습니다. 기본적으로 몇 분 동안 클라이언트 (HTTPERF) 노드가 새 소켓을 지속적으로 생성하고 파괴 한 후 사용하지 않은 포트의 수가 다 떨어졌고,이 단계에서 후속 '요청'오류가 발생하여 낮은 요청/SEC 번호와 많은 양을 산출합니다. 오류의.

우리는 또한 Nginx를 보았지만 Righscale과 함께 일하고 있었고 Haproxy를위한 드롭 인 스크립트가 있습니다. 아, 그리고 우리는 절대적으로 필요한 것으로 판명되지 않는 한 구성 요소를 전환하기 위해 마감일이 너무 빡빡했습니다. 자비 롭게도 AWS를 사용하면 Nginx를 사용하여 다른 설정을 병렬로 테스트하고 나중에 밤새 스위치를 만들 수 있습니다.

이 페이지 각 sysctl 변수를 상당히 잘 설명합니다 (이 경우 IP_LOCAL_PORT_RANGE 및 TCP_FIN_TIMEOUT가 조정되었습니다).

도움이 되었습니까?

해결책

실제로 귀하의 질문에 대한 답은 아니지만 Nginx와 Pound는 모두로드 밸런서로서 훌륭한 명성을 가지고 있습니다. WordPress 그냥 nginx로 전환되었습니다 좋은 결과로.

그러나 더 구체적으로, 당신의 문제를 디버깅하기 위해. 100% CPU 사용량 (I/O 대기 포함)이 표시되지 않으면 네트워크 바운드입니다. EC2는 내부적으로 기가비트 네트워크를 사용하고 XL 인스턴스를 사용해보십시오. 따라서 기본 하드웨어를 직접 사용하고 기가비트 네트워크 포트를 공유 할 필요가 없습니다.

다른 팁

질문에 직접 대답하지 않지만 EC2는 이제로드 밸런싱을 지원합니다. 탄성로드 밸런싱 EC2 인스턴스에서 자신의로드 밸런서를 실행하는 대신.

편집하다: Amazon의 Route 53 DNS 서비스는 이제 "별칭"레코드가있는 ELB에서 최상위 도메인을 가리키는 방법을 제공합니다. Amazon은 ELB의 현재 IP 주소를 알고 있으므로 CNAME 레코드를 사용하지 않고 해당 현재 IP의 레코드를 반환하면서도 IP를 때때로 자유롭게 변경할 수 있습니다.

예, 오프 사이트로드 밸런서를 사용할 수 있습니다. 그리고 Bare Metal LVS에서는 훌륭한 선택이지만 대기 시간은 끔찍할 것입니다! 소문에 따르면 아마존은 CNAME 문제를 해결할 것이라는 소문이 있습니다. 그러나 HTTPS, Indepth 또는 Custom Health Checks, 피드백 에이전트, URL 매칭, 쿠키 삽입 (및 좋은 아키텍처를 가진 일부 사람들도 꽤 옳다고 말할 것입니다.) 그러나 Scalr, Rightscale 및 다른 사람들은 일반적으로 Haproxy를 사용하는 이유가 있습니다. 라운드 로빈 DNS 항목 뒤에. 여기에서 loadbalancer.org에서 우리는 우리 자신의 EC2로드 밸런싱 애벌 만 출시를 시작하려고합니다.http://blog.loadbalancer.org/ec2-load-balancer-appliance-rocks-nid-ffe-for-now-anyway/우리는 SSH 스크립트를 사용하여 RightScale과 같은 방식으로 Autoscaling과 교환 할 계획입니다. 감사

클라우드가 아닌 오프 사이트로드 밸런서로 전환하고 IPV와 같은 것을 실행하는 것을 살펴 보겠습니다. [Amazon의 클라우드에서 벗어난 이유는 Kernel 물건 때문입니다.] Amazon이 단방향로드 밸런싱 메커니즘으로 갈 수있는 패킷의 소스 IP를 제한하지 않는 경우. 우리는 이와 같은 일을하고 있으며, 그것은 약 80 만 명의 동시 요청을 얻습니다 [대기 시간을 다루지는 않지만]. 또한 "AB2"(Apache Bench)를 사용한다고 말하면서 약간의 사용자 친화적이며 겸손한 의견으로 사용하기 쉽기 때문입니다.

문제가 해결되었지만. Kemp Technologies는 이제 AWS 용으로 완전히 날아간로드 밸런서를 보유하고 있습니다. 번거 로움을 저장할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top