SharedIT | 묻고 답하기(AMP)

MSSQL 이중화 방법 문의 드립니다.

웹사이트는 로드밸런싱을 돌리고 있으나 DB 서버(MS-SQL 2017 Standard)는 한대로 운영 중 입니다.

사용자가 몰릴때 웹사이트는 분산 효과가 있으나 DB 서버는 그렇지 못해 DB 서버에 대한 이중화를 진행하고자 하는데요 경험이 없어 어떤식으로 해야할지 감이 안오네요.

구축 목적은 동시 접속에 따른 부하 분산이 목적이며 어떤 방식으로 진행하면 좋은지 조언 부탁드립니다.

Tags : 태그가 없습니다.

5개의 답변이 있습니다.

thewon
  0 추천 | 3년 이하 전

제가 경험했던 HA 솔루션으로 

Veritas InfoScale, 맨택의 MCCS등이 있습니다.

운영관리가 심플해져서 추천드려요~ 참고해보시면 좋을거 같아요~

아고나라 | 3년 이하 전

네. 참고하도록 하겠습니다. 고맙습니다

wansoo
  0 추천 | 3년 이하 전

이중화를 구현하기 위한 다양한 방법들이 있을 것 같은데요.

HA 솔루션을 이용해서 액티브-스탠바이, 액티브-액티브 방식의 2중화를 구현하는 방법도 있을 것 같고, Clustring으로 서버 풀을 구성하여 부하 분산 형태로 구현할 수도 있겠고요.

저렴하게 구현하려면 이중화, 클러스터링을 위한 오픈 소스를 활용할 수도 있겠지만, 직접해야 해서 복잡한 작업에 위험 부담을 떠 안아야 하는 단점이 있겠고...

편하고, 안전하게 구현하려면 상용 솔루션을 제공하는 업체의 도움을 받는게 좋겠고...


Database는 쓰기 작업보다 읽기 작업이 많은 서비스 이다 보니...

부하 분산을 목적으로 한다면 읽기 작업 위주의 접속을 분리 시켜 서비스 해 주는 방식으로 구현하는 것도 괜찮은 방법이 될 수 있지 않을까 싶어 보이네요.

MS-SQL의 Replication 기능을 이용해서 읽기용 서버를 추가 구축해서 데이터 조회용 접속을 처리하도록 해도 되지 않을까 싶어 보이네요.


기본 서버에서는 쓰기/읽기 작업을 모두 처리하고, 추가 서버는 기본 서버를 실시간 복제 동기화 시켜 두고서 조회 위주의 작업을 처리하게 해두었다가,

만약 기본 서버에 장애가 생겼을 경우에는 읽기 전용 서버를 기본 서버로 수기 전환 시켜서 쓰기/읽기 작업 모두 처리 하도록 한다면 저렴한 비용에, 위험 부담도 없이 원하는 목적을 구현할 수 있지 않을까 싶어 보이네요.

wansoo | 3년 이하 전

MS SQL에 다양한 replication 기능을 제공하고 있네요.

Replication

REPLICATION

Feature

Enterprise

Standard

Web

Express with Advanced Services

Express

Heterogeneous subscribers

Yes

Yes

No

No

No

Merge replication

Yes

Yes

Yes (Subscriber only)

Yes (Subscriber only)

Yes (Subscriber only)

Oracle publishing

Yes

No

No

No

No

Peer to peer transactional replication

Yes

No

No

No

No

Snapshot replication

Yes

Yes

Yes (Subscriber only)

Yes (Subscriber only)

Yes (Subscriber only)

SQL Server change tracking

Yes

Yes

Yes

Yes

Yes

Transactional replication

Yes

Yes

Yes (Subscriber only)

Yes (Subscriber only)

Yes (Subscriber only)

Transactional replication to Azure

Yes

Yes

No

No

No

Transactional replication updateable subscription

Yes

Yes

No

No

No

Genghis Khan
  0 추천 | 3년 이하 전

가상머신 운영중이면 vCPU와 memory 올리셔야 합니다

vCPU : 8  메모리 40G  먼저 올리시고 test 하고

안되면 DB 클러스터 구성하세요

아고나라 | 3년 이하 전

네  의견 고맙습니다~

빨간신발
  0 추천 | 3년 이하 전

저희는 이전에 액티브-스탠바이로 운영하다가

이번 프로젝트부터 액티브-액티브로 변경했습니다.

아직 오픈 전이라 어떨지는 모르지만.. 이전보다는 당연 좋아질거라 생각합니다.

always on으로 액티브-액티브로 구성했는데

always on으로 사용하려면 std가 아니고 ent가 필요하고 서버가 2대라서 라이센스도 2배로 필요합니다.

비용이 꽤 많이 발생하는 관계로 좀 저렴하게 성능을 높이려면 h/w적으로 접근해보세요.

3.0GHz 20Core Cpu를 사용중이면 4.0GHz 20Core Cpu로 변경하면

단순계산으로 1.5배의 성능향상이 있습니다.

hdd로 구성된 디스크를 SSD로 변경하면 I/O 병목현상이 개선되어 많은 성능향상이 있습니다.

2중화 구성은 매우 많은 비용이 발생하므로 사전 확인하셔서 개선할 수 있는 부분을 먼저 개선해보세요.


아고나라 | 3년 이하 전

자세한 답변 고맙습니다.

말씀하신데로 always on 은 쉽지않아보이고 서버 스팩을 조정하는게 현실적인 대안으로 이해되네요.

현재 AWS 를 이용중인데 혹시 권장하시는 인스턴스 타입이 있으실까요?

현재는 t3.xlarge 사용 중입니다.(vCPU : 4, 16 RAM)

빨간신발 | 3년 이하 전

물리서버가 아니고 가상머신이네요..

4vCore면 물리코어 2개인데

아무래도 상위 서비스로 올려보시는 것 말고는 뭐라 조언할게 없습니다.

한그루
  0 추천 | 3년 이하 전

Always on 기능으로 이중화 하고 한 쪽 서버를 read replica 로 운영 할 수 있는 걸로 알고 있습니다. read access 부하를 덜 수 있죠. 
그리고 사내에 MS SQL 튜닝 전문가가 없으면 전문 업체에 한 번 의뢰해서 성능 분석을 받아보시면 큰 도움이 될 것 같습니다.

서버 리소스, Disk IOPS, 쿼리 병목등 종합적으로 진단하고 개선해주는데 비용은 비싸지만 효과는 정말 만족 스러웠습니다.


아고나라 | 3년 이하 전

Always on 기능이 Enterprise 버전에서 지원되는 기능이라 사용 할 수가 없네요.

도움 고맙습니다.