해커즈뉴스 / 해커대학

Donation bitcoin(기부용 비트코인 주소)

 
1Pq3K39XM5xx4CifGKgppXeavtWNNHH7K4
 
기부하신 비트코인은 "보안 취약 계층"을 위해 사용되고 있습니다.
 
 

Donation bitcoin(기부용 비트코인 주소)

 
1Pq3K39XM5xx4CifGKgppXeavtWNNHH7K4
 
기부하신 비트코인은 "보안 취약 계층"을 위해 사용되고 있습니다.
 

공지

 

1. 크롬 브라우저로 접속시 나오는 악성코드 경고창은 구글 크롬의 에러, 즉 오탐(탐지 오류)이므로 무시하시면 됩니다.

2. 이 사이트는 안전하며 깨끗하다는 것을 알려 드립니다.

 




설치

프로그래밍
자료실

MSSQL 팁
클러스터링과 스탠바이 서버  
새 페이지 1

이번에 소개해 드릴 내용은 클러스터링과 스탠바이 서버에 대한 내용입니다. 클러스터링과 스텐바이서버는 시스템의 다운타임을 줄이기 위한 방편입니다. 이런 이야기가 있습니다.

"대부분의 시스템 문제는 절반이상 사람의 문제로 발생한다."

즉, 문제가 발생하지 않을 수 있는 부분인데.. 관리자나 개발자 등의 실수로 중대한 문제가 발생해 고객에게 서비스를 제공할 수 없는 문제가 발생한다는 의미 입니다. 운영체제 시스템의 문제 하드웨어 시스템상의 문제 등 여러가지 상황이 있을 수 있으며 클러스터링과 스탠바이 서버는 이런 문제 상황시 복구 시간을 최소한으로 줄일 수 있게 도움을 줍니다. 비슷하게 앞에서 설명드린 RAID와 같은 결함 허용 시스템 역시 있으나.. RAID와의 차이로 볼때.. 디스크 뿐 아닌 전체 시스템 다운에 대한 문제를 해결할 수 있습니다. 하지만 클러스터링과 스탠바이서버는 이를 해결할 수 있게 됩니다. 먼저 간단히 클러스터링에 대해서 소개를 해 드리지요.

1. 클러스터링 서비스

그림에서 보시는 바와 같이 기본적인 2-Node 클러스터링입니다. Public Network는 일반적인 어플리케이션을 사용하는 엔드유저일수도 있으며 여러대의 로드 밸런싱이 구현된 웹서버들일 수도 있지요. 두 노드의 시스템은 가운데에 보이는 Virtual SQL Server를 공유합니다. 당연히 이 시스템은 대단히 비싼 공유 디스크로 이루어져 있습니다. 아울러 두 노드는 Private Network로 서로 계속해서 Heart Beat Signal을 주고 받습니다. 심장 뛰는 소리를 주고 받는다고 생각해 보세요. 심장 뛰는 소리를 서로 주고 받다가.. 시스템에서 응답이 없으면? 이를 장애상태로 정의짓고.. 문제가 발생한 시스템의 모든 리소스를 Fail Over 받습니다. 클러스터링의 정확한 용어는 Fail Over Clustering 입니다. 이렇게 실패로 넘겨받는다. 의 의미가 되는 거지요.

관리자가 장애를 확인후 다시 시스템을 정상 가동 시키고 원상 복구를 시키면.. 다시 Fail Back이 되어서 양측은 서로 Heart Beat Signal을 주고 받으며 시스템 운영 상태가 됩니다. 두개의 시스템이 동시에 문제가 생길 경우는 거의 없겠지요.
이런 클러스터링 시스템을 구현하기 위해서는 먼저 Windows2000 어드밴스드 서버 이상의 시스템에 적절히 클러스터링 서비스가 구축 되어야 합니다. 선행되는 하드웨어적인 요건으로도.. 공유 디스크가 필수적이며두 Node와 공유디스크의 연결은 일반적으로 Fiber Optic 케이블로 연결해 대단히 빠른 Private Network를 유지해 줘야 합니다.
- SCSI를 사용하는 케이스도 있는 것으로 알고 있습니다.

또한 Shared Disk역시 일반적으로 Compaq, Unisys 등의 대형 벤더에서 제공하는 Disk Array방식을 사용해야 하므로 대단한 비용이 추가 되게 됩니다. IP영역의 경우 DHCP의 IP는 사용이 불가하며 반드시 Static IP가 필수적입니다. 개인적으로 다행한점은 터미널 서비스를 제공해 구축해도 큰 무리가 없으므로 좁은 IDC에서 밤새 낑낑댈 필요가 없어 조금 다행이지요. Windows에 클러스터 서비스가 정확히 구축되면 SQL서버에 클러스터링 서비스를 구축할 수 있습니다.

설치를 자세히 보신분은 세번째 가상 서버가 아마 회색으로 비활성화 되었던 것이 기억 나실 겁니다. 클러스터링 서비스가 구축될 경우만 활성화가 되는 부분 입니다.

클러스터 디스크 구성

을 마치고 클러스터 관리자에서 사용 가능한 리소스 구성을 마치시면 적절하게 클러스터링 서비스를 운영하실 수 있게 됩니다.

클러스터링 관리자 화면 클러스터링은 여러가지 방식이 있습니다.
대표적으로 Active-Active, Active-Passive, 4-Node-Active-Active-Active-Active 방식이 있습니다.
간단히 소개해 드리면 Active-Passive 방식은 두 노드에서 클러스터링이 이루어지며한 시스템만 서비스를 제공하고 두번째 노드의 시스템은 첫번째 시스템이 문제가 발생할 경우에만 서비스를 제공하게 되는 겁니다.

Active-Active 방식은 두 시스템이 동시에 서비스를 제공하며 양쪽 서버에서 SQL서버가 서비스 되는 것입니다. 제약으로 두 시스템은 독립적이 되며 데이터 공유는 불가해 집니다. - 하지만 데이터의 공유는 분산 분할 뷰를 이용하면? 가능해 지지요.
- 뷰 참고

4-Node에 대한 이야기는 Windows2000 데이터센터 서버에 국한되며 여기서 말하려는 클러스터링 서비스를 한참 뛰어 넘으므로 접도록 하겠습니다.

주의하실 점은 클러스터링 서비스는 극한의 System Engneering 작업입니다.대단히 많은 연습과 가상 시나리오로 서비스 다운을 테스트 해 보셔야 합니다. 여담으로 대부분의 베리타스 등과 같은 3rd-Party업체에서 제공하는 클러스터링 서비스가 있습니다만 실제 내부적으로는 MSCS(Microsoft Clustering Service) 의 프로그래밍 API를 이용해 생성된 것이며 언급해 드린 MSCS의 내용과 같다고보시면 됩니다.  또한 대부분 클러스터링 서비스의 도입은 하드웨어 구입 단계에서 결정하게 됩니다.

Compaq이나 Unisys등의 하드웨어 벤더에서는 하드웨어 도입시 클러스터링 서비스를 구축해주는 서비스가 있습니다. 개인적으로 이런 하드웨어 제공업체의 기술자는 대단히 깔끔하게 클러스터링 서비스를 구축해 주므로 적절히 쇼부를 보시면 하드웨어 가격으로 클러스터링 서비스를 구축 가능하지요. 또한 국내의 조금 큰 SI업체에서 역시 이를 추가 비용을 받고 제공해주는 곳들 역시 있으므로 참고 하시길 바랍니다.

추가적으로 클러스터링 서비스를 구축하는 이유는 시스템의 문제로 인한 다운타임을 줄여 보자는 것이 중요한 목적이며 대단한 비용이 부담됩니다. MS는 대단히 빠른 시간에 서비스팩이나 핫픽스 등 어프로치 버젼을 지속적으로 웹을 통해 제공해 빠르게 발생하는 문제에 대응합니다. - 대단히 빠른 편입니다.

문제는 서비스팩을 설치하거나 핫픽스 등을 적용할 경우
       1. 클러스터링을 끊는다.
       2. 노드1에 서비스팩을 적용한다.
       3. 노드1을 리붓한다.
       4. 노드 2도 같은 작업을 한다. 로 생각하실지 모릅니다만

Windows2000 클러스터링 시스템부터는 Rolling Upgrade라고 해서시스템의 다운타임없이 말그대로 굴러가는도중에 업그레이드를 가능하게하는 서비스를 제공합니다. 이에대한 상세한 정보는 영문:Windows2000 Clustering Performing a Rolling Upgrade 를 참고 하시길 바랍니다. - 아울러 SQLER 자료실에서 영문 기술 백서를 다운로드 받으실 수 있습니다. - 참고 하세요. 또한 Fail-over 클러스터링에 대한 FAQ를 다음에서 보실 수 있으니 참고 하세요.

예를들면 Full-Text-Search(화일로 저장 되지요? 클러스터링 될까요?)에 대한 정보도 보실 수 있습니다.
영문:Fail-over Clustering FAQ 또한 NT시스템에 MSCS를 설치한후 SQL7 엔터프라이즈 에디션에 클러스터링 서비스 구축에대한 정보를 보고 싶으시면 영문 : MSCS에 SQL7엔터프라이즈 에디션 설치 를 참고 하시길 바랍니다.

아울러 Windows2000 어드밴스드 서버에서 클러스터링 구축 후 SQL2000 클러스터링 서비스에 대한 글을 보고 싶으시면
영문 : Step-by-Step Guide to Clustering SQL Server 2000  를 참고하시길 바라며
http://www.sqlservercentral.com 에서 제공하는 정보 입니다.

필요하시면 이곳에 가입하는 절차가 필요할 수 있으니 참고 하시길 바랍니다. MS사이트에서 SQL2000에 대한 클러스터링 관련 정보 역시 제공하는 것으로 알고 있으나  2001년 8월 현재 제가 못찾겠네요. - 찾으시면 제게 메일로 알려 주심 감사하겠습니다. 


자 클러스터링에 대한 이야기는 조금 접구요. 이제 로그 쉬핑 - (한글로 로그 전달)을 알아 보도록 하지요.

2. 로그 쉬핑(로그 전달)
로그 쉬핑을 하나의 그림으로 잘 표현하는게 있습니다.

별거 아닌것 같지만 대단히 좋은 그림입니다. 로그쉬핑의 원리는 이렇습니다. 클러스터링이라는 고비용의 시스템을 적용하기 어려운 곳입니다. 실시간 논스톱 운영이 가능한 장점이 있지만 대단히 비싸서 적용하기 힘듭니다. 실시간 논스톱 운영이 불가해서 한 10~15분 정도의 다운타임이 있어도 괜찮으니 저렴한 비용의 시스템을 회사 솔루션에 사용하고 싶을 경우가 있을 겁니다. 적절한게 역시 이 로그 쉬핑입니다. 위 그림에서 Primary 시스템이 보이실 겁니다. 실제 운용되는 시스템이지요. 먼저 풀 백업본을 Secondary들에게 보내서 Secondary들이 리스토어 합니다.

- 그럼 Primary 시스템과 Secondary 시스템은 같은 데이터를 가지게 되겠지요? 그렇지만 지속적으로 사용자가 있는 Primary 시스템은 계속 UPDATE나 INSERT, DELETE와 같은 작업이 발생 하는데.. 이것은 어떻게 하나요?

바로 로그를 전달해 주는 겁니다! 데이터가 변경되면 특정 분의 간격으로 변경된 데이터를 몰아서 Secondary에 보냅니다. Secondary는 Stand by 모드 상태로 계속 데이터베이스에 로그를 리스토어 합니다. 그럼? Primary 서버와 Secondary 서버들은? 일정 시간 간격으로 동기화 되는 것이지요. 이것을 그림 왼쪽의 Monitor 서버에서 관리해줄수 있으며 문제 발생시 지속적으로 확인할 수 있습니다.

만약 Primary 서버가 문제가 발생해 죽었다면? 관리자가 이때는 개입해야 합니다. - 비싼 클러스터링 서비스는 자동이지만 비교적 저렴한 로그쉬핑은 관리자가 개입해서 작업해야 합니다. -

관리자가 5분만에 이 사실을 알았습니다. 그리고 Primary 서버에서 만약 로그 백업이 가능하다면? - 백업합니다. 불가하면 할 수 없지요. 백업한 로그를 Secondary서버들에게 수작업으로 보냅니다. Secondary 서버에서 Primary 서버에서 지금 방금 받은 로그를 복구 합니다. 이때 복구시 RESTORE ~ WITH RECOVERY 모드로 복구하면?

Secondary 시스템의 디비가 일반적인 DB로 되며 사용 가능해 집니다. 참고로 Secondary 시스템들의 DB는 로그 시핑시 Stand BY상태로 오로지 READ-Only상태 입니다.

- 여기서 로그를 받을 수 있다면? 문제가 발생한 시각까지의 모든 데이터를 복구할 수 있겠지요. 급하다고 로그를 버리지 마시고 꼭 로그 백업이 가능한지 확인하고 백업이 되면 Secondary 시스템으로 보내 가급적 많은 데이터를 복구해야 겠지요.

만약 Primary 시스템의 DB에서 로그를 받지 못했다면? Secondary 시스템을 Stand BY 상태에서 RECOVERY모드로 그냥 바꾸면 됩니다. 그런후.. 어플리케이션들이 계속 요청을 하겠지요? 어플리케이션이 DB에 연결할때 무엇으로 하나요? 예를들면

 Provider= sqloledb;Data Source=DB서버IP또는서버명;Initial Catalog=사용할DB;

User ID=계정명;Password=계정암호;

식으로 사용하실 겁니다. 위는 OLEDB연결 방식이고 ODBC역시 ODBC에서 보실 수 있지요. 이때.. 어플리케이션들이 사용하는 Data Source부분의 IP나 서버명의 시스템인 Primary 시스템이 죽었지만.. Secondary 시스템의 IP또는 컴이름을 이전 Primary 시스템의 컴이름이나 IP로 바꿔주면? Secondary 였던 시스템은 현재 정상DB이니 운용이 가능해 지지요. 어떠세요? 감이 잡히시나요? 이것이 바로 로그 쉬핑이며 약간의 딜레이 - 5분~15분 정도의 타임이 걸릴 수 있습니다. 관리자의 발견이 늦어지면? 하루나 일주일이 될수도 있겠지요.

또한 개인적으로 로그시핑을 하면서 느낀 점인데 문제는 다시 롤 체인지 - Primary 서버를 살린후 잠시 Primary서버 역할을 하는 Secondary 시스템을 원상태로 돌리기는 제가 못하는건지.. 안되는건지 잘 안되더군요. 혹시 이부분 롤 체인지를 하는 방법 - 수작업으로 말구.. 을 알고 계시는분 있으시면 제게 메일등으로 알려 주시면 감사하겠습니다.

로그쉬핑을 실제로 구축하는데 아주 좋은 사이트가 있습니다. SQLER사이트에 좋은 강좌를 제공해 주시는 거북엄마님의 글입니다.대단히 좋은 강좌를 케이스 스터디 형식으로 풀어 놓은 강좌이며 거북엄마님의 웹사이트에서 다른 좋은 여러 강좌를  보실 수 있으니 참고 하시길 바랍니다.

스탠바이 서버에 대한 강좌는 
거북엄마님의 스탠바이서버 강좌 에서 보실수 있으니 참고 하시구요. 또한 SQL서버의 매인트넌스 플랜을 이용해 생성한 로그쉬핑 강좌는 거북엄마님의 로그쉬핑 강좌를 참고하시면 많은 도움이 되실 겁니다. 그외에도 많은 좋은 강좌가 있으니 참고 하시길 바랍니다. 자 이렇게 클러스터링과 스탠바이 서버역시 지나 가는군요. 개발일을 주로 하시는 분들께는 조금 난해할지도 모르겠네요. 많은 도움 되셨길 바라구요.

그럼 이만

 

                    수정/삭제     이전글 다음글    
번호제 목첨부조회
9   mdf화일만 또는 mdf와 ldf 화일만 남았을 ...    2720
8   클러스터링과 스탠바이 서버    3848
7   백업과 복구의 전략    3320
6   백업과 복구에 대한 이해    3479
5   반드시 MS의 SQLServer2000 이어야 하는가?    2947
4   Windows DNA와 SQLServer2000    2615
3   Windows2000(NT)과 SQLServer2K    2717
2   왜 데이터베이스를 만들었으며 왜 사용하는...    2352
1   SQLServer 2000이 나오기까지    2972

 
      목록