Lsyncd đồng bộ thư mục, files giữa 2 server

Chúng ta vẫn thường sử dụng tiện ích rsync đồng bộ file và thư mục trong cùng server hoặc giữa 2 server với nhau Lsyncd

Rsync nhẹ, cho tốc độ nhanh, nhưng có một điểm yếu là chưa tích hợp tính năng Live, tức là mọi thay đổi chưa được đồng bộ ngay lập tức. Rsync cũng chưa cấu hình được để đồng bộ 2 chiều trong trường hợp Load Balancing. Và để thực hiện tự động thì cần đặt lịch (tạo cron) cho Rsync.

Để giải quyết các tình trạng mà Rsync không làm được, chúng ta có thể sử dụng Lsyncd

Lsyncd (Live Syncing Daemon), sử dụng tiện ích rsync, kết hợp với SSH. Lsyncd nhẹ, cài đặt và cấu hình đơn giản. Tôi sẽ sử dụng Lsyncd để đồng bộ dữ liệu giữa 2 servers CentOS

Chú ý: Thực hiện cài đặt SSH key 2 chiều cho  Server01 và Server02

1. Cài đặt Rsync và  Lsyncd cho cả 2 server

[php]

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

[/php]

Tạo thư mục và file chứa cấu hình, log:

[php]

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

[/php]

2. Cấu hình Lsyncd

Chỉnh sửa file sudo vi  /etc/lsyncd.conf

a. Server01

Nội dung như sau:

[php]

— sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="/tmp/htmlcopy/"}
settings {
insist = true,
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
statusInterval = 1
}
sync{
default.rsyncssh,
source="/var/www/html/staging/",
host="192.168.1.50",
exclude={‘system’,’release_sh’,’.git’,’DB’,’logs’,’_scss’},
targetdir="/var/www/html/staging/",
rsync = {
archive = true, — use the archive flag in rsync
perms = true, — Keep the permissions
owner = true, — Keep the owner
_extra = {"-a"}, — Sometimes permissions and owners isn’t copied correctly so the _extra can be used for any flag in rsync
},
delay = 5, — We want to delay the syncing for 5 seconds so we queue up the events
maxProcesses = 1 — We only want to use a maximum of 4 rsync processes at same time
}

[/php]

b. Server02

Nội dung:

[php]

— sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="/tmp/htmlcopy/"}
settings {
insist = true,
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
statusInterval = 1
}
sync{
default.rsyncssh,
source="/var/www/html/staging/",
host="192.168.1.51",
exclude={‘system’,’release_sh’,’.git’,’DB’,’logs’,’_scss’},
targetdir="/var/www/html/staging/",
rsync = {
archive = true, — use the archive flag in rsync
perms = true, — Keep the permissions
owner = true, — Keep the owner
_extra = {"-a"}, — Sometimes permissions and owners isn’t copied correctly so the _extra can be used for any flag in rsync
},
delay = 5, — We want to delay the syncing for 5 seconds so we queue up the events
maxProcesses = 1 — We only want to use a maximum of 4 rsync processes at same time
}

[/php]

3. Enable service lsyncd và test đồng bộ

sudo systemctl start lsyncd

sudo systemctl enable lsyncd

hoặc đã start

sudo systemctl restart lsyncd

Chúng ta có thể xem lại log bằng  tail -f /var/log/lsyncd/lsyncd.log

Test lại bằng cách: tạo file hoặc thư mục trong /var/www/html/staging/ của Server01 sau đó vào /var/www/html/staging/ của Server02 xem nó có xuất hiện file hoặc thư mục vừa tạo hay không, và làm ngược lại.

Hy vọng các bạn thành công.

[thongbao]

  1. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  2. Cảm ơn các bạn đã đọc.

[/thongbao]

[Linux] Đồng bộ thư mục, files giữa 2 server sử dụng Lsyncd
Tagged on: