2013年2月14日木曜日

rsyncによるサーバー間同期設定

rsyncを利用して、2サーバー間のファイル同期を定期的に行う設定を行っていきます。

環境は以下の前提とします。
  • 同期元サーバー:192.168.0.1
  • 同期先サーバー:192.168.0.2
  • 同期ディレクトリ:/tmp/data/
  • 同期元サーバーのログインユーザー名:admin
  • 192.168.0.2→192.168.0.1へのrsaは作成済み
     rsaファイル名は「/home/admin/.ssh/id_rsa_192_168_0_1」
     (rsa作成はこちらを参照)
また一般的な要件として以下を想定します。
    • 出来るだけ短い間隔で同期をしたい
    • 多重にrsyncを起動する事は避けたい

    ①rsyncのインストール
    インストール確認
    $ yum list installed | grep rsync
    ↓
    インストールされている場合は下記のような内容が表示されます。
    rsync.x86_64                      3.0.6-9.el6                          @base
    
    インストール
    $ yum -y install rsync 
    
    ※カゴヤのvpsではもともとインストールがされていました。

    ②cron設定
    サーバー数が増えてもいいように、cronは同期先サーバー側に設定します。
    */3 * * * * /sbin/pidof rsync > /dev/null || nice -n 19 rsync -aqz --delete -e "ssh -i /home/admin/.ssh/id_rsa_192_168_0_1" admin@192.168.0.1:/tmp/data/ /tmp/data/
    • 起動タイミングは3秒に一回で設定します。
    • rsync多重起動防止のために、最初に pidof rsync で現在のrsync起動状況を確認します。(システムコマンドのパスはcron時には引き継がれないので、フルパス「/sbin/pidof rsync」で記載)
    • rsyncの起動が確認されなかった場合のみ「||」を通ってrsyncコマンドが起動されます。
    • rsyncコマンド オプション
       [-a] アーカイブモード ディレクトリ構成を良いカンジで維持してくれるそうです。
       [-q] 同期情報を非表示にしてくれます。
       [-z] 転送時圧縮して転送します。
       [--delete] 同期元にないファイルが同期先に存在した場合、そのファイルを削除します。
       [-e] rsyncで使用するコマンドを指定します。ここではrsaを利用するためにsshを指定し使用するrsaを指定します。
    設定は以上です。


    0 件のコメント:

    コメントを投稿