2017-10-12 6 views
0

다른 지역의 두 웹 서버간에로드를 균등하게 분산하는 방법은 무엇입니까? 중앙 서버는 100 % 유휴 상태이지만 동쪽 서버 하나는 중앙 서버입니다. 동쪽 서버는 60 %의 CPU (60 % cpu & 100 % 메모리, 스왑 핑)로 고갈됩니다.Google Cloud로드 밸런서 알고리즘 : 라운드 로빈

DR 사례에 따르면 두 개의 다른 지역에 서버가 있어야합니다. 부하를 어떻게 균등하게 분산시킬 수 있습니까? Google은 기본적으로 지오 라우팅을 사용합니다. 이는 우리에게는 좋지 않습니다. 감사!

답변

1

HTTP로드 균형 조정은 엄격한 지리적 라우팅이 아닙니다. 시스템이 한 영역에 과부하가 있음을 인식하면 다음 영역으로 트래픽이 오버플로됩니다.

부하 테스트를 수행 한 다음 시스템이 east 서버에 과부하 상태라는 것을 알리고 백도어 서비스 균형 조정 설정 (balancingMode, capacityScalar, maxRatePerInstance, maxUtilization 등)을 조정하여 중앙 서버에 트래픽을 전송하는 것이 좋습니다.

실례로 들어오는 트래픽의 100 RPS와 balancingMode = UTILIZATION maxUtilization = 0.8 (기본값)을 구성했다고 가정 해 보겠습니다. 인스턴스가 60 %의 CPU이기 때문에 최대 사용률에 도달하지 못했기 때문에 시스템은 100RPS의 트래픽을 모두 전송합니다.

이제로드 테스트를 수행하고 서버가 메모리가 부족하기 전에 트래픽의 80RPS를 처리 할 수 ​​있고 해당 CPU가 메모리 집약적 인 응용 프로그램에 대한 신뢰할 수있는 지표가 아님을 알 수 있습니다. balancingMode = RATE, maxRatePerinstance = 80로 변경합니다. 그런 다음 시스템은 동쪽 서버에 최대 80RPS를 전송하고 중앙 서버에 최대 20RPS를 전송합니다. 그러면 두 서버 모두 제대로 실행될 수 있습니다.