diff --git a/src/main.rs b/src/main.rs
index e38f354a5ead7ecdcb06dabf0314ab0684348c46..7b5c8bda4149d4d2040133d7f9f23d80bffeb609 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -473,7 +473,7 @@ fn start_join(args: &args::Run, leader_address: String) {
         listen: None,
         read_only: false,
         instance_uuid: Some(resp.peer.instance_uuid.clone()),
-        // replicaset_uuid: resp.replicaset_uuid
+        replicaset_uuid: Some(resp.peer.replicaset_uuid.clone()),
         replication: resp.box_replication.clone(),
         wal_dir: args.data_dir.clone(),
         memtx_dir: args.data_dir.clone(),
diff --git a/src/traft/mod.rs b/src/traft/mod.rs
index 94db0ff5c89389b4e41497ad1fffbba2825835e2..375a7931028946caab3f6407a900732dbc8c9e4f 100644
--- a/src/traft/mod.rs
+++ b/src/traft/mod.rs
@@ -71,7 +71,7 @@ pub struct Peer {
     pub instance_id: String,
     pub replicaset_id: String,
     pub instance_uuid: String,
-    // pub replicaset_uuid: String,
+    pub replicaset_uuid: String,
     /// `0` means it's not committed yet.
     pub commit_index: u64,
 }
@@ -303,6 +303,8 @@ impl AsTuple for JoinResponse {}
 lazy_static::lazy_static! {
     static ref NAMESPACE_INSTANCE_UUID: Uuid =
         Uuid::new_v3(&Uuid::nil(), "INSTANCE_UUID".as_bytes());
+    static ref NAMESPACE_REPLICASET_UUID: Uuid =
+        Uuid::new_v3(&Uuid::nil(), "REPLICASET_UUID".as_bytes());
 }
 
 /// Generate UUID for an instance from `instance_id` (String).
@@ -311,3 +313,10 @@ pub fn instance_uuid(instance_id: &str) -> String {
     let uuid = Uuid::new_v3(&NAMESPACE_INSTANCE_UUID, instance_id.as_bytes());
     uuid.hyphenated().to_string()
 }
+
+/// Generate UUID for a replicaset from `replicaset_id` (String).
+/// Use Version-3 (MD5) UUID.
+pub fn replicaset_uuid(replicaset_id: &str) -> String {
+    let uuid = Uuid::new_v3(&NAMESPACE_REPLICASET_UUID, replicaset_id.as_bytes());
+    uuid.hyphenated().to_string()
+}
diff --git a/src/traft/storage.rs b/src/traft/storage.rs
index d05266300c6fb853ae6c0fdbc805e9f8666c05b6..c576090fac073bc31f5f8b3ccb10d3544cdc9678 100644
--- a/src/traft/storage.rs
+++ b/src/traft/storage.rs
@@ -78,7 +78,7 @@ impl Storage {
                     {name = 'instance_id', type = 'string', is_nullable = false},
                     {name = 'replicaset_id', type = 'string', is_nullable = false},
                     {name = 'instance_uuid', type = 'string', is_nullable = false},
-                    -- {name = 'replicaset_uuid', type = 'string', is_nullable = false},
+                    {name = 'replicaset_uuid', type = 'string', is_nullable = false},
                     {name = 'commit_index', type = 'unsigned', is_nullable = false},
                 }
             })
diff --git a/src/traft/topology.rs b/src/traft/topology.rs
index 3d59c7fc35e3a1e4fe167dba332ca054909a1c25..71997947bd76399ba63cbd58acf47997a96c11ff 100644
--- a/src/traft/topology.rs
+++ b/src/traft/topology.rs
@@ -2,6 +2,7 @@ use std::collections::BTreeMap;
 use std::collections::BTreeSet;
 
 use crate::traft::instance_uuid;
+use crate::traft::replicaset_uuid;
 use crate::traft::JoinRequest;
 use crate::traft::Peer;
 use crate::traft::RaftId;
@@ -106,6 +107,7 @@ impl Topology {
                 Some(v) => v.clone(),
                 None => self.choose_replicaset_id(),
             };
+            let replicaset_uuid = replicaset_uuid(&replicaset_id);
 
             let peer = Peer {
                 raft_id,
@@ -113,6 +115,7 @@ impl Topology {
                 replicaset_id,
                 commit_index: INVALID_INDEX,
                 instance_uuid: instance_uuid(&req.instance_id),
+                replicaset_uuid,
                 peer_address: req.advertise_address.clone(),
                 voter: req.voter,
             };
@@ -133,6 +136,7 @@ impl Topology {
 mod tests {
     use super::Topology;
     use crate::traft::instance_uuid;
+    use crate::traft::replicaset_uuid;
     use crate::traft::JoinRequest;
     use crate::traft::Peer;
 
@@ -151,8 +155,9 @@ mod tests {
                     voter: $voter,
                     instance_id: $instance_id.into(),
                     replicaset_id: $replicaset_id.into(),
-                    commit_index: raft::INVALID_INDEX,
                     instance_uuid: instance_uuid($instance_id),
+                    replicaset_uuid: replicaset_uuid($replicaset_id),
+                    commit_index: raft::INVALID_INDEX,
                 }
             ),*]
         };