Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


DRX 는 DRX는 DRBD 구성파일과 DRX 자체 구성파일을 통해 작성하여 구성합니다.

  • DRX는 DRBD의 기존 구성파일을 DRBD 구성파일(drbd.conf)은 DRBD가 설치된 경로의 파일을 그대로 사용할 수 있으며, 보통의 경우에는 보통 이미 구성된 작성된 DRBD구성파일 내의 일부 설정을 수정하여 구성합니다. 필수적으로 구성해야 하며 구성파일의 경로는 DRBD 설치 경로에서 변경하지 않습니다.
  • DRX의 자체 구동 속성을 지정하기 위해 옵션을 조정할 경우 drx.conf 파일을 정의 합니다작성합니다. 특별한 경우가 아니라면 작성할 필요는 없습니다.


4.1. 구성 파일

DRX는 기본적으로 관리의 편의를 위해서 각 노드의 구성파일을 동일한 내용의 "drbd.conf" 파일로 일치 시키도록 통일시키도록 권장 하지만 절대적인 것은 필수사항은 아니며 구성방식에 따라서 각 노드의 노드별 구성내용이 달라질 수 있고 구성파일명, 경로 등도 별도로 지정할 수 있습니다. DRX 의 주요 구성 항목은 다음과 같습니다.

  • 연결 구성: DRBD 와 연동하기 위한 DRX inbound IP, outbound IP 주소 설정
  • 버퍼 구성: 리소스(채널) 별 버퍼 크기 설정
  • 압축/암호화 구성: 압축/암호화 기능 ON/OFF 설정

DRX는 DRBD 구성파일 내의 "proxy" 섹션에서 버퍼 크기를 설정하고 호스트 섹션 내의 "proxy on" 섹션에서 DRX IP 주소를 설정합니다. 압축,암호화 설정은 proxy 섹션내의 plugin 서브섹션에서 기술합니다. 아래의 내용은 기본적인 DRX 구성 양식이며 1:1 복제와 1:N 복제 시 구성에 연동에 다소 차이가 있습니다.

 

Info
title1:1 구성
  • on [hostname] 섹션 내의 proxy on [ proxy on hostname ] 섹션
    • inside [ proxy inside ip address]:[ port ]
    • outside [ proxy inside ip address ]:[ port]
  • Proxy 섹션
    • memlimit
    • plugin 섹션
      • compressor [zlib | lzma | iqa] level [1~9]
      • crypto openssl

...

4.1.1. 로컬 구성

  • node1 과 node2 같은 로컬 시스템 상에 DRX가 설치, 구동되는 설정으로 node1과 node2의 "drbd.conf"의 내용은 양 노드 동일합니다.
  • 다음은 1:1 복제 구성과 1:2 복제 구성의 예입니다.
  • 각각의 포트 정보는 방화벽에 의해 예외 처리 적용이 되어야 하며, 중복 사용되는 포트가 없도록 구성하는 것에 유의하십시오.

방식Windows 구성파일Linux 구성파일비고
1:1 복제 (2proxy)


Code Block
titledrbd.conf
resource r0 {
    device d minor 1;      
    disk d;                 
    meta-disk f;           

 	net {
        protocol A;
		sndbuf-size 20M;
		on-congestion pull-ahead;
		congestion-fill 480M;
    }

	proxy {
      	memlimit 500M; # DRX TX Buffer
		plugin {
			#compressor zlib level 1;
			#crypto openssl;
		}
  	}
 
	on node1 {
        address   10.10.0.250:7789;
        node-id 0;          
        proxy on node1 {
            inside 10.10.0.250:7790;
            outside 10.10.0.250:7791;
        }
    }
    
	on node2 {
        address   10.10.0.253:7789;
        node-id 1;
        proxy on node2 {
            inside 10.10.0.253:7790;
            outside 10.10.0.253:7791;
        }
    }
}



Code Block
titledrbd.conf
resource r0 {
    device /dev/drbd1;
    disk /dev/sdb1;
    meta-disk internal;

 	net {
        protocol A;
		sndbuf-size 10M;
		on-congestion pull-ahead;
		congestion-fill 480M;
    }

	proxy {
      	memlimit 500M; # DRX TX Buffer
		plugin {
			#compressor zlib level 1;
			#crypto openssl;
		}
  	}

    on node1 {
        address 100.100.10.31:7789;
        proxy on node1 {
            inside 100.100.10.31:7790;
            outside 100.100.10.31:7791;
        }
    }
    on node2 {
        address 100.100.10.41:7789;
        proxy on node2 {
            inside 100.100.100.41:7790;
            outside 100.100.100.41:7791;
        }
    } 
}




1:2 복제

  • Windows: MDR 구성
  • Linux: stacked 1:2 프록시 구성


Code Block
titledrbd.conf
resource r2 {
  startup {
      wfc-timeout 3;
  }
  
	proxy {
      memlimit 500M;
  }
  
  net {
      protocol A;
      verify-alg crc32c;
      on-congestion pull-ahead; 
      sndbuf-size 20M;
      congestion-fill 480M;
  }

  device e minor 2;
  disk	e;
  meta-disk	g "C:/r2_meta.vhd";

  on node1 {
    node-id	1;    
  }
  on node2 {
    node-id	2;
  }
  on node3 {
    node-id	3;
  }
  
  connection DR-node1-node3 { # DR 로 시작하고 노드간 구분자 = 로 표기 필요

	 host node1 address 100.100.100.9:6677 via proxy on node1 {
	 	inside 100.100.100.9:6678;
	 	outside 100.100.100.9:6679;
	 }
	 host node3 address 100.100.100.11:6677 via proxy on node3 {
	 	inside 100.100.100.11:6678;
	 	outside 100.100.100.11:6679;
	 }
  }

  connection DR-node2-node3 { # DR 로 시작하고 노드간 구분자 = 로 표기 필요

	 host node2 address 100.100.100.10:6680 via proxy on node2 {
	 	inside 100.100.100.10:6681;
	 	outside 100.100.100.10:6682;
	 }
	 host node3 address 100.100.100.11:6680 via proxy on node3 {
	 	inside 100.100.100.11:6681;
	 	outside 100.100.100.11:6682;
	 }
  }

  connection {
    host node1 address 10.20.25.9:6677;
    host node2 address 10.20.25.10:6677;
  }
}



Code Block
titledrbd.conf
global {
       disable-ip-verification;
       usage-count     no;
}
common {
       startup {
               wfc-timeout     3;
       }
}
resource r0 {
       protocol B;
       disk {
               on-io-error detach;
       }
       net {
              protocol A;
              verify-alg crc32c;
              on-congestion pull-ahead; 
              sndbuf-size 10M;
              congestion-fill 80M;
       }
       on pr1 {
               device /dev/drbd0;
               disk /dev/sdb1;
               address 200.200.23.132:7799;
               meta-disk internal;
       }
       on pr2 {
               device /dev/drbd0;
               disk /dev/sdb1;
               address 200.200.23.137:7799;
               meta-disk internal;
       }
}
resource r0_1{
       protocol A;
       meta-disk internal;
       device /dev/drbd10;
       proxy {
               memlimit 500M;
       }
       net {
              protocol A;
              verify-alg crc32c;
              on-congestion pull-ahead;
              sndbuf-size 10M;
              congestion-fill 450M;
       }
       stacked-on-top-of r0 {
               address 10.30.0.135:7788;
               proxy on pr1 pr2{
                       inside 10.30.0.135:7789;
                       outside 10.30.0.135:7790;	# mirror VIP
               }
       }
       on dd1 {
               address 10.30.0.199:7788;
               proxy on dd1 {
                       inside 10.30.0.199:7789;
                       outside 10.30.0.199:7790;     #DR mirror IP
               }
       }
}



4.1.2. 전용 서버 구성

기본적으로 config는구성파일은 양 노드, DRX 노드 모두 동일하게 구성하나, 전용서버의 특성상 이 기종 노드 즉 WDRBD 노드와 Linux DRBD 노드들을 모두 DRX에서 수용하려면 전용서버에 설치된 drbd-utils 의 특성에 맞게 DRX config를 수정할 필요가 있습니다. 구성 절차는 하기 기술된 내용에 준하며 구성예제는 Linux 전용 머신을 전용서버를 기준으로 합니다.

  • Windows 전용서버
    1. DRX 서버로 "drbdadm.exe" 파일 복사
    2. "drbdadm.exe" 파일이 있는 폴더의 상위 폴더에 etc 폴더를 생성
    3. cygwin.dll 파일을 
    4. 생성한 etc 경로에서 "drbd.conf" 구성
  • Linux 전용서버
    1. drbd-utils 설치
    2. etc 경로에 "drbd.conf" 구성

...

Info
iconfalse

초기 구성

Info
iconfalse
Linux
  1. 시스템에 "drbd util" 설치
  2. DRX 설치
  3. DRX 설치 디렉터리에 라이선스 파일 복사(drx.lic)
  4. DRBD가 구성된 시스템에서 DRBD 설정 파일(drbd.conf, *.res)을 복사해 DRX가 설치된 시스템의 DRBD /etc 경로로 복사 : DRBD 구성파일과, DRX 구성파일 내용 일치 확인
    1. DRX 가 다수의 노드에 대한 다중 복제 세션을 처리하는 경우에는 다중리소스 형태로 각 노드들의 리소스 파일을 관리하도록 필요.
  5. CentOS 버전에 맞게 다음 명령어 중 하나를 사용하여 DRX 서비스를 실행 

    Code Block
    titleCentOS 6
    service drxsvc start


    Code Block
    titleCentOS 7
    systemctl start drxsvc


Windows
  1. 시스템에 "drbd util" 설치
  2. DRX 설치
  3. DRX 설치 디렉터리에 라이선스 파일 복사(drx.lic)
  4. DRBD가 구성된 시스템에서 DRBD 설정 파일(drbd.conf, *.res)을 복사해 DRX가 설치된 시스템의 DRBD /etc 경로로 복사 : DRBD 구성파일과, DRX 구성파일 내용 일치 확인
    1. DRX 가 다수의 노드에 대한 다중 복제 세션을 처리하는 경우에는 다중리소스 형태로 각 노드들의 리소스 파일을 관리하도록 필요.
  5. DRX 서비스를 실행 


Code Block
titleDRX 종료
sc stop drxsvc


Code Block
titleDRX 종료
sc start drxsvc



설정 변경

Info
iconfalse

6.2.1 설정 변경 동일 절차



위의 절차에 따라 정상적으로 구성이 되었을 경우 구성을 하고 DRX와 DRBD를 기동하면 DRBD와 DRX는 연결을 성립하고 복제를 시작합니다.

...

구분속성기본 값설명
기본langkorean DRX 언어 설정 파일
  • 환경설정의 "base-dir/lang"에 위치(미지정 시 실행파일 하부에 위치)
  • "korean.ini"나 "english.ini" 등과 같은 방법으로 파일 생성(utf8 파일)
    예)"korean.ini" 설정
base-dir

DRX 설치 경로

로그 저장이나 언어 설정과 관련한 파일이 있는 디렉터리의 상위 디렉터리로 지정

(미지정 시 DRX를 설치한 경로로 자동 지정됨)

drbd-conf

Windows:

  • ../etc/drbd.conf

Linux:

  • /etc/drbd.conf
"drbd config"를 이용할 경우, 해당 파일의 경로
connect-timeout3

연결, 리슨 동작에서 사용하는 타임아웃 값(단위: 초)

(※ 네트워크 환경에 따라 연결 지연이 있을 수 있으므로 연결이 원활하지 않을 때 늘릴 것을 권장)

init-timeout10

원격 DRX와 연결 후, 초기화 패킷을 주고 받는 동안의 타임아웃 값(단위: 초)

(※ 네트워크 환경에 따라 연결 지연이 있을 수 있으므로 연결이 원활하지 않을 때 늘릴 것을 권장)

bwlimit0 (disabled)송신 시 대역폭 제한 값 (수신 대역폭은 원격 DRX 의 bwlimit 값에 의해 제어)
loglevel-fileinfo

파일로 저장되는 로그 레벨 지정

  • 위치: 설치 경로의 logs 폴더에 저장
ip-verificationon

off로 설정시 연결을 위해서 대기(Listen)하기위해 매칭(bind)하는 IP가 0.0.0.0(모든 IP 수신)으로 설정됩니다.

압축/암호화block-size63K압축/암호화시 사용할 block size

bab-read-spin-counter10bab에서 read시 block size 보다 작을 경우 재시도 횟수

bab-read-spin-delay10bab read 재시도시 delay 값 (ms)

min-raw-block-size1K압축/암호화 설정시에도 평문으로 보낼 minimum size

process-thread-count-1 (auto)

멀티쓰레드 패킷 처리시 사용할 쓰레드 개수. 

※ 튜닝과 디버깅의 용도이므로 변경하는 것을 권장하지 않습니다. 

...