성장하는 웹사이트를 위한 로드 용량 증가

성장하는 웹사이트를 위한 로드 용량 증가

내 웹사이트는 현재 전용 웹 서버(LiteSpeed ​​포함)와 전용 MySQL 데이터베이스 서버에서 실행되고 있습니다. 스트리밍 및 다운로드가 가능한 수많은 사용자 생성 콘텐츠가 포함된 다운로드 기반 사이트이며, 수천 개의 썸네일과 정적 콘텐츠도 있습니다.

웹 서버가 더 이상 트래픽 양을 처리할 수 없는 단계에 이르렀기 때문에, 다운로드할 수 있는 콘텐츠의 양이 많은 것을 고려하여 용량을 늘리는 최선의 방법을 찾고 있습니다.

내 호스트는 두 번째 웹 서버의 모든 것을 미러링하고 DNS Made Easy를 사용하여 두 웹 서버 사이에 로드를 분산하거나 두 웹 서버 앞에 자체 로드 밸런서(ldirector 사용)를 두는 것을 제안합니다.

위의 방법이 최선의 선택인지 조언해 줄 수 있는 사람이 있습니까? DNS Made Easy 및/또는 ldirector에 대한 경험이 있는 사람이 있습니까?

도움을 주시면 감사하겠습니다.

답변1

무엇보다도, 진행하기 전에 병목 현상이 있는 위치를 이해해야 합니다.

호스트는 새 하드웨어를 신속하게 추천하지만 많은 경우 하드웨어 제한이 확실하지 않은 한 새 하드웨어는 크게 개선되지 않을 수 있습니다.

하드웨어를 추가하는 것은 현명하게 수행되지 않으면 수익이 감소합니다. 한 서버에서 두 서버로 이동하면 리소스가 두 배로 늘어날 수 있지만 동일한 성능을 얻으려면 2->4, 4->8에서 이동해야 합니다.

모니터링 및 측정

시스템 지표, 로드 시간 및 기타 데이터를 모니터링하지 않는 경우 가장 먼저 시작해야 할 곳입니다. Munin 및 systat와 같은 무료 도구는 서버 솔루션에 적합합니다. 다음과 같은 도구http://Browsermob.com그리고http://webpagetest.org사용자 중심 측정항목을 제공할 수 있습니다.

세그먼트 트래픽

일반적으로 복잡한 미디어 사이트를 다른 서버로 직접 포트하는 것은 그다지 효과적이지 않습니다. 트래픽을 분할하면 투자 대비 우수한 결과를 얻을 수 있는 경우가 많습니다.

예를 들어, 매우 바쁜 플래시 게임 사이트(일당 수백만 건의 조회수)를 운영하는 클라이언트가 있습니다. 우리는 Nginx를 실행하는 저렴한 서버 풀에 플래시 게임을 오프로드했습니다. 이러한 시스템은 월별 TB의 트래픽을 밀어냅니다. 이는 보급형 상자이며 제공되는 것은 정적 콘텐츠뿐입니다.

이제 비용 측면에서 이 두 개의 입력 상자를 합치면 기본 서버보다 20% 저렴해졌습니다. 용량이 4배 이상 향상되었습니다. 방금 기본 서버를 복제하고 로드 밸런싱을 수행했다면 기껏해야 1.5~1.8배의 개선이 있었을 것입니다.

즉, 성능 문제의 본질을 이해하기 위해 약간의 노력을 기울이면 나중에 많은 비용을 절약할 수 있습니다.

DNS가 쉬워졌습니다

이는 DNS 솔루션이며 로드 밸런싱을 실제로 다루지는 않습니다. 라운드 로빈 DNS에 대해 이야기하고 있을 수도 있습니다. 이 단계에서 이것이 왜 방정식에 포함되었는지 잘 모르겠습니다.

L디렉터

LVS 클러스터의 노드를 관리하는 도구입니다. 다시 한 번 이 특정 항목이 제안되었는지 확실하지 않습니다. 일반적으로 우리는 로드 밸런서(하드웨어 또는 Nginx/HA-Proxy와 같은 것)를 사용하고 트래픽을 적절한 백엔드 서버로 라우팅합니다.

답변2

DNS 기반 부하 분산은 다음과 같은 여러 가지 이유로 좋지 않습니다.

  1. 서버에 액세스하는 방법을 제어할 수 있으며 두 서버 간에 트래픽을 다르게 또는 균등하게 할당할 수 없습니다.
  2. 더 중요한 것은 이러한 로드 밸런싱 방식은 서버 오류를 인식하지 못한다는 것입니다. 따라서 서버 중 하나가 예기치 않게 실패하면 트래픽의 일부가 손실됩니다.
  3. DNS 캐싱은 상황을 더욱 악화시킵니다.

ldirector나는 또는 같은 더 똑똑한 로드 밸런싱 기술을 사용하는 것을 선호합니다 haproxy. 이러한 유형의 로드 밸런싱을 사용하면 서버 사양에 따라 트래픽을 분산하고 여러 요소(로드, 연결 수 등)를 사용할 수 있습니다.

주목해야 할 중요한 사항이 하나 더 있습니다. 서버에 mysql DB와 사용자 콘텐츠가 있다고 말씀하셨습니다. 두 서버 간에 트래픽을 분산하려면 두 서버 간에 동기화 메커니즘이 있어야 합니다. 그렇지 않으면 사용자가 매번 다른 서버에 액세스할 때 항상 동일한 데이터를 볼 수는 없습니다.

관련 정보