편리한 호스팅 미소IDC

   
 
 
 

      1차 네임서버 :
      ns1.misoidc.com
      101.79.73.101

      2차 네임서버 :
      ns2.misoidc.com
      101.79.73.105

      어제 : 248 ,오늘 : 140
      전체 : 1,154,459


     

 

 
작성일 : 10-06-28 08:54
DRBD split brain 처리하기
 글쓴이 : 싼웹호스팅
조회 : 23,368  

DRBD 에서 split brain 상태가 되었을때 다음과 같이 처리를 할 수 있다.
사실 split brain 상태를 만들기위해 랜선을 수차례 뽑았다 연결을 하여 만들었다.

아래처럼 cs 상태가 StandAlone 으로 보이면 Split brain 상태가 된다.
이때 처리 방법은 slave 쪽의 데이터를 포기하고 primary 쪽의 데이터와 다시 동기화를 하는 것이다.
실제 처리 하는 과정을 살펴보자.

stor01은 기존에 primary 노드로 사용을 하고 있던 장비로 현재 StandAlone 상태로 돌고 있다.

stor01:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor01, 2009-01-02 10:08:59
 0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r---
    ns:5405948 nr:0 dw:150414192 dr:996595504 al:37948 bm:559 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:140180
 1: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r---
    ns:0 nr:0 dw:0 dr:36148328 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

stor02 서버는 기존에 Secondary 로 돌고 잇다가 StandAlone 상태로 현재 돌고 있다.
stor02:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor02, 2009-01-02 10:09:38
 0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r---
    ns:0 nr:5405948 dw:150302972 dr:976818256 al:137 bm:751 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
 1: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r---
    ns:0 nr:0 dw:0 dr:36148640 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

stor02 에서 DRBD resource 이름을 확인한다.
stor02:~# drbdadm status
<drbd-status version="8.3.0" api="88">
<resources config_file="/etc/drbd.conf">
<resource minor="0" name="bigdisk" cs="StandAlone" ro1="Secondary" ro2="Unknown" ds1="UpToDate" ds2="DUnknown" />
<resource minor="1" name="smalldisk" cs="StandAlone" ro1="Secondary" ro2="Unknown" ds1="UpToDate" ds2="DUnknown" />
</resources>
</drbd-status>

만약 해당 resource 가 secondary 상태가 아니라면 아래 처럼 secondary 상태로 만들어 준다.
stor02:~# drbdadm secondary smalldisk

아래 명령이 가장 중요한 것으로 현재 서버 즉 stor02 서버에서 smalldisk resource 의 데이터를 포기하고 primary 서버의 데이터와 다시 동기화를 하겠다는 명령이다. 만약 원본 데이터가 stor02가 더 최신의 데이터가 있는 상태였다면 날리게 되는 것이다. 주의해서 명령을 날려야 한다.
stor02:~# drbdadm -- --discard-my-data connect smalldisk

위 명령을 실행하고 나면 상태가 WFConnection 상태가 된다.
즉 primary 로 부터 데이터를 받아 들일 준비가 된 것으로 기다리고 있다는 것이다.
stor02:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor02, 2009-01-02 10:09:38
 0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r---
    ns:0 nr:5405948 dw:150302972 dr:976818256 al:137 bm:751 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
 1: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r---
    ns:0 nr:0 dw:0 dr:36148640 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0


stor01 primary 서버에서는 해당 resource 에 다시 연결만 해 주면 된다.
stor01:~# drbdadm connect smalldisk

위 명령이 실행 되고 나면 아래처럼 cs 상태가 Connected 로 되고 Primary/Secondary 가 UpToDate 상태가 된다.
stor01:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor01, 2009-01-02 10:08:59
 0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r---
    ns:5405948 nr:0 dw:150414696 dr:996595552 al:37948 bm:559 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:140300
 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---
    ns:0 nr:0 dw:0 dr:36148328 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0


이 서버는 DRBD 볼륨이 두개 있어서 한개 더 작업을 해야 한다.
이제 두번째 DRBD 볼륨을 정상화 시켜 보자.

먼저 stor02 secondary 서버에서 작업을 먼저 한다.
stor02:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor02, 2009-01-02 10:09:38
 0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r---
    ns:0 nr:5405948 dw:150302972 dr:976818256 al:137 bm:751 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
 1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r---
    ns:0 nr:0 dw:0 dr:36148640 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
stor02:~# drbdadm -- --discard-my-data connect bigdisk
stor02:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor02, 2009-01-02 10:09:38
 0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r---
    ns:0 nr:0 dw:150302972 dr:976818256 al:137 bm:751 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
 1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r---
    ns:0 nr:0 dw:0 dr:36148640 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

stor01 primary 서버에서 connect 를 시켜 준다.
데이터 양이 많은 경우 동기화 되는 모습을 볼 수 도 있다.
stor01:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor01,          2009-01-02 10:08:59
 0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r---
    ns:5405948 nr:0 dw:150417472 dr:996596012 al:37948 bm:559 lo:0 pe:0 u         a:0 ap:0 ep:1 wo:b oos:141336
 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---
    ns:0 nr:0 dw:0 dr:36148328 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oo         s:0
stor01:~# drbdadm connect bigdisk
stor01:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor01,          2009-01-02 10:08:59
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---
    ns:74556 nr:0 dw:150417472 dr:996733412 al:37948 bm:600 lo:1 pe:47 ua         :2081 ap:0 ep:1 wo:b oos:68272
        [=========>..........] sync'ed: 54.3% (68272/141336)K
        finish: 0:00:03 speed: 18,264 (18,264) K/sec
 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C rap-
    ns:0 nr:0 dw:0 dr:36148328 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oo         s:0
stor01:~# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by
root@stor01,          2009-01-02 10:08:59
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---
    ns:141352 nr:0 dw:150417488 dr:996737356 al:37948 bm:691 lo:0 pe:0 ua         :0 ap:0 ep:1 wo:b oos:0
 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---
    ns:0 nr:0 dw:0 dr:36148328 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oo         s:0


 
 

Total 78
번호 제   목 글쓴이 날짜 조회
78 운영자개인자료 싼웹호스팅 11-06 6
77 29Trac & Subversion 백업 및 복구 싼웹호스팅 02-24 17949
76 오라클 폴더 퍼미션 싼웹호스팅 11-18 18782
75 php 컴파일시 Cannot find libmysqlclient_r 오류 발생.. 싼웹호스팅 01-03 18814
74 백업 슈퍼블럭 확인하기 싼웹호스팅 07-21 18818
73 리눅스 특정 날짜 이후 변경 파일 찾기 싼웹호스팅 03-31 18890
72 mysql 사용자 계정 추가하기 싼웹호스팅 11-01 19388
71 vsftp 에서 상위 폴더 이동 막기 싼웹호스팅 07-19 20107
70 이미지 외부링크 차단 싼웹호스팅 12-16 20538
69 MySQL 로그파일 정리하기 싼웹호스팅 12-26 20694
68 oracle 10g설치 문서 싼웹호스팅 07-06 21319
67 php 함수제한 싼웹호스팅 01-14 21358
66 [qmail] 설치 대행 싼웹호스팅 10-11 21375
65 회선별 wi-fi 패스워드 싼웹호스팅 07-01 21401
64 SQL Server 2005에서 DBCC SHRINKFILE 문을 사용하여 트랜잭션 … 싼웹호스팅 12-07 22147
 1  2  3  4  5  6