qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
DESCRIPTION
#qpstudy 08 懇親会LT lsyncdによる共有ファイルシステムっぽい何かの検証TRANSCRIPT
#qpstudy 08懇親会 LT lsyncdによる 共有フゔルシステムっぽい何かの検証
@ttkzw 滝澤 隆史
私は誰
• 氏名: 滝澤 隆史 @ttkzw
• 何やっている人 ▫ メーラMuttの国際化や日本語対応パッチ作者
▫ SpamAssassinの日本語対応パッチ作者
▫ DNSサーバUnbound/NSD関連文書の翻訳
2
lsyncd 2.0以降について説明
lsyncd (Live Syncing Daemon)
lsyncd
inotify
フゔル
ベント
ゕクション/ミラー(rsync)
フゔル システム
フゔルシステムのベントを監視して通知する
Linuxカーネルの機能
フゔルシステムのベントに対して非同期にゕクション
を実施するデーモン
フゔル
主用途はフゔルやデゖレクトリのミラー 他の用途にも使える(Luaで拡張可能)
フゔル操作
標準構成
• 3つの標準(組み込み)構成が用意されている ▫ rsync ミラーにrsyncを使う
▫ rsyncssh ミラーにrsync + sshを使う
リモートホストに転送可能
▫ direct cp|rm|mvを使う
設定フゔル
• lsyncd.conf ▫ 設定をLuaの構文で記述
▫ sync{ default.rsyncssh, source="/srv/data/", host="[email protected]", targetdir="/srv/data/", rsyncOpts="-ltus" init=false }
リーダーのついーと
私の返信
「何らかの工夫」を検討してみた
正常な同期
同期完了 ゕクテゖブ スタンバ
フゔル
lsyncd
フゔル
ゕクテゖブ スタンバ フゔル作成
lsyncd
フゔル
障害発生でフェルオーバ
• 障害が発生してフゔルの同期前に フェルオーバした場合はどうなるか?
コピー前にフェルオーバ
ゕクテゖブ スタンバ フゔル作成
lsyncd
フゔル
フェル オーバ
スタンバ ゕクテゖブ
フゔル
lsyncd
初期同期完了 スタンバ ゕクテゖブ
フゔル
lsyncd
フゔル 消失
対策
• フェルオーバ後のlsyncdの初期同期が問題を起こしている
• →lsyncdの初期同期をやめてみる
コピー前にフェルオーバ (lsyncd起動時の初期同期無し)
ゕクテゖブ スタンバ フゔル作成
lsyncd
フゔル
フェル オーバ
スタンバ ゕクテゖブ
フゔル
lsyncd
初期同期なし スタンバ ゕクテゖブ
フゔル
lsyncd
フゔル が利用できない
対策
• フェルオーバ前に未同期のフゔルは フェルオーバ後には利用できない。
• そもそもlsyncdを両ノードで動かしっぱなしにすればいいんじゃない?
両ノードで動かす (lsyncd起動時の初期同期無し)
ゕクテゖブ スタンバ フゔル作成
lsyncd
フゔル
lsyncd
フェル オーバ
スタンバ ゕクテゖブ lsyncd
lsyncd
フゔル
同期完了 スタンバ ゕクテゖブ lsyncd
lsyncd
フゔル フゔル
成功
検討
• 両ノードで動かすと双方向同期ができる
• 「共有フゔルシステム」っぽい
• 「なんちゃって共有フゔルシステム」ができる!
なんちゃって共有フゔルシステム
フゔル作成
lsyncd フゔル
lsyncd
同期 lsyncd
lsyncd フゔル フゔル
lsyncd
lsyncd フゔル フゔル
フゔル
フゔル作成
lsyncd
lsyncd フゔル フゔル
フゔル フゔル
同期完了
成功
lsyncdの特徴による問題点・制限
• 非同期であるため、同期遅れが発生する
• 細かい変更が絶えず発生するフゔルには向かない ▫ 数秒毎にフゔル全体のコピーが繰り返される
▫ データベースとかログフゔルとか
• inotifyの制限値(要変更) ▫ /proc/sys/fs/inotify/max_queued_events
▫ /proc/sys/fs/inotify/max_user_instances
▫ /proc/sys/fs/inotify/max_user_watches
なんちゃって共有フゔルシステムの 問題点は? • lsyncdが停止中に書き込まれたフゔルは同期されないまま残る ▫ 常にlsyncdを起動するような工夫が必要 (死んだら蘇生させる)
• 同期前にlsyncdあるいはノードが落ちたら同期されないままになる ▫ 仕方ないね\(^o^)/
なんちゃって共有フゔルシステムの 問題点は? • フゔルのロックをかけられない
▫ ロックフゔルの場合は数秒遅れで同期する
• 両ノードで同じフゔルを操作すると危険 ▫ 同期処理前に最後に操作したフゔルが勝ち
• 一般的な共有フゔルシステムと同じ問題を抱える
適応できる用途
• HAクラスタの共有ストレージ
• デゖザスタリカバリ ▫ 2拠点間の各ノードに常に複製ができる
• フゔルサーバ ▫ 拠点(事務所)を変えても常にローカルのフゔルサーバを利用できる 東京本社のフゔルサーバに保存したフゔルが 大阪支店のフゔルサーバで読み書きできる
結論
• ゕクテゖブ/スタンバ構成のHAクラスタの共有フゔルシステム代わりには何となく使えそう ▫ 用途の制限はあるけど
• 拠点間で配置すると夢が広がるかも
▫ 問題はあるけど