DRX 1.1 User's Guide - ENG

 

1. Overview

1.1. Purpose of use

The Data Replication Xcelerator(DRX) is a DRBD proxy agent used for low-bandwith WAN replication.

DRBD asynchronous (A type) replication basically has better local I/O response performance than synchronous. However, since the size of the socket transmission buffer of the replication data transmission layer (TCP/IP) is limited, when the socket buffer becomes full at the transmission time, it is necessary to wait while the replication data is not transmitted and the I/O of the application program is not completed (This is the architecture of DRBD that asynchronously replicates the completion of data transmission as the completion of replication). In addition, since replicated data is transmitted remotely over a relatively low-bandwidth network, the latency of local I / O is further increased because there is less free buffer space for transmission, and a large amount of local I / O write requests Is encountered and exceeds the bounds of the socket send buffer, degradation of the local I / O response accompanied by replication is unavoidable. These I / O response degradation problems can be overcome using DRX's buffering mechanism.

In addition, DRX provides a replication acceleration (compression) function to increase the availability of remote data, and can greatly improve the target RPO (Recovery Point Objective). Also, by providing data encryption function, It also solves the security problems that may occur via the WAN network.

The following figure shows the DRX-DRBD buffering linkage.

  • DRX buffering is performed from the local DRX prior to going through the WAN interval and does not require buffering on the remote DRX.

 

1.2. Considerations

DRX operates on DRBD-installed system or installed on dedicated server. A DRX instance can also act as a proxy for DRBD devices distributed across multiple nodes. Generally, DRBD activity log must be set in advance with sufficient capacity in case of large amount of data packet being transmitted at the time of transmission. If the primary node is corrupted while the excessive data packet is being processed at the sending time and the primary node is restarted, a large amount of activity log can be set to OOS and resynchronized for a long time. If you are concerned about this long synchronization, we recommend enabling DRBD's csums-alg setting.

1.3. Supported platforms

platform

OS version

Windows

Windows 2008 or higher (64bit only)

Linux

CentOS 6.4 or higher (64bit only)

2. DRX Network

DRX can be configured in various ways as follows.

 

3. Installation

If the DRX is already installed on the operating machine, you only need to install additional DRX packages. However, if you separately configure DRX server, you need to install additional DRBD utility in addition to DRX package, and install QAT library when using HW compression.

Platform

Local Install

Dedicated Server Install

Remarks

Linux

  • Install drbd-utils(8.9.x)

  • HW compression library installation & build

  • Install DRX: 3.1 Installation on Linux

drbd-utils verson: 8.9.x

Windows

  • Install Windows DRBD

  • Install DRX: 3.2 Installation on Windows

  • Install DRX: 3.2 Installation on Windows

  • Install drbd-uitls(wdrbd-drbd-utils-x64-1_5_2)

    • Copy directly to the DRX installation path (c:\Program Files\drx\bin)

 

3.1. Installation on Linux

This product supports both installation based on RPM and one based on GUI installer. The default installation location is the "/opt" directory.

3.1.1. Installation with Shell Script

The following is the screen output when installing with RPM:

[root@node1opt]# sh DRX_Centos-x64_1_1-A7.sh -c

Unpacking JRE ...
Preparing JRE ...
Starting Installer ...
Please select a language:
1: English [Enter]
2: Korean
[1 - 2]

3.1.2. Installation with GUI Installer

To install the product by using GUI installer, run the "./DRX_unix_1_0.sh" on the command line. After the installation, open a new command line and proceed to the next DRX build processes(This should be done from the command line with the environment variable after installation).

 

3.1.3. Manual building DRX services on Linux

DRX service will be started automatically if the service is set as daemon service and rebooted. When the installation is finished, it is registered with DRX as a service, but it does not start automatically if there is no license file in the installation directory. In this case, you need to configure "drx.conf" and then, place "drx.lic" under the installed directory, then after run the service manually.Things such as these can be coordinated by "systemctl(centos7)" or "chkconfig(centos6)".

 

In the "/opt /DRX/samples" directory" there is an example file "drx.conf.sample.linux" to be referred for making the "drx.conf" file.

[root@node1opt]# cp /opt/DRX/samples/drx.conf.sample.linux /opt/DRX/drx.conf

Run the service with the following command:

# Centos7

[root@node1 ~]# systemctl start drxsvc

# Centos6

[root@node1 ~]# service drxsvc start

 

To stop the service, use the following command:

# Centos7

[root@node1 ~]# systemctl stop drxsvc

# Centos6

[root@node1 ~]# service drxsvc stop

To delete DRX, use the following command:

[root@node1 ~ ]# /opt/DRX/uninstall

Note. The directory may disappear if there is no change in the "/opt/DRX" directory.

3.1.4. DRX Watchdog on Linux

To manage DRX services, run a Linux DRX and a DRX monitor together. However, a DRX watchdog may restart DRX in the following cases:

  • Termination of a DRX process on the unusual or unexpected situation: available to check the log in "/logs/service.log"

  • Termination of DRX by the "drx-ctl -c shutdown" command on Linux: DRX restart occur by considering this case as unusual situation

Therefore, on Linux, you can use the following command to start or stop a DRX watchdog and DRX together:

CentOS6: service drxsvc [start/stop]

CentOS7: systemctl [start/stop] drxsvc

 

3.2. Installation on Windows

An installer for installation on Windows is provided. You can install the product easily through this installer.

 

3.2.1. Automatic building DRX services on Windows

By using the installer, you can register DRX for the Windows service to restart the DRX service automatically whenever system is rebooted.

 

3.2.2. Manual building DRX services on Windows

Use the following commands to Install, start, shut down, or uninstall Windows services: 

  • drxsvc /i: installing a service

  • drxsvc /u: removing a service

  • drxsvc /r: running a service on background

  • drxsvc /k: stopping a service

3.2.3. DRX Watchdog on Windows

To manage DRX services, run a Linux DRX and a DRX watchdog together. Refer to the followings:.

  • On Windows, its recovery policy is registered for the Windows service administrator occurs automatically when the first installation

  • The recovery policy: it forces DRX to restart infinitely if it perceives unusual termination of the DRX process.

  • Termination of DRX by the "drx-ctl -c shutdown" command on Windows: unlike on Linux, this case is considered as normal termination so the Windows service administrator would not run the recovery policy.

4. Uninstall

Log folder and configuration file and license file are not deleted. 

4.1. Windows

There are two ways to uninstall DRX as follows:

  • Deleting DRX on the "Uninstall" program: on Windows, "Control Panel" > "Programs" > "Uninstall"

  • Uninstalling by using the "uninstall.exe" command provided at the installation directory

4.2. Linux

  • Uninstalling by using the "uninstall.exe" command provided at the installation directory

5. License File

License file is required for DRX operation.

  • File name: "drx.lic"

  • Directory path where the file should be installed: the directory where DRX has been installed(necessary authorization of users/groups: administrator or root)

For more information on licenses, contact to the Man Technology.

 

6. DRX Configuration

6.1. Configuration File

 

The DRX configuration is configured in the DRBD's configuration file. Set the buffer size in the "proxy" section and set the DRX ip address in the "proxy on" sub section of the host section.

DRX provides both a local method that is installed on the same system as DRBD and a dedicated machine configuration method that is installed and operated on a separate dedicated machine. By default, it is recommended that each node's configuration file use a "drbd.conf" configuration file with the same contents, so that each node has a consistent configuration. However, in some situations, it is not absolutely necessary to set the DRBD node and DRX configuration file resource names differently. To specify a different configuration file path or name, you can also specify the location of the configuration file using "-c" in the DRX executable option.

DRX works with DRBD by setting Proxy section and Proxy on section in the existing DRBD configuration file as follows. There are some differences in 1:1 replication configuration and 1:N replication configuration, as shown below.

1:1 replication configuration

  • Proxy section

    • memlimit

    • plugin section

  • proxy on [ proxy on hostname ] section in the on [hostname] section

    • inside [ proxy inside ip address]:[ port ]

    • outside [ proxy inside ip address ]:[ port ]

1:N replication configuration

  • Proxy section

    • memlimit

    • plugin section

  • host [ hostname] address [ host ip address ]:[port] via proxy on [proxy on hosname] section in the connection section 

    • inside [ proxy inside ip address]: [ port ]

    • outside [ proxy inside ip address ]: [ port ]

6.1.1. Local method config

  • In case DRX configuration on the same system as node1 and node2, the contents of "drbd.conf" on node1 and node2 are the same on both nodes.

  • The following are examples of a 1:1 replication configuration and a 1:2 replication configuration

  • Note that each port information must be covered by the firewall, and configured so that no ports are used redundantly.

method

Windows config. file

Linux config. file

etc

method

Windows config. file

Linux config. file

etc

1:1 repliction

drbd.conf
resource r0 { device d minor 1; disk d; meta-disk f; net { protocol A; on-congestion pull-ahead; congestion-fill 480M; ping-timeout 30; } proxy { memlimit 500M; # DRX TX Buffer } 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; on-congestion pull-ahead; congestion-fill 480M; ping-timeout 30; } proxy { memlimit 500M; # DRX TX Buffer } 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 proxy

drbd.conf
resource r2 { startup { wfc-timeout 1; } 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 { # Begin with DR and mark as delimiter between nodes = 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 { # Begin with DR and mark as delimiter between nodes = 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 1; } } resource r0{ protocol A; disk { on-io-error detach; } net { ping-timeout 30; } syncer{ rate 100M; verify-alg md5; } 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 100M; plugin { lzma level 9; } } net{ on-congestion pull-ahead; congestion-fill 80M; ping-timeout 30; } stacked-on-top-of r0{ address 127.0.0.1:7788; proxy on pr1 pr2{ inside 127.0.0.1:7789; outside 10.30.0.135:7790; # mirror VIP } } on dd1{ address 127.0.0.1:7788; proxy on dd1 { inside 127.0.0.1:7789; outside 10.30.0.199:7790; #DR mirror IP } } }

 

6.1.2. Dedicated server configuration

 

By default, config file shoud be configured both nodes and DRX nodes identically. However, due to the nature of the dedicated server, DRX config needs to be modified to accommodate the characteristics of drbd-utils installed on the dedicated server to accommodate this type of node.

The procedure is as described below and the configuration examples are based on a Linux machine.

  • Windows server

    • Copy the "drbdadm.exe" file to the DRX server

    • Create an etc folder in the parent folder of the folder where the "drbdadm.exe" file is located

    • Configure "drbd.conf" in the "etc" path

  • Linux server

    • Install drbd-utils

    • Configure "drbd.conf" in the etc path

Local nodes


LAN

Local DRX


WAN

Remote DRX


LAN

Remote nodes

Windows node r0
resource r0 { device d minor 1; disk d; meta-disk e; proxy { memlimit 500M; # DRX TX Buffer } disk { resync-rate 100M; } net { protocol A; ping-timeout 30; } on w12std-0 { node-id 0; } on w12std-1 { node-id 1; } connection p-s { 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 disk { resync-rate 100M; } net{ protocol A; ping-timeout 30; } proxy { memlimit 300M; #drx tx buf } on w12std-0 { node-id 0; } on w12std-1 { node-id 1; } connection p-s { 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; disk { resync-rate 100M; } net{ protocol A; ping-timeout 30; } proxy { memlimit 300M; #drx tx bufl } on cen74-1 { node-id 0; } on cen74-2 { node-id 1; } connection DR-p-s { host cen74-1 address 10.10.0.11:7789 via proxy on 74proxy1 { inside 10.10.0.115:7790; outside 10.10.0.115:7791; } host cen74-2 address 10.10.0.105: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 disk { resync-rate 100M; } net{ protocol A; ping-timeout 30; } proxy { memlimit 300M; #drx tx buf } on w12std-0 { node-id 0; } on w12std-1 { node-id 1; } connection p-s { 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; disk { resync-rate 100M; } net{ protocol A; ping-timeout 30; } proxy { memlimit 300M; #drx tx bufl } on cen74-1 { node-id 0; } on cen74-2 { node-id 1; } connection DR-p-s { host cen74-1 address 10.10.0.11:7789 via proxy on 74proxy1 { inside 10.10.0.115:7790; outside 10.10.0.115:7791; } host cen74-2 address 10.10.0.105:7789 via proxy on 74proxy2 { inside 10.10.0.102:7790; outside 10.10.0.102:7791; } } }
Windows node r0
resource r0 { device d minor 1; disk d; meta-disk e; proxy { memlimit 500M; # DRX TX Buffer } disk { resync-rate 100M; } net { protocol A; ping-timeout 30; } on w12std-0 { node-id 0; } on w12std-1 { node-id 1; } connection p-s { 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; disk { resync-rate 100M; } net{ protocol A; ping-timeout 30; } proxy { memlimit 300M; #drx tx buf } on cen74-1 { node-id 0; } on cen74-2 { node-id 1; } connection DR-p-s { host cen74-1 address 10.10.0.11:7789 via proxy on 74proxy1 { inside 10.10.0.115:7790; outside 10.10.0.115:7791; } host cen74-2 address 10.10.0.105: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; disk { resync-rate 100M; } net{ protocol A; ping-timeout 30; } proxy { memlimit 300M; #drx tx bufl } on cen74-1 { node-id 0; } on cen74-2 { node-id 1; } connection DR-p-s { host cen74-1 address 10.10.0.11:7789 via proxy on 74proxy1 { inside 10.10.0.115:7790; outside 10.10.0.115:7791; } host cen74-2 address 10.10.0.105:7789 via proxy on 74proxy2 { inside 10.10.0.102:7790; outside 10.10.0.102:7791; } } }

 

6.2. DRX configuration procedure

6.2.1. Local Method Configuration

Linux
  1. Creating related settings of a proxy at the "drbd.conf" file

  2. Installing DRX

  3. Copying the license file to the directory(drx.lic) where DRX has been installed

  4. By using one of the following commands, run the DRX service depending on your CentOS version:

    CentOS 6

    service drxsvc start

    CentOS 7

    systemctl start drxsvc

Windows
  1. Createing proxy related settings in "drbd.conf"

  2. Installing DRX

  3. Copying the license file to the drx installation directory(drx.lic)

  4. Shut down and run DRX by using the following commands:

    DRX shutdown

    drx-ctl shutdown

    DRX restart

    sc stop drxsvc

When reconstructing config
  1. Replacing the new created "drbd.conf" or "proxy config" file with the existing configuration file

  2. Resourcing termination with command "drbdadm down"

  3. Starting resource with command "drbdadm up" 

  4. Exiting DRX by using the following command:

    drx-ctl shutdown

  5. Restarting DRX by using one of the the following commands for each OS:

    Windows

    sc stop drxsvc 

    sc start drxsvc 

    Linux Centos 6

    service drxsvc restart

    Linux CentOS 7

    systemctl restart drxsvc

 

6.2.2.  Dedicated Server Configuration

Initial configuration

Linux
  1. Install "drbd util" on the system

  2. Install DRX

  3. Copying the license file to the DRX installation directory (drx.lic)

  4. Copy the DRBD configuration file (drbd.conf, *.res) from the system where DRBD is configured and copy it to the DRBD /etc path on the system where DRX is installed

    1. If DRX handles multiple replication sessions for multiple nodes, it is necessary to manage the resource files of each node in the form of multiple resources.

  5. Run the DRX service using one of the following commands for CentOS version

    CentOS 6

    service drxsvc start

    CentOS 7

    systemctl start drxsvc
Windows
  1. Install "drbd util" on the system

  2. Install DRX

  3. Copying the license file to the DRX installation directory (drx.lic)

  4. Copy the DRBD configuration file (drbd.conf, *.res) from the system where DRBD is configured and copy it to the DRBD /etc path on the system where DRX is installed

    1. If DRX handles multiple replication sessions for multiple nodes, it is necessary to manage the resource files of each node in the form of multiple resources.

  5. Run DRX service 

DRX shutdown
sc stop drxsvc
DRX start
sc start drxsvc

 

reconfiguration

The same procedure with 6.2.1

 

If the above procedure is followed, DRBD and DRX will establish a connection and start replication.

 

6.3. Configuring DRX Properties

With a DRX property file, DRX can define its own properties, Apart from the DRBD configuration. Normally, you do not need to set up a property file because it works with DRX default settings.

This properties is applied when DRX is started. Here is a description of the corresponding DRX property file:

  • file name: "drx.conf"

  • path: The same directory as the executable file

  • etc: You must specify "[global] section" at the beginning of this property file

properties

See the following table for the properties of the DRX property file.

configuration

properties

default value

description

configuration

properties

default value

description

basic

lang

korean

DRX language configuration file

  • Located in the "base-dir/lang" in the preference(It is located under the executable file when it is not specified).

  • Create a file, such as "korean.ini", "english.ini", etc(utf8 file)
    e.g. "korean.ini" settings

base-dir

DRX Install path

Specifies the parent directory where the log storage and language settings files are located(If not specified, it will be DRX installation path).

 

connect-timeout

10

The timeout value used in initialization packet exchange after connection with remote DRX.(The unit is seconds).

(※ It is recommended that you increase the connection time if the connection is not smooth because there may be a connection delay depending on the network environment.)

bwlimit

0 (disabled)

Bandwidth limit value for sending and receiving.

loglevel-file

info

Specifies the log level to be saved as a file.

  • Linux is stored in the "/opt/DRX/logs" directory.

loglevel-system 

none

Specifies the log level stored in the system log.

  • Linux: service.log

compress/crypto


block-size

63K

Compression / encryption unit block size

bab-read-spin-counter

10

The number of retries in case bab is smaller than the block size when read.

bab-read-spin-delay

10

Retry Cycle delay value(ms) for bab read 

min-raw-block-size

1K

Minimum size to send to plain text even when setting compression / encryption

process-thread-count

-1 (auto)

Thread count for compress/encryption process. (0: disable)

※ This value is for tuning and debugging purposes. It is recommended that do not changing it.

 

drx.conf sample

drx.conf

drx.conf

#
# DRX Properties
#

[global]

lang=korean
drx_path=./

#drbd-conf=c:\program files\DRX\drbd.conf

#connect-timeout=10

# log levels: debug < info < warn < err < fatal
loglevel-file=info

block-size=1M # Compression / encryption unit block size (default 63K)
bab-read-spin-counter=10 # The number of retries in case bab is smaller than the block size when read
bab-read-spin-delay=10 # Retry Cycle delay value(ms) for bab read 
min-raw-block-size=1K # Minimum size to send to plain text even when setting compression / encryption

 

 

7. Administrative command

 

Manage DRX with "drx-ctl" command.

  • Provides "show" series commands and "print statistics" series commands of "drbd proxy" compatible command.

  • It does not provide configuration commands such as "add", "del", "set", etc., and can only be configured through the drbd.config configuration file.

 

7.1. Command

 

drx-ctl show 

Print information and status of currently configured resources.

C:\Users\sekim>drx-ctl show Command : show ================================================================================================================================================================================ Name Type Status listen-lan-ip remote-drx-ip local-drx-wan-ip local-drbd-ip Up since ================================================================================================================================================================================ r0-2008r2-x64-pas1-2008r2-x64-act meta established 10.10.0.245:7790 10.10.0.246:7791 10.10.0.245:7791 10.10.0.245:7789 2017-08-17 17:48:40 r0-2008r2-x64-pas1-2008r2-x64-act data established 10.10.0.245:7790 10.10.0.246:7791 10.10.0.245:7791 10.10.0.245:7789 2017-08-21 09:18:58 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- All connections : 2

 

  • Name: channel name

  • type: data or meta

  • Status: connection status

    • stopped: Stopped state

    • waiting: Waiting for connection

    • connecting: Connecting with local drbd

    • bridged: Local DRX and remote DRX connected

    • connected: Local DRX and Local DRBD Connected State

    • establishing: Local DRX and Remote DRX Connections, Local DRBD Connected State

    • established: Local DRX and remote DRX connection, local DRBD Remote DRBD both connected (replication established state)

  • listen-lan-ip

  • remote-drx-ip 

  • local-drx-wan-ip

  • local-drbd-ip

  • up since: drbd/drx Start time.

 

drx-ctl show states

Print detail connection status of currently configured resources.

C:\Users\sekim>drx-ctl show states Command id (4) : show states ========================================================================================================================================================= Name Type local-drbd-ip State local-drx-ip State remote-drx-ip ========================================================================================================================================================= p-s-drxdev1-DESKTOP-L141PH6 data 192.168.35.112:7789 -established-> 192.168.35.1:7790/192.168.35.1:7791 <-bridged----- 192.168.35.101:7791 p-s-drxdev1-DESKTOP-L141PH6 meta 192.168.35.112:7789 <-established- 192.168.35.1:7790/192.168.35.1:7791 -----bridged-> 192.168.35.101:7791 --------------------------------------------------------------------------------------------------------------------------------------------------------- All connections : 2, Established : 2

 

  • Name: channel name

  • Type: data or meta

  • State: connection status (arrow: connection direction)

    • stopped: Stopped state

    • waiting: Waiting for connection

    • connecting: Connecting with local drbd

    • bridged: Local DRX and remote DRX connected

    • connected: Local DRX and Local DRBD Connected State

    • establishing: Local DRX and Remote DRX Connections, Local DRBD Connected State

    • established: Local DRX and remote DRX connection, local DRBD Remote DRBD both connected (replication established state)

  • local-drbd-ip

  • local-drx-ip

  • remote-drx-ip

 

drx-ctl show memusage

Print the memory usage of the currently connected session.

C:\Users\sekim>drx-ctl show memusage Command : show memusage ================================================================================================================================================ Name Capacity Begin End Size Full Counts Use ================================================================================================================================================ r0-2008r2-x64-pas1-2008r2-x64-act 1073741824 (1.00 GB) 829 829 0 (0.00 B) 0 0 % 10485760 (10.00MB) 0 0 0 (0.00 B) - 0 % ------------------------------------------------------------------------------------------------------------------------------------------------ Active bab counts : 1 ------------------------------------------------------------------------------------------------------------- name Latency cur avg max min ============================================================================================================= r0-2008r2-x64-pas1-2008r2-x64-act TX BAB 00:00:00.105064 00:00:00.104454 00:00:00.105833 00:00:00.102081 RX BAB 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 Compress 00:00:00.000038 00:00:00.000068 00:00:00.000120 00:00:00.000038 Decompress 00:00:00.000019 00:00:00.000037 00:00:00.000063 00:00:00.000019 -------------------------------------------------------------------------------------------------------------

 

  • Name: channel name

  • Capacity: The amount of memory used for buffering

  • Begin: Memory start offset of the ring buffer currently in operation

  • End: Offset of last memory point in ring buffer currently in operation

  • Size: The amount of memory currently being used for buffering

  • Full Counts: Buffer congestion state hit count

  • Use: Percentage of current usage relative to total buffered memory(%)

  • Latency: BAB/compress/uncompress latency statistics

 

drx-ctl show connections

Shows the status of the currently connected DRBD resource unit.

C:\Users\sekim>drx-ctl show connections Command : show connections ====================================================================================================================================================================================== Name Type TX.raw TX.net TX.Ratio Tx.Speed RX.raw RX.net RX.Ratio RX.Speed Up since ====================================================================================================================================================================================== r0-2008r2-x64-pas1-2008r2-x64-act meta 18.54 GB 36.23 MB 52,416 % 27.00 B 51.36 KB 85.71 KB 59 % 27.00 B 2017-08-17 17:48:40 r0-2008r2-x64-pas1-2008r2-x64-act data 305.84 KB 412.21 KB 74 % 0.00 B 1.75 MB 2.55 MB 68 % 0.00 B 2017-08-21 09:18:58 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Active connections : 2

 

  • Name: channel name

  • TX.raw: Amount of packets to send remotely

  • TX.net:The amount of packets transmitted remotely (separated from TX.raw in compression / encryption)

  • TX.ratio: TX compression ratio

  • TX.speed: TX speed

  • RX.raw: Amount of packets to send locally

  • RX.net: The amount of packets transmitted locally (separated from RX.raw in compression / encryption)

  • RX.ratio: RX decompression ratio

  • RX.speed: RX speed

  • Up since: connection established time

 

drx-ctl print statistics 

Details of the currently connected session are output in an analytical format.

C:\Users\sekim>drx-ctl print statistics Command : print statistics ================================================================================ Name : r0-2008r2-x64-pas1-2008r2-x64-act ================================================================================ * options memlimit: 1.00 GB bwlimit: 0.00 B bab-read-spin-counter: 10 block-size: 64512 (63.00 KB) bab-read-spin-delay: 10 min-raw-block-size: 0 compressor: ZLIB level: 9 crypto: OPENSSL crypto-key-file: * available plugins ZLIB LZMA OPENSSL ---------------------------------------- * session drbd stream type: data connected: 2017-08-17 17:48:40 up time: 1 mins 40 secs status: established * tx raw packets: 6.28 GB net packets: 12.24 MB speed: 0.00 B * compress ratio average: 1.79152 best: 20.3922 worst: 1.05263 * compress time counts: 104555 average: 00:00:00 max: 00:00:00.015601 min: 00:00:00 * encrypt time counts: 104555 average: 00:00:00 max: 00:00:00.015601 min: 00:00:00 * rx raw packets: 725.00 B net packets: 262.00 B speed: 0.00 B * decompress time counts: 2 average: 00:00:00 max: 00:00:00 min: 00:00:00 * decrypt time counts: 2 average: 00:00:00 max: 00:00:00 min: 00:00:00 ----------------------------------------

 

drx-ctl set bwlimit <channel name> <bwlimit-in-bytes>

DRX supports resource-specific bandwidth limiting during operation. You can limit the network bandwidth that DRX operate, and then it transmits data within the specified bandwidth. The default value is 0, which means that the bandwidth is unlimited.

<channel name> must specify the connection channel name used internally by DRX. This channel name can be extract through the drx-ctl show command.

C:\Users\sekim>drx-ctl show Command : show ============================================================================================================================================================================================== Name Type Status listen-lan-ip remote-drx-ip local-drx-wan-ip local-drbd-ip Up since ============================================================================================================================================================================================== active-standby-2008r2-x64-pas1-2008r2-x64-act data established 10.10.0.245:7790 10.10.0.246:7791 10.10.0.245:7791 10.10.0.245:7789 2018-02-07 13:08:51 active-standby-2008r2-x64-pas1-2008r2-x64-act meta established 10.10.0.245:7790 10.10.0.246:7791 10.10.0.245:7791 10.10.0.245:7789 2018-02-07 13:08:50 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- All connections : 2 C:\Users\sekim>drx-ctl set bwlimit active-standby-2008r2-x64-pas1-2008r2-x64-act 10MB Command : set bwlimit active-standby-2008r2-x64-pas1-2008r2-x64-act 10MB Result: done.

 

 

proxy { bwlimit 2M; }

The above example limits the bandwidth to about 2MiB/s by setting drbd.conf without using the set bwlimit command.

 

drx-ctl shutdown 

shutdown DRX. However, it is automatically restarted by the DRX Watchdog, so it is also used as a function to restart DRX.

 

 

8. Log

8.1. Saving method and log level

The DRX logs provide the following saving methods:

  • file

  • system log

    • Linux: service.log

The log levels for the DRX log are:

  • debug < info < warn < err < fatal < none

  • none means no logging.

8.2. Log setting

The log setting can be applied at the start of DRX by specifying the corresponding property in the "drx.conf" file or by using "drx-ctl" command. Use the log level to determine the saving method and level.

Here is how to set "drx-ctl" for this operation.

  • drx-ctl -c set loglevel-file <level>

9. Command options

For a detailed command options, see:

drx 

options

description

default value

options

description

default value

-f

start foreground process

-f

-c

Location of configuration file

drx install path

  • Example

    • Option "-c"

      C:\Users\dgkim\Downloads>drx -f -c c:\drx.conf loading config : [c:\drx.conf] ...skip...

drx-ctl 

option

description

default value

environment

option

description

default value

environment

-v

Check DRX version and build date

 

Windows, Linux

-c show

Basic connection information

 

Windows, Linux

-c set loglevel-file

Specify log level of file

INFO

Windows, Linux

drxsvc

option

description

environment

option

description

environment

/i

Install DRX service

Windows

/u

Remove DRX service

Windows

/s

Start DRX service

Windows

/t

Stop DRX service

Windows

10. Etc

The default loopback TCP port for communication (communication between DRX and "drx-ctl") is 9100.

  • oom-kill due to memory usage.

    • oom-kill is caused by excessive use of memory on the operation server. so oom_adjust of DRX parameter have been changed.