다음 요청은 잘 정의되어 있지 않습니다. DNS 응답에 짧은 TTL을 설정하면 클라이언트가 TTL 정보에 대한 액세스를 무시하거나 액세스 할 수 없으므로 예상 한 것보다 적은 수의 응답을 보장합니다.
그러나 여전히 클라이언트가 서비스가 중단 된 프록시에 대한 A 레코드로 인해 멈추지 않도록 짧은 TTL이 필요합니다.
DNS를 33.3 %로 가중하는 것이 가장 좋은 계획은 아닐 것입니다. 각 DNS 응답과 함께 정상적인 모든 프록시의 IP 주소를 반환 할 수 있습니다. 각 프록시에 걸리는 요청 수의 균형을 조정할 필요가 없습니다.
설정에 대한 이해를 확인하겠습니다. 이것이 올바른 것으로 가정하면 여기에 대한 나머지 대답이 적용 가능해야합니다.
시나리오 :
여러 HAProxy 서버, 모드 TCP, TLS를 종료하고, 연결의 최소 수와 백 엔드 서버가 다음 입력을받을 수 있도록 leastconn 사용하여 백엔드하기 위해 요청 서버 균형을 연결.
분석 :
당신은 당신이 올바르게 작동하도록 전면에 DNS 응답을 가중 할 필요가 없습니다, 백 엔드에 균형 것을 원하는
. DNS로해야 할 일은 프록시의 건강을 점검하는 것이며 프록시가 건강하지 않은 경우 프록시의 IP 주소를 광고하지 마십시오. 그렇지 않으면 각 DNS 응답과 함께 모든 프록시 주소를 반환하십시오.
이론적 설명 :
클라이언트가 연결되는 프록시는 중요하지 않습니다. 모든 주소를 반환하면 임의의 순서로 반환되며 클라이언트는 임의로 하나를 사용합니다.
각 프록시는 각 백엔드에 대한 연결 수를 유지하며 항상 가장 낮은 백분율을 갖는 백엔드 중 하나 인 에 연결을 보냅니다.입니다. 각 프록시은 각 백엔드 서버로 동일한 수의 연결이 전송되도록 독립적으로 보장하기 때문에 다른 프록시가 보유한 연결 수를 알 필요가 없습니다. 따라서 최대 요구시 각 프록시에 의해 각 백엔드로 전송되는 연결 수는 각 프록시 내에서 +/- 1로 동일하며 DNS의 임의성에만 종속되는 프록시간에 동일합니다.하나의 IP 주소가 다른 IP 주소보다 많은 트래픽을 수신하면 에 대한 연결 수가 모두의 백엔드가 다른 IP 주소보다 높기 때문에 앞면의 불균형이 사라집니다. 그 숫자가 무엇이든 상관없이 피크로드에서 여전히 +/- 1이 될 것입니다. 피크로드에서의 분포가 유일한 관심사 여야합니다.
클라이언트가 연결보다 연결이 끊어지면 (정의에 따라) 최대 수요가 발생하고 연결 수가 줄어들지 만 경향이 있습니다.하지만 이는 상관하지 않습니다. 왜냐하면 프록시 새로운 연결이 도착하자마자 바로 다시 수평을 맞출 것입니다 - 프록시의 관점에서 가장 적은 연결로 서버에 자동으로 주어집니다. 우리는 이미이 시점에서 수요가 극대화되지 않았다고 가정합니다. 따라서 정확한 균형이 덜 중요해진다. 사용량이 많지 않을 때 하나의 백엔드 서버에 전달되는 동시 연결 수는이 구성으로 최고점에 도달하는 동안 서버에 전달 된 연결 수를 초과하지 않는 경향이 있습니다.
원하는 동작을 설명하고이 동작이 바람직한 이유를 설명하십시오. 반 누름 염색체는 어디에 있습니까? 그들은 EC2에 있습니까? 그렇다면 동일한 AWS 지역에 있습니까? 어떤 서비스가 균형을 이루고 있습니까? HTTP/HTTPS? 웹 소켓? 다른 것? –
@ Michael-sqlbot Haproxy 노드는 AWS EC2 인스턴스에서 호스팅되고 AWS Route 53은 Haproxy 노드에로드 균형을 조정하기 위해 AWS Route 53의 각 haproxy 노드에 부여 된 가중치를 기반으로 TLS 요청을이 Haproxy 노드 (EC2 인스턴스에서 호스팅 됨)로 라우팅합니다. . 이것은 기본적으로 Haproxy 노드가 least_conn 정책 (AWS ELB에서는 사용할 수 없음)을 기반으로 백엔드 채팅 서버로 TLS 요청을 전송하는 채팅 앱입니다 .In 앱에서는 몇 명의 사용자가 있을지 알 수 없습니다. 따라서 메모리 사용량을 기반으로 Haproxy 노드로 요청을 라우팅하고 Route 53에서 각 서버의 가중치를 동적으로 변경해야합니다. – patel