質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.55%

仮想環境上でlsyncd・rsyncdを利用した同期について

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 3,324

ishii-shintaro

score 11

[環境]
AWS
[OS]
ServerA:Cent7(Master)
ServerB:Cent7(Slave)

上記のA・B間でファイルの同期を取ろうと思っています。
ServerAの設定は以下のようにしています。


</etc/lsyncd.conf>
settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/tmp/lsyncd.stat",
statusIntervall = 1,
nodaemon        = false,
delay           = 2
}
sync{
default.rsync,
source="/tmp/test/",
target="user1@10.168.124.16:/tmp/test/",
rsyncOps = "-auz"
}


ServerBの設定は以下のようになっています。


</etc/rsyncd.conf>
uid = user1
gid = user1
read only = no
log file = /var/log/rsyncd.log
port = 873

[hoge]
path = /tmp/test/
hosts allow = localhost 10.168.123.20
read only = false


</etc/xinetd.d>
service rsync
{
disable = no
flags = IPv4
socket_type = stream
user = root
wait = no
server = /usr/bin/rsync
server_args = --daemon --config=/etc/rsyncd.conf
only_from = 10.168.123.20
log_on_failure += USERID

}

上記の設定でServerAではlsyncdをスタートし、ServerBではxinetdで動かし所、
ServerA側のログに以下のようなエラーが出力され、同期が行われませんでした。


[ログ]
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
Sat Jul 30 05:36:38 2016 Normal: Finished a list = 12


ちなみにですが、ServerAからrsyncコマンドを直に実行した場合、
ServerBにファイルの同期がとられることは確認しており、
ServerB側の873ポートは既にあけている状態となっています。

原因等分かる方がいらっしゃいましたら、
教えて頂けないでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • flied_onion

    2016/07/30 18:46

    ServerBの/var/log/secureになにかログは出ていますか? root以外で実行させようとしているようなので、鍵関係があやしいですかね。(コマンドを直に実行したユーザーはuser1ですか?) まずは検証にroot-rootで構築みるのもいいと思います。

    キャンセル

回答 2

checkベストアンサー

+1

rsync は ssh,rsh 経由で行なう方法と、rsyncデーモン(873番ポート)で行なう方法の 2通りあります。
lsyncd.conf の設定で、sync { default.rsyncssh, ... } ならば前者、sync { default.rsync, ... } ならば後者です。
ただし、後者でも、target の書き方によっては ssh 経由となるようです。

 rsyncデーモン(873番ポート)を使う場合

target の書式を target="user1@10.168.124.16::hoge" (コロン 2つ)
または、target="rsync://user1@10.168.124.16/hoge" とする必要があります。
「hoge」 は ServerB の rsyncd.conf で設定したもの。

また、rsyncOps は lsyncd-2.1.5 では古い書式と見なされエラーとなりました。
sync {} 設定は以下のようにするといいと思います。

sync {
    default.rsync,
    source="/tmp/test/",
    target="user1@10.168.124.16::hoge",
    rsync = {
        archive = true,
        update = true,
        compress = true,
    },
    delete = false,
}


Default: delete = true

この場合、経路は暗号化されません。

 ssh経由の場合

ご質問の target 設定の場合、ssh 経由となります。

ログのエラーメッセージを見ると、SSH の認証まわりのエラーのように見えますが、こちらの環境では再現することができませんでした。
コマンドでは rsync が成功しているとのことですので、コマンドを実行するユーザーと、lsyncd を動かしているユーザーが同じであればエラーは出ないと思うのですが ...

この場合、ServerB では sshd が稼働して、rsync コマンドが実行できればよくて、xinetd, rsyncd.conf は必要ありません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/05 10:43

    コメント遅くなり申し訳ありません。
    回答ありがとうございました。

    設定を再度確認したところ、SELinuxの設定が原因でした。
    エラーとなっていた際はSELinuxの設定が「Enforcing」となっていたのですが、
    「Permissive」にすることで、解決できました。

    ありがとうございました。

    キャンセル

+1

本件についての原因と解決方法は以下のような形となりました。

原因:SELinuxの設定が「Enforcing」になっていた。
解決策:設定内容を「Permissive」に変更。

上記の設定変更を行う事で、同期をとることが出来ました。
ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.55%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る