DRX is configured through the drbd.conf and drx.conf files.
...
DRX requires configuration of individual replication resources and global settings required to perform drx. Configuration for individual resources is done in the proxy section of each replication configuration file, and global settings are configured through the drx.conf file.
All configuration below is based on working with Block Replication (BSR). For integration with File Replication (FSR), see Configuring file replication in the appendix.
- If BSR is installed locally, you do not need to change the path to its configuration file as DRX automatically recognizes it through an environment variable. /etc/bsr.conf is the default path and you can change the path be changed through drx.conf.
- If you are adjusting DRX's own options, create a drx.conf file. You do not need to create it unless it is a special case.
4.1. Configuration files
DRX is recommended to unify the configuration file of each node into the same "drbd.conf" file for the sake of management but it is not mandatory, and configuration contents of each node can be changed according to the configuration method, and the configuration file name, Can be specified separately. The major configuration items of DRX are as follows.
- Connection configuration: Setting It describes replication connections, setting buffer sizes and options, etc. By default, it's written in the same format as the BSR configuration file, and you'll usually end up modifying some of the contents of bsr.conf that was already written when BSR was installed locally (see Format of the BSR configuration file).
Configuration Properties
The main configuration properties are:
- Connections: Set the DRX inbound IP and outbound IP address addresses to work with DRBDreplication.
- Buffer ConfigurationBuffers: Set buffer size per resource (channel)
- Compression/Encryption Configuration: Setting the Set compression/encryption function features ON/OFF
DRX sets the buffer size in the "proxy" section within the DRBD replication configuration file and sets the DRX IP address in the "proxy on" section within the host section. Compression and encryption settings are described in the plugin subsection in within the proxy section. The following Below is a the basic DRX configuration form, with slightly different some differences between 1:1 single replication and 1:N multi-replication configurationsintegration.
Info |
---|
|
- proxy on [ proxy on hostname ] section of on [hostname] section
- inside [ proxy inside ip address]:[ port ]
- outside [ proxy inside ip address ]:[ port]
- proxy section
- memlimit
- plugin section
- compressor [zlib | lzma lz4 | iqa] level [1~9]
- crypto openssl
- rx-memlimit
|
Info |
---|
|
- host [ hostname] address [ host ip address ]:[port] via proxy on [proxy on hosname] section of connection section
- inside [ proxy inside ip address]: [ port ]
- outside [ proxy inside ip address ]: [ port]
- proxy section
- memlimit
- plugin section
- compressor [zlib | lzma lz4 | iqa] level [1~9]
- crypto openssl
|
...
Local configuration
...
- With DRX installed and running on node1 and node2 local
...
...
- contents of "bsr.conf" on node1 and node2 are
...
- the same on both nodes.
- The following are examples is an example of a 1:1 replication configurations configuration and a 1:2 replication configurationsconfiguration.
- Note that each the respective port information must be subject to exception handling exceptionally handled by the firewall and configured so that there are no redundant ports are used.
방식method | Windows configuration | Linux configuration | 비고 |
---|
1:1 replication |
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/drbd1bsr1;
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 replication - 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 {
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 {
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 10M;
congestion-fill 80M;
congestionping-filltimeout 80M30;
}
on pr1 {
device /dev/drbd0bsr0;
disk /dev/sdb1;
address 200.200.23.132:7799;
meta-disk internal;
}
on pr2 {
device /dev/drbd0bsr0;
disk /dev/sdb1;
address 200.200.23.137:7799;
meta-disk internal;
}
}
resource r0_1{
protocol A;
meta-disk internal;
device /dev/drbd10bsr10;
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
}
}
} |
|
...
Dedicated server configuration
기본적으로 구성파일은 양 노드, DRX 노드 모두 동일하게 구성하나, 전용서버의 특성상 이 기종 노드 즉 WDRBD 노드와 Linux DRBD 노드들을 모두 DRX에서 수용하려면 전용서버에 설치된 drbd-utils 의 특성에 맞게 DRX config를 수정할 필요가 있습니다. 구성 절차는 하기 기술된 내용에 준하며 구성예제는 Linux 전용서버를 기준으로 합니다.
...
By default, the configuration file is the same for both nodes and DRX nodes, but due to the nature of dedicated servers, DRX config must be modified to accommodate both Windows and Linux nodes in DRX. The configuration procedure is as described below, and the example configuration is based on a Linux dedicated server.
Local | LAN | Local DRX | WAN
| Remote DRX | LAN | Remote |
---|
Code Block |
---|
| 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;
}
}
}
|
|
Code Block |
---|
| resource r0 {
device /dev/drbd001bsr001; # 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;
}
}
}
|
Code Block |
---|
| resource r1 {
device /dev/drbd001bsr001;
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;
}
}
}
|
|
Code Block |
---|
| resource r0 {
device /dev/drbd001bsr001; # 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;
}
}
}
|
Code Block |
---|
| resource r1 {
device /dev/drbd001bsr001;
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;
}
}
} |
|
Code Block |
---|
| 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;
}
}
}
|
|
Code Block |
---|
| resource r1 {
device /dev/drbd0bsr0;
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;
}
}
|
|
Code Block |
---|
| resource r1 {
device /dev/drbd0bsr0;
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
DRBD 구성과는 별개로 DRX 내부 속성을 설정할 수 있습니다. 보통의 경우는 DRX 기본 설정으로 동작하기 때문에 속성파일을 제공할 필요가 없습니다. 이 속성은 DRX가 시작될 때 적용되고, DRX 속성 파일은 다음 속성표의 내용을 참고하여 작성합니다.
...
Apart from the BSR configuration, you can set DRX internal behavior properties, which have the meaning of global settings that are applied when DRX starts. In most cases, you do not need to modify the drx.conf file, as DRX default settings will work. Use the following table of properties as a guide.
...
원격 DRX와 연결 후, 초기화 패킷을 주고 받는 동안의 타임아웃 값(단위: 초)
(※ 네트워크 환경에 따라 연결 지연이 있을 수 있으므로 연결이 원활하지 않을 때 늘릴 것을 권장)
...
파일로 저장되는 로그 레벨 지정
...
off로 설정시 연결을 위해서 대기(Listen)하기위해 매칭(bind)하는 IP가 0.0.0.0(모든 IP 수신)으로 설정됩니다.
...
- file name: "drx.conf"
- 기본 위치: drx 설치 경로
- 주의: 파일의 시작 부분에 "[global] section"을 기술해야 함
...
- 환경설정의 "base-dir/lang"에 위치(미지정 시 실행파일 하부에 위치)
- "korean.ini"나 "english.ini" 등과 같은 방법으로 파일 생성(utf8 파일)
예)"korean.ini" 설정
...
DRX 설치 경로
...
로그 저장이나 언어 설정과 관련한 파일이 있는 디렉터리의 상위 디렉터리로 지정
(미지정 시 DRX를 설치한 경로로 자동 지정됨)
...
Windows:
Linux:
...
소켓 connect 또는 listen 동작에서 사용하는 타임아웃 값(단위: 초)
(※ 네트워크 환경에 따라 연결 지연이 있을 수 있으므로 연결이 원활하지 않을 때 늘릴 것을 권장)
- default path: DRX Installed path
- Caution: [global] section should be described at the beginning of the file
type | property | default value | description |
---|
normal | lang | english | DRX language settings file
- Located in "base-dir/lang" of the configuration.
- ex) korean.ini
|
base-dir | DRX install path | Default path where DRX is installed |
bsr-conf-path | Windows: Linux: | Specify the path to bsr.conf |
fsr-conf-path | Windows: Linux: | Specify the path to fsr.conf |
connect-timeout | 10 | Timeout value in seconds after connecting to a remote DRX, while sending and receiving initialization packets |
bwlimit | 0 (unlimited) | Bandwidth limit on sending (incoming bandwidth controlled by bwlimit value on remote DRX) |
ip-verification | on | on: Allow only the IP connections set in dbd.conf. off: Allow connections for all IPs. |
ulimit-open-files-count | 0 | Applies to Linux only and sets the number of files the process can open. Values : -1 (10240), 0 (same as system setting), Specify yourself (1-65536) |
ipc-port | 9100 | Specify internal ipc port values for the CLI to control the drx (supported in version 1.3.1 and later). |
log | loglevel-file | info | Specify the log level that is written as a file - Location: stored in the logs folder of the installation path
|
loglevel-console | info | Specify the log level that is output to the screen in foreground mode |
logfile-max-size | 10M | File size limit per log file |
logfile-max-count | 10 | Maximum number of log files kept by type |
performance-log | off | Whether to save performance statistics log |
compress/encrypt
| block-size | 63K | Block size to be used for compression/encryption - Note: The size of the transfer buffer for compression/encryption is set to twice the block-size value and is set to 1MB maximum.
|
min-raw-block-size | 1K |
압축/암호화 설정시에도 평문으로 보낼 minimum size※ 튜닝과 디버깅의 용도이므로 변경하는 것을 권장하지 않습니다Minimal packet size to send as plain text even when compression/encryption is set. |
process-thread-count | -1 (auto) |
멀티쓰레드 패킷 처리시 사용할 쓰레드 개수.
Number of threads to use when processing multi-thread packets. ※ It is intended for tuning and debugging, so it is not recommended to make any changes. |
drx.conf 예제sample
drx.conf |
---|
# # DRX properties# BSR Proxy configuration # [global] # language settings file # lang=koreandrx_path=./ #drbd-conf# Default path where DRX is installed # base-dir=/opt/DRX # Specify the path to bsr.conf # bsr-conf-path=c:\program files\DRX\drbdbsr.conf#connect # Bandwidth limit on sending # bwlimit=100M # Block size to be used for compression/encryption # block-size=100K # Minimal packet size to send as plain text # min-raw-block-size=256K # Timeout value # connect-timeout=10 # Confirmation of binding IP that listens for connection # ip-verification=off # log levels: off < trace < debug < info < warning < warn < err loglevel-file=infoblock-size=1M # 압축/암호화시 사용할 block size (기본 63K) bab-read-spin-counter=10 # bab에서 read시 block size 보다 작을 경우 재시도 횟수 bab-read-spin-delay=10 # bab read 재시도시 delay 값 (ms) min-raw-block-size=1K # 압축/암호화 설정시에도 평문으로 보낼 minimum size |
...
error < critical # Specify the log level that is output to the screen in foreground mode # loglevel-console=info # Specify the log level that is written as a file # loglevel-file=info # File size limit per log file # logfile-max-size=10M # Maximum number of log files kept by type # logfile-max-count=10 # Whether to save performance statistics log # performance-log=off # multi-threaded packet processing. default is auto(-1), disable to 0 # process-thread-count=8
|