구성


DRX는 개별 복제 리소스와 drx 수행에 필요한 전역 설정을 구성해야 합니다. 개별 리소스에 대한 구성은 각 복제 구성파일의 proxy 섹션에서 수행하고 전역 설정은 drx.conf 파일을 통해 구성합니다. 

하기의 모든 구성 내용은 블럭복제(BSR)와의 연동을 기준으로 설명합니다. 파일복제(FSR)와의 연동은 부록의 FSR 구성 내용을 참고하세요.


  • BSR이 로컬에 설치되어 있다면 DRX에서 해당 구성파일의 경로를 환경변수를 통해 자동 인식하므로 구성파일의 경로를 변경할 필요는 없습니다. /etc/bsr.conf가 기본 경로이며 drx.conf 를 통해 변경할 수 있습니다.
  • 복제 연결과 버퍼 크기 및 옵션 설정 등에 대해 기술합니다. 기본적으로 BSR 구성파일 형식과 동일하게 작성하며 보통의 경우 BSR이 로컬에 설치되어 이미 작성된 bsr.conf 의 일부 내용을 수정하여 작성하게 됩니다(BSR 구성파일의 형식을 참고하세요).


항목

주요 구성 항목은 다음과 같습니다.

  • 연결: 복제와 연동하기 위한 DRX inbound IP, outbound IP 주소 설정
  • 버퍼: 리소스(채널) 별 버퍼 크기 설정
    • memlimit 
    • rx-memlimit
  • 압축/암호화: 압축/암호화 기능 ON/OFF 설정
  • 대역폭 제한
    • bwlimit

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

 

1:1 구성

  • on <host-name> 섹션
    • address <host ip address:port>
    • proxy on <proxy on host-name> 섹션
      • inside <proxy inside ip address:port>
      • outside <proxy outside ip address:port>
  • proxy 섹션
    • memlimit
    • bwlimit
    • plugin 섹션
      • compressor <zlib | lz4 | iqa> level <1~9>
      • crypto openssl
      • rx-memlimit

1:N 구성

  • connection 섹션
    • host <host-name> address <host ip address:port> via proxy on <proxy on host-name> 섹션
      • inside <proxy inside ip address:port>
      • outside <proxy outside ip address:port>
  • proxy 섹션
    • memlimit
    • bwlimit
    • plugin 섹션
      • compressor <zlib | lz4 | iqa> level <1~9>
      • crypto openssl
      • rx-memlimit

로컬 구성

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

방식Windows 구성파일Linux 구성파일비고
1:1 복제 (2proxy)
bsr.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;
		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;
        }
    }
}
bsr.conf
resource r0 {
    device /dev/bsr1;
    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 프록시 구성
drbd.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;
      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;
  }
}
drbd.conf
global {
       disable-ip-verification;
       usage-count     no;
}
common {
       startup {
               wfc-timeout     3;
       }
}
resource r0 {
       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/bsr0;
               disk /dev/sdb1;
               address 200.200.23.132:7799;
               meta-disk internal;
       }
       on pr2 {
               device /dev/bsr0;
               disk /dev/sdb1;
               address 200.200.23.137:7799;
               meta-disk internal;
       }
}
resource r0_1{
       meta-disk internal;
       device /dev/bsr10;
       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
               }
       }
}

전용 서버 구성

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


로컬 노드
LAN
로컬 DRX
WAN

원격 DRX
LAN
원격 노드
Windows node r0
resource r0 {
	device    d  minor 1;
	disk      d;
	meta-disk e;

	proxy {
		memlimit 1G;
	}	
		
	net {
		protocol A;
		on-congestion pull-ahead;
		congestion-fill 950M;
		ping-timeout 30;
	}

	on w12std-0 {
		node-id 0;
	}
	on w12std-1 {
		node-id 1;
	}

	connection win-r0 {
		host w12std-0  address 10.10.0.77:7789 via proxy on 74proxy1 {
			inside 10.10.0.115:7790;
			outside 10.10.0.115:7791;
		}
		host w12std-1  address 10.10.0.203:7789 via proxy on 74proxy2 {
			inside 10.10.0.102:7790;
			outside 10.10.0.102:7791;
		}
	}

}
r0
resource r0 {
        device /dev/bsr001; # dummy
        disk /dev/sdb1; # dummy
        meta-disk /dev/sdc1; # dummy

		proxy {
                memlimit 1G;
        }
        net{
                protocol A;
				on-congestion pull-ahead;
				congestion-fill 950M;
                ping-timeout 30;
        }

        on w12std-0 {
                node-id 0;
        }
        on w12std-1 {
                node-id 1;
        }
        connection win-r0 {
                host w12std-0 address 10.10.0.77:7789 via proxy on 74proxy1 {
                        inside 10.10.0.115:7790;
                        outside 10.10.0.115:7791;
                }
                host w12std-1 address 10.10.0.203:7789 via proxy on 74proxy2 {
                        inside 10.10.0.102:7790;
                        outside 10.10.0.102:7791;
                }
        }
}
r1
resource r1 {
	device /dev/bsr001;
	disk /dev/sdb1;
	meta-disk /dev/sdc1;

	proxy {
		memlimit 1G;
	}
	net{
		protocol A;
		on-congestion pull-ahead;
		congestion-fill 950M;
		ping-timeout 30;
	}
	
	on cen74-1 {
		node-id 0;
	}
	on cen74-2 {
		node-id 1;
	}

	connection linux-r1 {
		host cen74-1 address 10.10.0.11:7792 via proxy on 74proxy1 {
			inside 10.10.0.115:7793;
			outside 10.10.0.115:7794;
		}
		host cen74-2 address 10.10.0.105:7792 via proxy on 74proxy2 {
			inside 10.10.0.102:7793;
			outside 10.10.0.102:7794;
		}
	}
}
r0
resource r0 {
        device /dev/bsr001; # dummy 
        disk /dev/sdb1; # dummy
        meta-disk /dev/sdc1; # dummy

        proxy {
                memlimit 1G;
        }
        net{
                protocol A;
				on-congestion pull-ahead;
				congestion-fill 950M;
                ping-timeout 30;
        }

        on w12std-0 {
                node-id 0;
        }
        on w12std-1 {
                node-id 1;
        }
        connection win-r0 {
                host w12std-0 address 10.10.0.77:7789 via proxy on 74proxy1 {
                        inside 10.10.0.115:7790;
                        outside 10.10.0.115:7791;
                }
                host w12std-1 address 10.10.0.203:7789 via proxy on 74proxy2 {
                        inside 10.10.0.102:7790;
                        outside 10.10.0.102:7791;
                }
        }
}
r1
resource r1 {
	device /dev/bsr001;
	disk /dev/sdb1;
	meta-disk /dev/sdc1;

	proxy {
		memlimit 1G;
	}
	net{
		protocol A;
		on-congestion pull-ahead;
		congestion-fill 950M;
		ping-timeout 30;
	}

	on cen74-1 {
		node-id 0;
	}
	on cen74-2 {
		node-id 1;
	}

	connection linux-r1 {
		host cen74-1 address 10.10.0.11:7792 via proxy on 74proxy1 {
			inside 10.10.0.115:7793;
			outside 10.10.0.115:7794;
		}
		host cen74-2 address 10.10.0.105:7792 via proxy on 74proxy2 {
			inside 10.10.0.102:7793;
			outside 10.10.0.102:7794;
		}
	}
}
Windows node r0
resource r0 {
	device    d  minor 1;
	disk      d;
	meta-disk e;

	proxy {
		memlimit 1G;
	}	
	
	net {
		protocol A;
		on-congestion pull-ahead;
		congestion-fill 950M;
		ping-timeout 30;
	}

	on w12std-0 {
		node-id 0;
	}
	on w12std-1 {
		node-id 1;
	}

	connection win-r0 {
		host w12std-0  address 10.10.0.77:7789 via proxy on 74proxy1 {
			inside 10.10.0.115:7790;
			outside 10.10.0.115:7791;
		}
		host w12std-1  address 10.10.0.203:7789 via proxy on 74proxy2 {
			inside 10.10.0.102:7790;
			outside 10.10.0.102:7791;
		}
	}

}
Linux node r1
resource r1 {
        device /dev/bsr0;
        disk /dev/sdb1;
        meta-disk /dev/sdc1;

        proxy {
                memlimit 1G;
        }
        net{
                protocol A;
				on-congestion pull-ahead;
				congestion-fill 950M;
                ping-timeout 30;
        }
        on cen74-1 {
                node-id 0;
        }
        on cen74-2 {
                node-id 1;
        }

        connection linux-r1 {
                host cen74-1 address 10.10.0.11:7792 via proxy on 74proxy1 {
                        inside 10.10.0.115:7793;
                        outside 10.10.0.115:7794;
                }
                host cen74-2 address 10.10.0.105:7792 via proxy on 74proxy2 {
                        inside 10.10.0.102:7793;
                        outside 10.10.0.102:7794;
                }
        }

Linux node r1
resource r1 {
	device /dev/bsr0;
	disk /dev/sdb1;
	meta-disk /dev/sdc1;
	
	proxy {
		memlimit 1G;
	}
	net{
		protocol A;
		on-congestion pull-ahead;
		congestion-fill 950M;
		ping-timeout 30;
	}

	on cen74-1 {
		node-id 0;
	}
	on cen74-2 {
		node-id 1;
	}

	connection linux-r1 {
		host cen74-1 address 10.10.0.11:7792 via proxy on 74proxy1 {
			inside 10.10.0.115:7793;
			outside 10.10.0.115:7794;
		}
		host cen74-2 address 10.10.0.105:7792 via proxy on 74proxy2 {
			inside 10.10.0.102:7793;
			outside 10.10.0.102:7794;
		}
	}
}


drx.conf

BSR 구성과는 별개로 DRX 내부 동작 속성을 설정할 수 있으며 이 속성은 DRX가 시작될 때 적용되는 전역설정의 의미를 가집니다. 보통의 경우는 DRX 기본 설정으로 동작하기 때문에 drx.conf 파일을 수정할 필요는 없습니다. 다음 속성표의 내용을 참고하여 작성합니다.

  • 파일 이름: "drx.conf"
  • 기본 위치: drx 설치 경로
  • 주의: 파일의 시작 부분에 "[global] section"을 기술해야 합니다.
구분속성기본 값설명
기본langenglishDRX 언어 설정 파일
  • base-dir/lang 경로에 위치합니다.
  • 예) korean.ini
bsr-conf-path

Windows:

  • ../etc/bsr.conf

Linux:

  • /etc/bsr.conf
bsr.conf 에 대한 경로 지정
fsr-conf-path

Windows:

  • ../etc/fsr.conf

Linux:

  • /etc/fsr.conf
fsr.conf 에 대한 경로 지정
connect-timeout10

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

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

bwlimit0 (unlimited)송신 시 대역폭 제한 값 (수신 대역폭은 원격 DRX 의 bwlimit 값에 의해 제어)
ip-verificationon

on: bsr.conf 에 설정된 IP 연결만 허용한다.

off: 모든 IP 에 대해 연결을 허용한다.

ulimit-open-files-count0

Linux만 적용되며 프로세스가 오픈 가능한 파일 개수를 설정한다.

설정값 : -1(10240개), 0(시스템 설정과 동일), 직접 지정(1~65536)

ipc-port 9100drx 제어를 위한 CLI 의 내부 ipc 포트 값 지정(버전 1.3.1 이상 지원). 
로그loglevel-fileinfo

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

  • 위치: 설치 경로의 logs 폴더에 저장
loglevel-consoleinfoforeground 모드에서 화면에 출력되는 로그 레벨 지정
logfile-max-size10M로그 파일 개당 파일 크기 제한
logfile-max-count10종류별 로그 파일 최대 유지 개수
performance-logoff

성능 통계 로그 저장 여부

압축/암호화



block-size63K

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

  • 참고: 압축/암호화의 전송 버퍼 크기는 block-size값의 2배로 설정되며 최대 1MB로 설정됩니다. 
  • 설정할 수 있는 최소값은 64512(63 KBytes)입니다. 
min-raw-block-size1K

압축/암호화 설정시에도 평문으로 보낼 minimum packet size

  • 설정할 수 있는 최소값은 1024(1 KBytes)입니다. 
process-thread-count-1 (auto)

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

※ 튜닝과 디버깅의 용도로 예약된 설정입니다.


예제

drx.conf

# BSR Proxy configuration
#
[global]
# 언어 설정 파일
# lang=korean

# DRX가 설치된 기본 경로
# base-dir=/opt/DRX

# bsr.conf 에 대한 경로 지정
# bsr-conf=c:\program files\DRX\bsr.conf

# 송신 시 대역폭 제한 값
# bwlimit=100M

# 압축/암호화시 사용할 block size
# block-size=100K

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

# 원격 DRX와 연결 후, 초기화 패킷을 주고 받는 동안의 타임아웃 값
# connect-timeout=10

# 연결을 위해서 대기(Listen)하는 매칭(bind) IP의 확인
# ip-verification=off

# log levels: off < trace < debug < info < warning < error < critical
# foreground 모드에서 화면에 출력되는 로그 레벨
# loglevel-console=info

# 파일로 저장되는 로그 레벨
# loglevel-file=info

# 로그 파일의 개당 크기 제한
# logfile-max-size=10M

# 로그 파일들의 최대 유지 개수
# logfile-max-count=10

# 성능 통계 로그 저장 여부
# performance-log=off

# multi-threaded packet processing. default is auto(-1), disable to 0
# process-thread-count=8