Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

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.
  • 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.

...

Table of Contents


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 can be changed through drx.conf.
  • 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 addresses to work with replication.
  • Buffers: Set buffer size per resource (channel)
    • memlimit
    • rx-memlimit
  • 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
title1: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 | lz4 | iqa] level [1~9]
      • crypto openssl
      • rx-memlimit


Info
title1: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 | lz4 | iqa] level [1~9]
      • crypto openssl

...

      • rx-memlimit

Local configuration

...

  • With DRX installed and running on node1 and node2 local machines, the 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.
methodWindows configurationLinux configuration비고
1:1 replication


Code Block
titledrbd.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;
        }
    }
}



Code Block
titledrbd.conf
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
titledrbd.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 { 

	 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
titledrbd.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/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{
       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

By default, configuration files are configured to the configuration file is 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, 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 example is based on a Linux dedicated server.


Local
LAN
Local DRX
WAN

Remote DRX
LAN
Remote


Code Block
titleWindows 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;
		}
	}

}




Code Block
titler0
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
titler1
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
titler0
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
titler1
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
titleWindows 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;
		}
	}

}




Code Block
titleLinux node r1
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
titleLinux node r1
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

You Apart from the BSR configuration, you can set the DRX internal behavior 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, 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.

  • file name: "drx.conf"
  • default path: DRX Installed path
  • Caution: [global] section should be described at the beginning of the file
typepropertydefault valuedescription
normallang
korean 
englishDRX 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

drbd-conf

bsr-conf-path

Windows:

  • ../etc/bsr.conf

Linux:

  • /etc/bsr.conf
Specify the path to bsr.conf
fsr-conf-path

Windows:

  • ../etc/
drbd
  • bsr.conf

Linux:

  • /etc/
drbd
  • bsr.conf
Specify the path to
drbd
fsr.conf
connect-timeout10

Timeout value in seconds after connecting to a remote DRX, while sending and receiving initialization packets

bwlimit0 (unlimited)Bandwidth
limit on sending (incoming bandwidth controlled by bwlimit value on remote DRX)ip-verificationonon: Allow only the IP connections set in dbd.conf.
off: Allow connections for all IPs
limit on sending (incoming bandwidth controlled by bwlimit value on remote DRX)
ip-verificationon

on: Allow only the IP connections set in dbd.conf.
off: Allow connections for all IPs.

ulimit-open-files-count0

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-port9100Specify internal ipc port values for the CLI to control the drx (supported in version 1.3.1 and later).
logloglevel-fileinfo

Specify the log level that is written as a file

  • Location: stored in the logs folder of the installation path
loglevel-
stdout
consoleinfoSpecify the log level that is output to the screen in foreground mode
logfile-max-size10MFile size limit per log file
logfile-max-count10Maximum number of log files kept by type
performance-logoffWhether to save performance statistics log
compress/encrypt



block-size63K

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-size1KMinimal 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

# DRBD BSR Proxy configuration
#
[global]
language settings file
# lang=korean

Default path where DRX is installed
# base-dir=/opt/DRX

Specify the path to drbdbsr.conf
# drbd bsr-conf-path=c:\program files\DRX\drbdbsr.conf

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 < error < critical
Specify the log level that is output to the screen in foreground mode
# loglevel-stdoutconsole=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


...