1. 程式人生 > >lsync 負載實現程式碼主從同步

lsync 負載實現程式碼主從同步

參考檔案: https://www.zyku.net/centos/1713.html

檢查錯誤命令: lsyncd -pidfile /tmp/lsyncd.pid  /etc/lsyncd.conf

注意事項,配置不支援#註釋,配置不支援#註釋,配置不支援#註釋 重要的事情說三遍浪費我半天時間

 

使用多臺Linux伺服器通過Nginx做負載均衡,根據配置的轉發規則,不同的請求會被轉發到其不同的伺服器上進行處理,那麼這個時候就存在一個問題,多臺伺服器上的資料如何能保持一致,比如:使用者在A伺服器上傳了一張圖片,但是B伺服器上沒有,如果其他使用者的請求被分配到了B伺服器上,那麼請求就會變成404,為了避免這類問題,就需要每臺伺服器之間資料保持實時雙向同步。

本文主要介紹使用Lsyncd工具在兩臺伺服器上做實時雙向同步。

注意:Lsyncd存在資料被替換風險,操作前請做好資料備份!

Lsyncd 是一個簡單高效的檔案同步工具,通過lua語言封裝了 inotify 和 rsync 工具,採用了 Linux 核心(2.6.13 及以後)裡的 inotify 觸發機制,然後通過rsync去差異同步,達到實時的效果。

首先在兩臺伺服器上分別安裝 Lsyncd:

安裝lsyncd依賴包:

yum  install  lua lua-devel pkgconfig gcc asciidoc

安裝lsyncd rpm資源,並安裝lsyncd:

rpm -iUvh http: //mirror .centos.org /centos/7/extras/x86_64/Packages/epel-release-7-9 .noarch.rpm yum  install  lsyncd

複製lsyncd配置檔案:

cp
  /usr/share/doc/lsyncd-2 .2.2 /examples/lrsync .lua  /etc/lsyncd .conf

CentOS 7搭建lsyncd實現兩臺伺服器檔案實時雙向同步可用於負載均衡

檢視lsyncd版本:

CentOS 7搭建lsyncd實現兩臺伺服器檔案實時雙向同步可用於負載均衡

到這一步lsyncd已經安裝好了。

下面進行兩臺伺服器之間做免密登入設定,互相可以免密登入:

分別在兩臺伺服器執行下面命令,生成key(以下操作兩臺伺服器都要同時進行):

ssh -keygen            #預設全部回車

然後執行下面命令:

ssh -copy- id  ip        #這裡的ip地址為想要連線的那臺伺服器ip地址,並非本機ip

命令執行後輸入“yes”,然後輸入密碼,即可連線到第二臺伺服器,如下圖所示:

CentOS 7搭建lsyncd實現兩臺伺服器檔案實時雙向同步可用於負載均衡

然後執行下面命令測試一下從這臺伺服器登入到另外一臺伺服器,不輸入密碼是否能成功:

ssh  ip

到這裡我們就完成了兩臺伺服器之間互相無密碼登入。

配置lsyncd:

在A伺服器根目錄建立建立一個目錄“download”,B伺服器建立一個目錄“public”,進行演示這兩個目錄互相實時同步。

編輯lsyncd配置檔案:

vim  /etc/lsyncd .conf

在A伺服器配置檔案中新增如下配置資訊(B伺服器同樣需要新增,修改下源目錄和遠端目錄即可):

---- -- User configuration  file  for  lsyncd. -- -- Simple example  for  default  rsync . -- settings {      logfile      = "/var/log/lsyncd.log" ,      statusFile   = "/tmp/lsyncd.stat" ,      inotifyMode  =  "CloseWrite or Modify" ,      maxProcesses = 5,      maxDelays = 1,      -- nodaemon = true , }   sync  {      default. rsync ,      source  "/download" ,                             target =  "[email protected]:/public" ,             -- excludeFrom =  "/etc/rsyncd.d/rsync_exclude.lst" , rsync  = {      binary =  "/usr/bin/rsync" ,      archive =  true ,      compress =  true ,      verbose =  true ,      }   }

啟動lsyncd服務,並設定開機啟動:

systemctl start lsyncd

啟動完成後檢視lsyncd狀態,確保lsyncd啟動成功:

systemctl status lsyncd

設定開機啟動:

systemctl  enable  lsyncd

啟動成功後,我們可以測試一下看看效果,如下圖所示:

CentOS 7搭建lsyncd實現兩臺伺服器檔案實時雙向同步可用於負載均衡