介紹
爲了實現組件的高可用,比如gitlab或者禪道,一般會在不同機器分別安裝gitlab,它們公用一個外接的數據庫。但是gitlab在本地還會有一些數據生成,這些數據在各個gitlab之間也需要保持一致,可以採用rsync實現不同機器之間的文件同步。
安裝
以禪道雙節點爲例,所有安裝了禪道客戶端的機器安裝rsync,命令:
yum install -y rsync
主節點配置
切換到主禪道所在機器,修改rsync配置文件/etc/rsyncd.conf:
uid = nobody
gid = nobody
use chroot = no
max connections = 3
pid file = /var/run/rsyncd.pid
log file=/var/log/rsyncd.log
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsync.pass
[forzbox] # 自定義模塊名,可多個
path = /opt/zbox/app/zentaoep/www/data/upload/1 # 要同步的目錄
comment = BACKUP CLIENT IS zbox
ignore errors
read only = yes
list = no
# 以下兩項是socket連接認證
auth users = forzbox
secrets file = /etc/rsync.pass
這裏配置的同步方式是通過rsync進程來複制數據的方式,還有別的同步方式後續會說到。還有一些配置項,如主機權限,目錄篩選等可以自行百度。
主節點創建認證文件/etc/rsync.pass,填寫內容爲用戶名密碼,用戶名是上邊配置文件中自定義的,密碼是自己定的,注意格式,且這個認證文件的權限要爲600:
forzbox:pass123
從節點配置
從節點也創建認證文件/etc/rsync.pass,內容爲密碼即可,權限爲600:
pass123
啓動
主從節點啓動服務:
systemctl start rsyncd && systemctl enable rsyncd
如果是啓用了防火牆,還需要配置端口,默認是873。
從節點配置定時任務進行每5分鐘自動同步(這裏採用的同步方式是:從節點通過rsync進程拉取主節點的數據到本地),crontab -e
之後:
*/5 * * * * rsync -vzrtp --progress --delete --password-file=/etc/rsync.pass [email protected]::forzbox /opt/zbox/app/zentaoep/www/data/upload/1 >> /root/crontab.log 2>&1
上述命令參數說明:
v
:顯示詳細信息z
:傳輸過程中對數據進行壓縮r
:遞歸t
:保留修改時間屬性p
:保留文件權限屬性--progress
:顯示數據傳輸的進度信息--password-file=FILE
:指定密碼文件--delete
:刪除那些僅在目標路徑中存在的文件(源路徑中不存在)
3種同步方式
rsync的同步方式有3種。
本地複製
rsync [選項] SRC... [DEST]
選項爲參數,SRC表示原路徑,DEST表示目標路徑,下同。
通過shell遠程複製
-
下載數據
rsync [選項] [user@]HOST:SRC... [DEST]
不加
user@
表示用root用戶進行登陸遠程主機下載數據到本地的DEST路徑。 -
上傳數據
rsync [選項] SRC... [user@]HOST:DEST
這裏的SRC表示本地數據,DEST表示遠端主機目錄。
通過rsync進程遠程複製
-
下載數據
rsync [選項] [user@]HOST::SRC [DEST]
這裏雙冒號後的SRC表示遠端服務端的模塊名。
rsync [選項] rsync://[user@]HOST[:port]/SRC [DEST]
這裏的SRC表示實際的同步目錄名,這種方式可以指定端口。
-
上傳數據
rsync [選項] SRC [user@]HOST::DEST
上傳本地客戶端數據到遠端服務端的DEST模塊名指定的路徑。
rsync [選項] SRC rsync://[user@]HOST[:port]/DEST
這裏的DEST表示實際的同步目錄名,這種方式可以指定端口。
參考:
https://www.cnblogs.com/regit/p/8074221.html