仮想環境上でlsyncd・rsyncdを利用した同期について
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 4,119
[環境]
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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
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,
}
この場合、経路は暗号化されません。
ssh経由の場合
ご質問の target 設定の場合、ssh 経由となります。
ログのエラーメッセージを見ると、SSH の認証まわりのエラーのように見えますが、こちらの環境では再現することができませんでした。
コマンドでは rsync が成功しているとのことですので、コマンドを実行するユーザーと、lsyncd を動かしているユーザーが同じであればエラーは出ないと思うのですが ...
この場合、ServerB では sshd が稼働して、rsync コマンドが実行できればよくて、xinetd, rsyncd.conf は必要ありません。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
本件についての原因と解決方法は以下のような形となりました。
原因:SELinuxの設定が「Enforcing」になっていた。
解決策:設定内容を「Permissive」に変更。
上記の設定変更を行う事で、同期をとることが出来ました。
ありがとうございました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
flied_onion
2016/07/30 18:46
ServerBの/var/log/secureになにかログは出ていますか? root以外で実行させようとしているようなので、鍵関係があやしいですかね。(コマンドを直に実行したユーザーはuser1ですか?) まずは検証にroot-rootで構築みるのもいいと思います。