使用lsync+rsync實現linux服務器間的實時同步

使用lsyncd+rsync實現linux服務器間的實時同步

環境:
源服務器:192.168.241.11,centos7-1804
目標服務器:192.168.241.12,centos7-1611

一、安裝rsync和lsyncd
本文使用yum安裝,需要能連上互聯網
1、安裝epel

yum install epel

說明:因爲默認的centos和redhat源中沒有lsync的rpm資源,因此需要安裝epel源,之後才能通過yum找到lsync的安裝資源。

2、安裝rsync和lsyncd

yum install lsyncd

說明:lsyncd依賴rsync,因此,使用yum安裝lsyncd會自動安裝rsync。具體的同步任務由rsync完成,lsyncd的任務只是定時觸發rsync同步,所以,源服務器與目標服務器均需要安裝rsync,但只有一臺服務器需要安裝lsyncd,根據同步方向決定。如果是從源服務器發送文件到目標服務器,則lsyncd需要安裝在源服務器,目標服務器作爲rsync服務端,需要配置rsync服務。反之,需要在目標服務器安裝lsyncd,在源服務器配置rsync。本文將目標服務器作爲rsync服務端。

二、配置rsync服務器(192.168.241.12)
1、編輯/etc/rsyncd.conf文件,內容如下:

use chroot = no

[test]
path = /tmp/tmp12
read only = false
uid = root
gid = root
auth users = rsyncuser
secrets file = /tmp/rsync.passwd

說明:“use chroot"爲全局變量,如果爲true,那麼rsync在傳輸文件以前首先chroot到path參數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要root權限,並且不能備份指向外部的符號連接所指向的目錄文件。chroot默認值爲true。“path”指定該模塊的供備份的目錄樹路徑,該參數是必須指定的。“uid”和“gid”指定當該模塊傳輸文件時守護進程應該具有的用戶和組,默認值是"nobody”。“read only”設定是否允許客戶上傳文件到rsync服務器,默認爲true。“auth users”指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這裏的用戶和系統用戶沒有任何關係。如果"auth users"被設置,那麼客戶端發出對該模塊的連接請求以後會被rsync請求challenged進行驗證身份,這裏使用的challenge/response認證協議。用戶的名和密碼以明文方式存放在"secrets file"選項指定的文件中。默認情況下無需密碼就可以連接模塊(也就是匿名方式)。更詳細的rsync配置說明,請自行百度。

2、創建並編輯上一步中“secrets file”選項指定的文件/tmp/rsync.passwd,文件內容如下:

rsyncuser:123456

說明:一個用戶一行,冒號前面是用戶名,冒號後面是密碼。編輯完後,需要將此文件權限修改爲“600”,否則會出錯,權限修改命令如下:

chmod 600 /tmp/rsync.passwd

3、將rsync設置爲開機啓動,並啓動rsync服務。
設置爲開機啓動:

systemctl enable rsyncd.service

啓動rsync服務:

systemctl start rsyncd.service

啓動後,查看rsync服務的啓動狀態,可使用如下命令:

systemctl status rsyncd.service

三、配置lsyncd服務
1、編輯/etc/lsyncd.conf文件,內容如下:

sync {
  default.rsync,
  source = "/tmp",
  target = "[email protected]::test",
  rsync = {
    compress = false,
    archive = true,
    verbose = false,
    timeout = 3600,
    password_file = "/tmp/rsync.pass"
  }
}

說明:“default.rsync”是同步模式,有三種模式,本文使用rsync同步。“source”是同步的源目錄,使用絕對路徑。“target”是同步的目標路徑,根據同步模式的不同,路徑的格式也不同,本例中爲rsync的路徑,用戶名爲rsync服務器配置文件中配置的用戶,不是操作系統用戶,路徑中的“test”爲rsync服務器配置文件中配置的模塊名。“rsync”模塊爲rsync的配置,其中“password_file”爲rsync的密碼文件。其他更詳細配置說明,請自行百度。

2、創建並編輯rsync的密碼文件/tmp/rsync.pass,內容如下:

123456

說明:這個文件裏只有密碼,創建完成後,需要將文件權限修改爲“600”,否則會報錯。修改權限命令如下:

chmod 600 /tmp/rsync.pass

3、將lsyncd設置爲開機啓動,並啓動lsyncd服務。
設置爲開機啓動:

systemctl enable lsyncd.service

啓動lsyncd服務:

systemctl start lsyncd.service

啓動後,查看lsyncd服務的啓動狀態,可使用如下命令:

systemctl status lsyncd.service

四、SELINUX權限問題
按照上述步驟配置完成後,可能會發現lsyncd服務無法啓動,使用“systemctl status lsyncd.service”命令發現報錯如下:
在這裏插入圖片描述
這有可能是因爲rsync服務器的selinux權限導致的,此時如果使用rsync命令手動同步文件,會發現報錯。lsyncd通過rsync同步文件,因爲rsync命令都報錯,所以lsyncd服務也無法使用。
如果確實是rsync服務器的selinux權限導致的問題,可以通過以下方法解決:
1、臨時方法,重啓rsync服務器後失效。在rsync服務器上執行:

setenforce 0

2、永久方法,修改selinux配置文件/etc/selinux/config,將其中的“SELINUX”的值設置爲disabled,重啓服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章