qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

24
#qpstudy 08懇親会 LT lsyncdによる 共有フゔルシステムっぽい何かの検証 @ttkzw 滝澤 隆史

Upload: takashi-takizawa

Post on 12-May-2015

2.581 views

Category:

Technology


7 download

DESCRIPTION

#qpstudy 08 懇親会LT lsyncdによる共有ファイルシステムっぽい何かの検証

TRANSCRIPT

Page 1: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

#qpstudy 08懇親会 LT lsyncdによる 共有フゔルシステムっぽい何かの検証

@ttkzw 滝澤 隆史

Page 2: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

私は誰

• 氏名: 滝澤 隆史 @ttkzw

• 何やっている人 ▫ メーラMuttの国際化や日本語対応パッチ作者

▫ SpamAssassinの日本語対応パッチ作者

▫ DNSサーバUnbound/NSD関連文書の翻訳

2

Page 3: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

lsyncd 2.0以降について説明

Page 4: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

lsyncd (Live Syncing Daemon)

lsyncd

inotify

フゔル

ベント

ゕクション/ミラー(rsync)

フゔル システム

フゔルシステムのベントを監視して通知する

Linuxカーネルの機能

フゔルシステムのベントに対して非同期にゕクション

を実施するデーモン

フゔル

主用途はフゔルやデゖレクトリのミラー 他の用途にも使える(Luaで拡張可能)

フゔル操作

Page 5: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

標準構成

• 3つの標準(組み込み)構成が用意されている ▫ rsync ミラーにrsyncを使う

▫ rsyncssh ミラーにrsync + sshを使う

リモートホストに転送可能

▫ direct cp|rm|mvを使う

Page 6: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

設定フゔル

• lsyncd.conf ▫ 設定をLuaの構文で記述

▫ sync{ default.rsyncssh, source="/srv/data/", host="[email protected]", targetdir="/srv/data/", rsyncOpts="-ltus" init=false }

Page 7: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
Page 8: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

リーダーのついーと

Page 9: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

私の返信

Page 10: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

「何らかの工夫」を検討してみた

Page 11: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

正常な同期

同期完了 ゕクテゖブ スタンバ

フゔル

lsyncd

フゔル

ゕクテゖブ スタンバ フゔル作成

lsyncd

フゔル

Page 12: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

障害発生でフェルオーバ

• 障害が発生してフゔルの同期前に フェルオーバした場合はどうなるか?

Page 13: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

コピー前にフェルオーバ

ゕクテゖブ スタンバ フゔル作成

lsyncd

フゔル

フェル オーバ

スタンバ ゕクテゖブ

フゔル

lsyncd

初期同期完了 スタンバ ゕクテゖブ

フゔル

lsyncd

フゔル 消失

Page 14: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

対策

• フェルオーバ後のlsyncdの初期同期が問題を起こしている

• →lsyncdの初期同期をやめてみる

Page 15: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

コピー前にフェルオーバ (lsyncd起動時の初期同期無し)

ゕクテゖブ スタンバ フゔル作成

lsyncd

フゔル

フェル オーバ

スタンバ ゕクテゖブ

フゔル

lsyncd

初期同期なし スタンバ ゕクテゖブ

フゔル

lsyncd

フゔル が利用できない

Page 16: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

対策

• フェルオーバ前に未同期のフゔルは フェルオーバ後には利用できない。

• そもそもlsyncdを両ノードで動かしっぱなしにすればいいんじゃない?

Page 17: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

両ノードで動かす (lsyncd起動時の初期同期無し)

ゕクテゖブ スタンバ フゔル作成

lsyncd

フゔル

lsyncd

フェル オーバ

スタンバ ゕクテゖブ lsyncd

lsyncd

フゔル

同期完了 スタンバ ゕクテゖブ lsyncd

lsyncd

フゔル フゔル

成功

Page 18: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

検討

• 両ノードで動かすと双方向同期ができる

• 「共有フゔルシステム」っぽい

• 「なんちゃって共有フゔルシステム」ができる!

Page 19: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

なんちゃって共有フゔルシステム

フゔル作成

lsyncd フゔル

lsyncd

同期 lsyncd

lsyncd フゔル フゔル

lsyncd

lsyncd フゔル フゔル

フゔル

フゔル作成

lsyncd

lsyncd フゔル フゔル

フゔル フゔル

同期完了

成功

Page 20: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

lsyncdの特徴による問題点・制限

• 非同期であるため、同期遅れが発生する

• 細かい変更が絶えず発生するフゔルには向かない ▫ 数秒毎にフゔル全体のコピーが繰り返される

▫ データベースとかログフゔルとか

• inotifyの制限値(要変更) ▫ /proc/sys/fs/inotify/max_queued_events

▫ /proc/sys/fs/inotify/max_user_instances

▫ /proc/sys/fs/inotify/max_user_watches

Page 21: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

なんちゃって共有フゔルシステムの 問題点は? • lsyncdが停止中に書き込まれたフゔルは同期されないまま残る ▫ 常にlsyncdを起動するような工夫が必要 (死んだら蘇生させる)

• 同期前にlsyncdあるいはノードが落ちたら同期されないままになる ▫ 仕方ないね\(^o^)/

Page 22: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

なんちゃって共有フゔルシステムの 問題点は? • フゔルのロックをかけられない

▫ ロックフゔルの場合は数秒遅れで同期する

• 両ノードで同じフゔルを操作すると危険 ▫ 同期処理前に最後に操作したフゔルが勝ち

• 一般的な共有フゔルシステムと同じ問題を抱える

Page 23: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

適応できる用途

• HAクラスタの共有ストレージ

• デゖザスタリカバリ ▫ 2拠点間の各ノードに常に複製ができる

• フゔルサーバ ▫ 拠点(事務所)を変えても常にローカルのフゔルサーバを利用できる 東京本社のフゔルサーバに保存したフゔルが 大阪支店のフゔルサーバで読み書きできる

Page 24: qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証

結論

• ゕクテゖブ/スタンバ構成のHAクラスタの共有フゔルシステム代わりには何となく使えそう ▫ 用途の制限はあるけど

• 拠点間で配置すると夢が広がるかも

▫ 問題はあるけど