사용량이 많은 ASP.NET 응용 프로그램에 대해 SQL Server 2008의 부하를 분산시키는 방법은 무엇입니까?


12

ASP.NET 및 IIS 7을 사용하는 성공적인 웹 응용 프로그램이 있다고 가정합니다.이 응용 프로그램은 SQL Server 2008 데이터베이스에 대한 많은 호출을 생성하며 가동 시간 99.9 % (다운 타임 8 시간 45 분)로 일반인에게 제공 될 것으로 예상됩니다 년).

우리의 목표는 다음과 같습니다.

  • 고객에게 다운 타임을 발생시키지 않고 서버에 Windows Update를 설치합니다.
  • 시간 초과로 인해 서버의 하드웨어 충돌로 인해 ASP.NET 응용 프로그램이 느려지지 않도록 방지

ASP.NET 응용 프로그램의로드 균형 조정과 달리로드 균형 조정 SQL은 훨씬 더 어려운 것 같습니다. Microsoft 스택을 사용하는 Micro-ISV를위한 간단한로드 균형 조정 SQL Server 2008 R2 클러스터를 설정하는 가장 좋은 방법은 무엇입니까?


몇 가지 의견 : 우리가 한 일은 연결 시간이 초과 될 때 데이터베이스에 연결하지 않고 "오프라인"모드에서 작동 할 수있는 ASP.NET 응용 프로그램입니다. 모든 기능을 갖춘 앱 대신 "기본"서비스로 성능이 저하됩니다. : 나는 또한 영감 넷플 릭스 카오스 원숭이 접근 방식에 대해 읽은 readwriteweb.com/cloud/2010/12/...

당신의 상황은 무엇입니까? 제한된 서버가있는 호스팅 된 환경에 있습니까? 아니면 현금에 액세스하고 서버 번호를 확장 할 수있는 수단으로 자신의 물건을 호스팅하고 있습니까?

@Jay : 많은 Micro-ISV와 마찬가지로 랙 스페이스 클라우드 호스팅으로 전환되는 전용 서버가 2 대 있습니다. 필요한 경우 두 개의 전용 SQL Server 상자를 구입할 수 있지만 더 나은 접근 방법이 있는지 궁금합니다.

데이터베이스를 SQL Azure로 이동하십시오. 그런 다음 서버 장애, 조달 및 업데이트의 악몽에서 벗어날 수 있습니다. 하드웨어, 소프트웨어 라이센싱, 서버 지원 시간 등과 같이 SQL Server를 구현 / 관리하는 데 드는 실제 비용보다 훨씬 적은 비용으로 작업 복사본과 함께 데이터가 두 번 복제되고로드 밸런싱 측면도 처리됩니다. .
브렛 릭비

답변:


4

고 가용성이 필요한 경우 Windows / SQL Server Clustering 또는 SQL Server Database Mirroring이 솔루션을 제공합니다. 클러스터링은 이전에 한 번도 해 본 적이 없다면 많은 계획과 친숙 함이 필요하지만 응용 프로그램에는 투명합니다.

SQL Server를 사용하여로드 균형 조정을 수행 할 수 있지만 마음에 들지 않습니다. SQL Server 앞에서 Windows NLB (Network Load Balancing)를 사용하는 솔루션입니다. NLB의 SQL Server 자체는 읽기 전용 인 경우 관리하기가 쉽지만 업데이트 가능한 구독자와 함께 트랜잭션 복제를 사용하면 읽기 / 쓰기가 가능합니다. 이 유형의 복제는 향후 버전에서 폐기 될 예정입니다.

마지막 가능성 중 하나는 Scalable Shared Databases이지만 확실히 읽기 전용입니다.

더 많은 독서 :

SQL Server 2005 고 가용성 및 Apress의 Pro SQL Server 2005/2008 복제에 대한 Allan Hirt의 Apress 책을 살펴보십시오.

확장 가능한 공유 데이터베이스 : http://technet.microsoft.com/en-us/library/ms345392.aspx


2

관계형 데이터베이스 시스템은 웹 서버와 같은 방식으로로드 밸런싱을 거의하지 않습니다. 로드 밸런싱에 대한 전통적인 접근 방식의 문제점은 모든 데이터베이스가 지속적으로 동기화되어야한다는 것입니다. 두 서버가 특정 시점에 동일한 상태를 가지지 않으면 관계형 모델은 쓸모가 없습니다.

귀하의 질문에 따르면,로드 밸런싱을 수행하려고하는 것처럼 보이지 않습니다.로드 밸런싱은 주로 서버가 처리 할 수있는 한 많은 사용자 만 각 서버를 공격하도록하는 성능 측정입니다. 고 가용성 설정 을 원하는 것 같습니다 . SQL Server를 사용하고 있다고 말하므로 장애 조치를 살펴 보겠습니다. 이는 기본 데이터베이스를 사용할 수없는 경우 클라이언트가 장애 조치 서버에 액세스하려고 시도 함을 의미합니다. SQL Server는 기본 인스턴스와 각 장애 조치를 동기화 상태로 유지하고 기본 인스턴스가 오프라인에서 온라인으로 돌아올 때 기본 인스턴스를 장애 조치로 다시 동기화하는 작업도 처리합니다.


0

좋아, 여기 간다 완료 할 수 없습니다. 앱 변경 없이는 안됩니다.

  • 업데이트 설치-클러스터링 또는 미러링을 사용하여 작동하거나 다른 컴퓨터로 빠르게 장애 조치 할 수있는 두 개의 데이터베이스가 있는지 확인하십시오. 미러링이 강력하게 선호됩니다.
  • 이를 처리하도록 응용 프로그램을 다시 작성하십시오 (예 : 연결 실패, 투명하게 다시 연결해야 복사본에 연결).

새 복사본을 배포하거나 DB 스키마를 변경할 때 유지 관리를 위해 앱을 중단해야한다는 사실을 알고 있어야합니다.


0

여기서 비용 효율적인 답변은 데이터베이스 리소스를 묶는 논리 처리 및 데이터 스토리지를 제공하는 저렴한 상품 균형 서버 계층 호스팅 응용 프로그램 서비스로 데이터베이스를 버퍼링하는 것입니다. 분명히 이것은 데이터 변동성과 캐싱 전략에 대한 약간의 생각이 필요합니다.


-1

쥬라기 답을 드리겠습니다. 목표에 "Windows 업데이트 설치"가 포함되어 있으면 구제 할 수 없습니다.

수염에 회색이 생겨서 "운영 체제 업데이트"를 겪지 않고 10 년 동안 응용 프로그램을 실행할 수있는 시간을 기억할 수 있습니다. 앱의 유효 수명은 몇 년이 아닌 수십 년으로 측정되었습니다.

따라서 조언은 다음과 같습니다. SQL Server 데이터베이스 + 응용 프로그램의 작동 버전을 설정하고 MICROSOFT 업데이트에서 데이터베이스 서버를 격리하십시오. 손상되지 않은 경우 수정하지 마십시오.

핫 스왑 가능 RAID 디스크를 사용하십시오.

하드웨어가 고장 나면 미러 이미지 데이터베이스 서버 (TomTom의 제안에 따라)를 준비하십시오.


3
팀, 결과를 Excel 파일로 저장할 수 있는데 데이터베이스를 사용하는 이유는 무엇입니까? OS에는 수많은 취약점이 있으며, 정기적 인 업데이트를 설치하지 않거나 안티 바이러스 / 방화벽 규칙을 최신 상태로 유지하는 것은 좋지 않습니다. 어떤 수준에서도 권장되지 않습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.