DRX가 구성해야 할 대상은 개별 복제 리소스에 대한 구성과 DRX 가 구동하는데 필요한 전역 설정 구성입니다. 개별리소스에 대한 설정은 drbd.conf, 전역 설정은 drx.conf 파일을 통해 구성합니다.
...
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 |
---|
|
- 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
|
...
방식 | Windows 구성파일 | Linux 구성파일 | 비고 |
---|
1:1 복제 (2proxy) |
Code Block |
---|
| resource r0 {
device d minor 1;
disk d;
meta-disk f;
net {
protocol A;
sndbuf-size 20M;
on-congestion pull-ahead;
congestion-fill 480M;
ping-timeout 30;
}
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 |
---|
| resource r0 {
device /dev/drbd1;
disk /dev/sdb1;
meta-disk internal;
net {
protocol A;
sndbuf-size 10M;
on-congestion pull-ahead;
congestion-fill 480M;
ping-timeout 30;
}
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 |
---|
| 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;
ping-timeout 30;
}
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 |
---|
| 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;
ping-timeout 30;
}
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;
ping-timeout 30;
}
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
}
}
} |
|
|
...
구분 | 속성 | 기본 값 | 설명 |
---|
기본 | lang | korean | DRX 언어 설정 파일- base-dir/lang 경로에 위치합니다.
- 예) korean.ini
|
base-dir | DRX 설치 경로 | DRX가 설치된 기본 경로 |
drbd-conf | Windows: Linux: | drbd.conf 에 대한 경로 지정 |
connect-timeout | 3
| 소켓 connect 또는 listen 동작에서 사용하는 타임아웃 값(단위: 초) (※ 네트워크 환경에 따라 연결 지연이 있을 수 있으므로 연결이 원활하지 않을 때 늘릴 것을 권장) |
init-timeout | 10 | 원격 DRX와 연결 후, 초기화 패킷을 주고 받는 동안의 타임아웃 값(단위: 초) (※ 네트워크 환경에 따라 연결 지연이 있을 수 있으므로 연결이 원활하지 않을 때 늘릴 것을 권장) |
bwlimit | 0 (disabled) | 송신 시 대역폭 제한 값 (수신 대역폭은 원격 DRX 의 bwlimit 값에 의해 제어) |
loglevel-file | info | 파일로 저장되는 로그 레벨 지정 |
ip-verification | on | on: drbd.conf 에 설정된 IP 연결만 허용한다. off: 모든 IP 에 대해 연결을 허용한다. |
압축/암호화
| block-size | 63K | 압축/암호화시 사용할 block size - 참고: 압축/암호화의 전송 버퍼 크기는 block-size값의 2배로 설정되며 최대 1MB로 설정됩니다.
|
bab-read-spin-counter | 10 | bab에서 read시 block size 보다 작을 경우 재시도 횟수 |
bab-read-spin-delay | 10 | bab read 재시도시 delay 값 (ms) |
min-raw-block-size | 1K | 압축/암호화 설정시에도 평문으로 보낼 minimum packet size |
process-thread-count | -1 (auto) | 멀티쓰레드 패킷 처리시 사용할 쓰레드 개수. ※ 튜닝과 디버깅의 용도이므로 변경하는 것을 권장하지 않습니다. |
...