LNMP+HAProxy+Keepalived負載均衡(五)- 通過rsyncd實現文件的相互同步

上接前文,前文提到web服務器附件不同步的問題,這裏補上文件同步的配置。

  • 安裝同步軟件

    # 安裝同步服務所需的軟件
    yum -y install rsync
  • 配置密碼本

    mkdir -p /etc/rsyncfg/
    # 注意:下面的兩個SyncPwd必須一致
    echo 'SyncName:SyncPwd' > /etc/rsyncfg/server.pwd
    echo 'SyncPwd' > /etc/rsyncfg/client.pwd
    # 密碼文件配置權限
    chmod 600 /etc/rsyncfg/server.pwd
    chmod 600 /etc/rsyncfg/client.pwd
  • 配置防火牆端口

    # 開啓防火牆端口
    firewall-cmd --zone=public --add-port=873/tcp --permanent
    firewall-cmd --reload
  • 配置同步軟件

    # 編輯配置文件
    vim /etc/rsyncd.conf
    
    # 配置文件內容
    uid = root
    gid = root
    use chroot = yes
    max connections = 4
    exclude = lost+found/
    transfer logging = yes
    timeout = 900
    ignore nonreadable = yes
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
    
    [uploads]
    path = /home/wwwroot/PublishPath/uploads
    comment = Host:192.168.6.100 uploads files
    ignore errors
    read only = yes
    write only = no
    list = no
    auth users = syncer
    secrets file = /etc/rsyncfg/server.pwd
    hosts allow = 192.168.6.110
  • 重啓服務

    service rsyncd restart && service rsyncd status
  • 執行同步操作

    echo '' > /etc/rsyncfg/sync.log
    echo 'rsync -auv --password-file=/etc/rsyncfg/client.pwd [email protected]::uploads /home/wwwroot/PublishPath/uploads/' > /etc/rsyncfg/sync.sh
    chmod +x /etc/rsyncfg/sync.sh
    cp /etc/rsyncfg/sync.sh /usr/sbin/
  • 配置計劃任務

    crontab -e
    # 添加任務
    # * * * * * /etc/rsyncfg/sync.sh # 取消前面的註釋即可
    
    # 重啓定時任務服務
    service crond restart && service crond status
  • 問題彙總

    • ERROR: auth failed on module XXX

      @ERROR: auth failed on module XXX
      rsync error: error starting client-server protocol (code 5) at main.c(xxx) [Receiver=x.x.x]
      
      1、密碼輸入錯誤:
      請再次確認你登錄用戶的密碼無誤
      2、secrets file格式錯誤:
      secrets file的文件格式是  upload:123456
      表示upload用戶的rsync密碼是123456
      3、配置文件寫錯:
      最坑爹的一個,看看自己模塊配置下面的auth users、secrets file有沒寫錯
      4、secrets file權限問題
      服務端的secrets file權限必須是600,
      可以使用chmod 600 /home/user/test/rsync/etc/test.pass
      5、secrets file文件擁有者與rsync運行者
      服務端rsync服務是以什麼用戶運行,則必須保證secrets file文件擁有者必須是同一個
      假設root運行rsync --daemon,則secrets file的owner也必須是root
      6、如果是以--password-file=file的方式附帶密碼
      確保客戶端密碼文件格式無誤,與服務端的密碼文件不同,
      客戶端的不用加上用戶名,即直接是  123456
    • rsync: failed to connect to X.X.X.X Connection timed out (110)

      rsync: failed to connect to 192.168.6.100 (192.168.6.100): Connection timed out (110)
      rsync error: error in socket IO (code 10) at clientserver.c(125) [Receiver=3.1.2]
      
      端口不通,開啓防火牆的873端口:
      firewall-cmd --zone=public --add-port=873/tcp --permanent
      firewall-cmd --reload
    • ERROR: password file must not be other-accessible

      ERROR: password file must not be other-accessible
      rsync error: syntax or usage error (code 1) at authenticate.c(196) [Receiver=3.1.2]
      
      密碼本權限不對:
      chmod 600 /etc/rsyncfg/server.pwd
      chmod 600 /etc/rsyncfg/client.pwd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章