What the DRX should be configured for is the configuration of individual replication resources and the global settings configuration that the DRX requires to run. Settings for the individual resources are configured through the drbd.conf file and the global settings are configured through the drx.conf file.
- The drbd.conf file describes replication connections, buffer sizes, and optional settings. By default, it is created in the same way as the DRBD configuration file format. In most cases, DRBD is installed locally and will be created by modifying the already created drbd.conf file.
- For more information on the DRBD configurationfile format, see https://docs.linbit.com/man/v84/drbd-conf-5/
- If DRBD is installed locally, DRX automatically recognizes the path of the configuration file through the environment variable (DRBD), so you do not need to change the path of drbd.conf. /etc/drbd.conf is the default path and you can change the path 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 DRX inbound IP and outbound IP address to work with DRBD
- Buffer Configuration: Set buffer size per resource (channel)
- Compression/Encryption Configuration: Setting the compression/encryption function ON / OFF
DRX sets the buffer size in the "proxy" section within the DRBD 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 the proxy section. The following is a basic DRX configuration form, with slightly different 1:1 and 1:N replication configurations.
1:1 replication
- 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 | iqa] level [1~9]
- crypto openssl
1:N replication
- 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 | iqa] level [1~9]
- crypto openssl
4.1.1. Local configuration
On node1 and node2 local systems, the DRX is installed and operated, and the contents of node1 and node2 are identical for both nodes.
- The following are examples of 1:1 replication configurations and 1:2 replication configurations.
Note that each port information must be subject to exception handling by the firewall and configured so that no redundant ports are used.
방식 | Windows configuration | Linux configuration | 비고 |
---|---|---|---|
1:1 replication | drbd.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; } } } | drbd.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 replication
| 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; } 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; } } | drbd.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. Dedicated server configuration
By default, configuration files are configured to the same for both nodes and DRX nodes. However, because of the nature of the dedicated server, it is necessary to modify the DRX config to match the drbd-utils installed on the dedicated server to accommodate all of these nodes in the DRX dedicated server. The configuration procedure is as described below and the configuration example is based on a Linux server.
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/drbd001; # 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/drbd001; 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/drbd001; # 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/drbd001; 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/drbd0; 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/drbd0; 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; } } } |
4.3. drx.conf
You can set the DRX internal properties independently of the DRBD configuration. Normally, you don't need to provide a property file because it works with the DRX preferences. This property is applied at the start of the DRX, and the DRX property file is created with reference to the following properties table.
- file name: "drx.conf"
- default path: DRX Installed path
- Caution: [global] section should be described at the beginning of the file
type | property | default value | description |
---|---|---|---|
normal | lang | korean | DRX language settings file
|
base-dir | DRX install path | Default path where DRX is installed | |
drbd-conf | Windows:
Linux:
| Specify the path to drbd.conf | |
connect-timeout | 3 | Timeout value in seconds used by socket connect or listen actions | |
init-timeout | 10 | Timeout value in seconds after connecting to a remote DRX, while sending and receiving initialization packets | |
bwlimit | 0 (disabled) | Bandwidth limit on sending (incoming bandwidth controlled by bwlimit value on remote DRX) | |
loglevel-file | info | Specify the log level that is written as a file | |
ip-verification | on | on: Allow only the IP connections set in dbd.conf. | |
compress/encrypt | block-size | 63K | Block size to be used for compression/encryption
|
bab-read-spin-counter | 10 | Number of retries when read from BAB if block size is less than | |
bab-read-spin-delay | 10 | Delay value(ms) when reattempting read from BAB | |
min-raw-block-size | 1K | 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 |
---|
# [global] lang=korean #drbd-conf=c:\program files\DRX\drbd.conf #connect-timeout=10 # log levels: debug < info < warn < err block-size=1M |