Skip to main content

Cấu hình đồng bộ dữ liệu 2 chiểu lsyncd

23,March 2018
cấu hình đồng bộ dữ liệu 2 chiểu lsyncd và rsync

Lsyncd (Live Syncing Daemon) được viết bằng ngôn ngữ Lua - là giải pháp để cho thư mục local của bạn sẽ tự động đồng bộ hóa với các máy khác. Các tập tin trên máy tính local sẽ được theo dõi những thay đổi mỗi vài giây và nếu có thay đổi được ghi nhận thông qua inotify hoặc fsevents, sau đó sẽ được nhân rộng và đồng bộ hóa với máy chủ từ xa

1. Cài đặt rsync và lsyncd

+ Trên Ubuntu 16

$ sudo apt-get install rsync 
$ sudo apt-get install lsyncd

+ Trên CentOS 7

$ sudo yum -y install rsync 
$ sudo yum -y install lsyncd

+ Tạo thư mục chứa cấu hình và log của lsyncd

$ mkdir -p /etc/lsyncd
$ mkdir -p /var/log/lsyncd
$ touch /var/log/lsyncd/lsyncd.{log,status}

+ Enable service "lsyncd"

$ sudo systemctl start lsyncd
$ sudo system status lsyncd
$ sudo systemctl enable lsyncd
$ sudo systemctl is-enabled lsyncd

 

2. Cấu hình lsyncd

+ Cấu hình truy cập SSH giữa repmgr_node1 và repmgr_node2 cho account "root"

$ ssh-keygen 

#Copy the publich key id_rsa.pub contents and add it to the authorized_keys file in the other host's "root" user ssh directory
root@repmgr_node1:~$ cat ~/.ssh/id_rsa.pub #paste root@repmgr_node2:~$ vim ~/.ssh/authorized_keys
root@repmgr_node2:~$ cat ~/.ssh/id_rsa.pub #paste root@repmgr_node1:~$ vim ~/.ssh/authorized_keys

#Testing ssh access 
root@repmgr_node1:~$ ssh 192.168.10.102
root@repmgr_node2:~$ ssh 192.168.10.101

+ Thực hiện đồng bộ dữ liệu trên thư mục "/source/node1" trên server "repmgr_node1 : 192.168.10.101" sang thư mục "/source/node2" trên server "repmgr_node2 : 192.168.10.102"

root@repmgr_node1# mkdir -p /source/node1
root@repmgr_node1# mkdir -p /source/node1
root@repmgr_node1# touch /source/node1/file{1..10}
root@repmgr_node1# mkdir -p /source/node1/cache
root@repmgr_node1# touch /source/node1/cache/temp{1..10}

root@repmgr_node2# mkdir -p /source/node2
root@repmgr_node2# mkdir -p /source/node2/cache
root@repmgr_node2# touch /source/node2/cache/draf{1..10}

 

+ Tạo file cấu hình "lsyncd.conf.lua" trên server "repmgr_node1" với nội dung sau

- Note: Nếu không muốn cấu hình truy cập account "root" trên 2 servers, có thể tạo 1 account "rsyncuser" và cấu hình truy cập ssh trên 2 server . Gán "rsyncuser" permission cho thư mục muốn đồng bộ "chown rsyncuser:rsyncuser /source -R"

root@repmgr_node1$ vim /etc/lsyncd/lsyncd.conf.lua

settings {
        insist = true,
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}

sync {
        default.rsyncssh,
        delete=true,
        source = "/source/node1/",
        host = "192.168.10.102",
	targetdir = "/source/node2/",
        exclude={'exclude', 'cache'},
        rsync = {
                update = true,
                archive = true,
                links = false,
                perms = true,
                owner = true,
                compress = false,
                whole_file = false,
		#rsh = "/usr/bin/ssh -l rsyncuser -i /home/rsyncuser/.ssh/id_rsa"
        }
}

 

+ Tạo file cấu hình "lsyncd.conf.lua" trên server "repmgr_node2" với nội dung sau

root@repmgr_node2$ vim /etc/lsyncd/lsyncd.conf.lua

settings {
        insist = true,
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}

sync {
        default.rsyncssh,
        delete=true,
        source = "/source/node2/",
        host = "192.168.10.101",
	targetdir = "/source/node1",
        exclude={'exclude', 'cache'},
        rsync = {
                update = true,
                archive = true,
                links = false,
                perms = true,
                owner = true,
                compress = false,
                whole_file = false,
		#rsh = "/usr/bin/ssh -l rsyncuser -i /home/rsyncuser/.ssh/id_rsa"
        }
}

 

3. Kiểm tra

root@repmgr_node1:~# systemctl restart lsyncd
root@repmgr_node1:~# ls /source/node1/

root@repmgr_node2:~# systemctl restart lsyncd
root@repmgr_node2:~# ls /source/node2/