您現在的位置是:首頁 >學無止境 >lsyncd技術使linux服務器上的項目實現同步網站首頁學無止境
lsyncd技術使linux服務器上的項目實現同步
三只小菜猿
2023-02-09 10:37:26
簡介【代碼】debain使用lsyncd技術使linux服務器上的項目實現同步。
**下面開始詳細講解配置過程及過程中可能遇到的問題:
現有兩臺linux主機:**
192.168.1.101 //主機器
192.168.1.102 //輔機器
以下操作均在主機器上進行:
安裝lsyncd和rsync
apt-get install lsyncd
apt install rsync
查看安裝版本
lsyncd -version
創建必要文件夾
mkdir /etc/lsyncd
mkdir /var/log/lsyncd
touch /var/log/lsyncd/lsyncd.{log,status}
配置免密登陸
**ssh-keygen -t rsa
ssh-copy-id root@192.168.1.102 //用戶名@輔機器的ip地址;執行后需輸入輔機器的遠程連接密碼
ssh root@192.168.1.102 //無需密碼即可登陸**
端口默認不是22的話使用以下命令
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 20009 root@192.168.1.102//-p為端口
配置文件
cd /etc/lsyncd/
vim lsyncd_nginx.lua
配置文件內容:
settings {
logfile = "/var/log/lsyncd/lsyncd.log", --定義日志文件
statusFile = "/var/log/lsyncd/lsyncd.status", --定義狀態文件
maxProcesses = 20 -- 同步進程的最大個數。假如同時有20個文件需要同步,而maxProcesses = 8,則最大能看到有8個rysnc進程
}
sync {
default.rsyncssh,
source = "/home/ubuntu/test", --源目錄
host = "root@192.168.1.11", --目的主機
targetdir = "/home/ubuntu/test", --遠程目錄
exclude = { --需要排除的文件或文件夾
"application/config/database.php",
"application/config/mf_config.php",
"application/wxRefundNotifyLog.txt"
},
init = false, --這是一個優化選項,當init = false,只同步進程啟動以后發生改動事件的文件,原有的目錄即使有差異也不會同步。默認是true
delay = 0, --延時同步的秒數
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true, --壓縮傳輸默認為true。在帶寬與cpu負載之間權衡,本地目錄同步可以考慮把它設為false
verbose = true
},
ssh = {
port = 22
}
}
保存后執行以下命令重啟
/etc/init.d/lsyncd restart
運行lsyncd
lsyncd lsyncd_nginx.lua
查看是否運行
ps -ef |grep lsyncd
root 8018 1 0 13:49 ? 00:00:00 lsyncd lsyncd_nginx.lua
root 8070 7802 0 13:50 pts/2 00:00:00 grep --color=auto lsyncd
最后在主服務器的/home/ubuntu/test下創建一個文件會發現輔服務器上也會有這個文件
問題: 如果未能實現同步,可查看/var/log/lsyncd/lsyncd.log日志文件內容 如果內容中有:ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory 則你需要執行:
sudo apt install ssh-askpass
備注:同步需要在所有服務器都要安裝環境,主服務器是進行配置,編寫lua腳本進行同步,此外可以此可以配置多臺服務器進行文件同步,設置同步方式有多種,可以自行查詢詳細參數。
夢想加空間!平時喜歡研究各種技術,目前在從事后端開發工作,熱愛生活、熱愛工作。