편리한 호스팅 미소IDC

   
 
 
 

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

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

      어제 : 516 ,오늘 : 300
      전체 : 1,772,614


     

 

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

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
번호 제   목 글쓴이 날짜 조회
48 윈도우에서 오라클 InstantClient 설치 후 Toad 연결법 싼웹호스팅 07-07 74683
47 오라클 폴더 퍼미션 싼웹호스팅 11-18 73062
46 wowza live 스트리밍 싼웹호스팅 10-11 73061
45 [CentOS] Tomcat 7.0.4 설치 (수정1) 싼웹호스팅 11-16 63918
44 레이어 팝업 - 닫기&오늘 하루 열지 않기 싼웹호스팅 06-12 63806
43 아파치에 GeoIP 모듈 설치하는 방법 싼웹호스팅 02-11 61344
42 mysql Replicating 싼웹호스팅 10-31 56543
41 [MS-SQL]SQL Server 2005 연결오류 진단방법 싼웹호스팅 04-04 53374
40 [qmail] 설치 대행 싼웹호스팅 10-11 51544
39 아파치 웹서버 무력화시킬 심각한 DoS 결함 발견 싼웹호스팅 10-20 50540
38 Subversion/Trac 백업 및 복구 싼웹호스팅 11-30 50279
37 MS-SQL 리플리케이션 (병합복제) 테이블 추가 방법 싼웹호스팅 05-09 49347
36 DRBD split brain 처리하기 싼웹호스팅 06-28 49121
35 Force10 OS 펌웨어 업그레이드 싼웹호스팅 06-28 48975
34 SSH 기본명령어 최고관리자 06-22 47871
 1  2  3  4  5  6