편리한 호스팅 미소IDC

   
 
 
 

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

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

      어제 : 606 ,오늘 : 261
      전체 : 1,777,606


     

 

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

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
번호 제   목 글쓴이 날짜 조회
18 Wowza 설치 및 튜닝 싼웹호스팅 10-11 210413
17 wowza live 스트리밍 싼웹호스팅 10-11 73119
16 [qmail] 설치 대행 싼웹호스팅 10-11 51602
15 오라클 DB 생성 싼웹호스팅 07-13 46280
14 [CREATE DATABASE] 오라클 DB 수동생성 ( CREATE DATABASE 이용) 싼웹호스팅 07-07 89677
13 윈도우에서 오라클 InstantClient 설치 후 Toad 연결법 싼웹호스팅 07-07 74758
12 oracle 10g설치 문서 싼웹호스팅 07-06 28512
11 CentOS 5.5 기반 Oracle 10g 설치(2. 환경 변수 설정) 싼웹호스팅 07-06 42081
10 CentOS 5.5 기반 Oracle 10g 설치(1. OS 설치) 싼웹호스팅 07-06 36101
9 회선별 wi-fi 패스워드 싼웹호스팅 07-01 29182
8 CentOS 4.x 버젼에 php5, mysql5 를 yum 으로 설치 가능하게하기 싼웹호스팅 06-29 77284
7 톰캣 아파치 연동시 간단한 설정 싼웹호스팅 06-28 87966
6 jsp 계정 셋팅과 버추얼호스트 설정 싼웹호스팅 06-28 232633
5 drbd sync 깨졌을때 [solved] 싼웹호스팅 06-28 37324
4 DRBD split brain 처리하기 싼웹호스팅 06-28 49179
 1  2  3  4  5  6