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]
- 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ể.
- Cảm ơn các bạn đã đọc.
[/thongbao]