diff --git a/src/box/box.h b/src/box/box.h
index baddcf73f00729ad0d9f2ffde7380b17c76ba033..9dfb3fd2a4318a2f201e37672e39ac48f648d74b 100644
--- a/src/box/box.h
+++ b/src/box/box.h
@@ -174,6 +174,7 @@ void box_set_vinyl_max_tuple_size(void);
 void box_set_vinyl_cache(void);
 void box_set_vinyl_timeout(void);
 void box_set_replication_timeout(void);
+void box_set_replication_connect_timeout(void);
 void box_set_replication_connect_quorum(void);
 
 extern "C" {
diff --git a/src/box/lua/cfg.cc b/src/box/lua/cfg.cc
index 5e88ca348910abca78b03c9e2a57eeeb331cc7f3..0ca150877e3a442c06d4f3c2936e7167a563dc5e 100644
--- a/src/box/lua/cfg.cc
+++ b/src/box/lua/cfg.cc
@@ -240,6 +240,17 @@ lbox_cfg_set_replication_timeout(struct lua_State *L)
 	return 0;
 }
 
+static int
+lbox_cfg_set_replication_connect_timeout(struct lua_State *L)
+{
+	try {
+		box_set_replication_connect_timeout();
+	} catch (Exception *) {
+		luaT_error(L);
+	}
+	return 0;
+}
+
 static int
 lbox_cfg_set_replication_connect_quorum(struct lua_State *L)
 {
@@ -273,8 +284,8 @@ box_lua_cfg_init(struct lua_State *L)
 		{"cfg_set_vinyl_cache", lbox_cfg_set_vinyl_cache},
 		{"cfg_set_vinyl_timeout", lbox_cfg_set_vinyl_timeout},
 		{"cfg_set_replication_timeout", lbox_cfg_set_replication_timeout},
-		{"cfg_set_replication_connect_quorum",
-			lbox_cfg_set_replication_connect_quorum},
+		{"cfg_set_replication_connect_timeout", lbox_cfg_set_replication_connect_timeout},
+		{"cfg_set_replication_connect_quorum", lbox_cfg_set_replication_connect_quorum},
 		{NULL, NULL}
 	};
 
diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua
index a9ccb5caec1f79da3bfee801e2378c0301c9b855..1c413ec6ad7f6d98bc027746c2a0153723692e08 100644
--- a/src/box/lua/load_cfg.lua
+++ b/src/box/lua/load_cfg.lua
@@ -182,6 +182,7 @@ local dynamic_cfg = {
     end,
     force_recovery          = function() end,
     replication_timeout     = private.cfg_set_replication_timeout,
+    replication_connect_timeout = private.cfg_set_replication_connect_timeout,
     replication_connect_quorum = private.cfg_set_replication_connect_quorum,
 }
 
@@ -190,6 +191,7 @@ local dynamic_cfg_skip_at_load = {
     listen                  = true,
     replication             = true,
     replication_timeout     = true,
+    replication_connect_timeout = true,
     replication_connect_quorum = true,
     wal_dir_rescan_delay    = true,
     custom_proc_title       = true,
diff --git a/test/replication/misc.result b/test/replication/misc.result
index 97a7855c741d682b75cf088f18c2022895468672..ff0dbf5490da0ed3830a5a178ea6f502a3b37cbb 100644
--- a/test/replication/misc.result
+++ b/test/replication/misc.result
@@ -12,7 +12,10 @@ box.schema.user.grant('guest', 'replication')
 replication_timeout = box.cfg.replication_timeout
 ---
 ...
-box.cfg{replication_timeout=0.05, replication={}}
+replication_connect_timeout = box.cfg.replication_connect_timeout
+---
+...
+box.cfg{replication_timeout=0.05, replication_connect_timeout=0.05, replication={}}
 ---
 ...
 box.cfg{replication = {'127.0.0.1:12345', box.cfg.listen}}
@@ -20,7 +23,7 @@ box.cfg{replication = {'127.0.0.1:12345', box.cfg.listen}}
 - error: 'Incorrect value for option ''replication'': failed to connect to one or
     more replicas'
 ...
-box.cfg{replication_timeout = replication_timeout}
+box.cfg{replication_timeout = replication_timeout, replication_connect_timeout = replication_connect_timeout}
 ---
 ...
 -- gh-3111 - Allow to rebootstrap a replica from a read-only master
@@ -79,7 +82,7 @@ test_run:cmd("switch autobootstrap1")
 test_run = require('test_run').new()
 ---
 ...
-box.cfg{replication_timeout = 0.01}
+box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01}
 ---
 ...
 test_run:cmd("switch autobootstrap2")
@@ -89,7 +92,7 @@ test_run:cmd("switch autobootstrap2")
 test_run = require('test_run').new()
 ---
 ...
-box.cfg{replication_timeout = 0.01}
+box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01}
 ---
 ...
 test_run:cmd("switch autobootstrap3")
@@ -102,7 +105,7 @@ test_run = require('test_run').new()
 fiber=require('fiber')
 ---
 ...
-box.cfg{replication_timeout = 0.01}
+box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01}
 ---
 ...
 _ = box.schema.space.create('test_timeout'):create_index('pk')
diff --git a/test/replication/misc.test.lua b/test/replication/misc.test.lua
index 85057976981552447f3c081752c113012d463fad..c05e521659b5788e59b0c893bebd75610fdb3e26 100644
--- a/test/replication/misc.test.lua
+++ b/test/replication/misc.test.lua
@@ -6,9 +6,10 @@ box.schema.user.grant('guest', 'replication')
 -- gh-2991 - Tarantool asserts on box.cfg.replication update if one of
 -- servers is dead
 replication_timeout = box.cfg.replication_timeout
-box.cfg{replication_timeout=0.05, replication={}}
+replication_connect_timeout = box.cfg.replication_connect_timeout
+box.cfg{replication_timeout=0.05, replication_connect_timeout=0.05, replication={}}
 box.cfg{replication = {'127.0.0.1:12345', box.cfg.listen}}
-box.cfg{replication_timeout = replication_timeout}
+box.cfg{replication_timeout = replication_timeout, replication_connect_timeout = replication_connect_timeout}
 
 -- gh-3111 - Allow to rebootstrap a replica from a read-only master
 replica_uuid = uuid.new()
@@ -30,14 +31,14 @@ test_run:create_cluster(SERVERS)
 test_run:wait_fullmesh(SERVERS)
 test_run:cmd("switch autobootstrap1")
 test_run = require('test_run').new()
-box.cfg{replication_timeout = 0.01}
+box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01}
 test_run:cmd("switch autobootstrap2")
 test_run = require('test_run').new()
-box.cfg{replication_timeout = 0.01}
+box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01}
 test_run:cmd("switch autobootstrap3")
 test_run = require('test_run').new()
 fiber=require('fiber')
-box.cfg{replication_timeout = 0.01}
+box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01}
 _ = box.schema.space.create('test_timeout'):create_index('pk')
 test_run:cmd("setopt delimiter ';'")
 function test_timeout()