Makuosan
出典: KLablabWiki
目次 |
概要
- MAKUOSAN
- (Multicasts All-Kinds of Updating Operation for Servers on Administered Network)
makuosan(まくおさん:通称「まくお」)は、複数のサーバへ同時にファイルを転送するソフトウエアです。
以下のような特徴があります。
- サーバが増えても転送時間が変わらない
- サーバが増えても、転送にかかる時間はほとんどかわりません。10台のサーバに転送しても、20台のサーバに転送しても、ほとんど同じ時間で完了します。ただし、転送時間は一番応答が遅いサーバの性能に引っ張られるので、同程度のスペックのサーバで構築された環境で利用することが望ましいです。
- すべてのサーバで同時にファイルが更新される
- マルチキャストを使って全サーバへ同時にファイルを転送するため、「このサーバのファイルは更新されてるけど、あのサーバのファイルはまだ更新されていない」といったことがありません。
- 面倒な設定は不要
- 「まくお」のメインプログラムは、全サーバにデーモンとして常駐させておきます。それぞれのサーバに常駐している「まくお」は、互いの存在を確認しあうことで、自動的にネットワーク上のサーバ構成を把握します。したがって、サーバを増設もしくは撤去する際においても、既設サーバの設定を変更する必要はありません。
更新履歴
- makuosan-1.2.1を公開しました (2009-6-16)
- makuosan-1.2.0を公開しました (2009-5-25)
- makuosan-1.1.3を公開しました (2009-1-14)
- makuosan-1.1.2を公開しました (2008-12-24)
- makuosan-1.1.1を公開しました (2008-12-24)
- makuosan-1.0.1を公開しました (2008-11-12)
- makuosan-1.0.0を公開しました (2008-11-6)
ダウンロード
- ダウンロードページ
- makuosan-1.2.1.tar.gz (2009/6/16更新)
インストール
$ tar zxvf makuosan-1.2.1.tar.gz $ cd makuosan-1.2.1 $ ./configure $ make $ su # make install
インストールされるファイルは以下の二つです。
- /usr/local/sbin/makuosan
- 「まくお」の本体です。サーバに常駐させます。
- /usr/local/bin/msync
- 「まくお」のコマンドラインツールです。ファイルを転送したいときに使います。
使い方
まくおでファイルを転送するには、転送元のサーバと転送先のサーバでmakuosanを起動しておく必要があります。
- 起動と停止
makuosanを起動する際は、-bオプションでファイル転送の起点となる「ベースディレクトリ」を指定します。
host1:~$ makuosan -b /home/hoge/public_html/ host2:~$ makuosan -b /home/hoge/public_html/ host3:~$ makuosan -b /home/hoge/public_html/
makuosanのログは、ファシリティLOG_DAEMONでsyslogへ出力されます。
makuosanを停止するには、killコマンドなどでSIGTERMを送ります。
host1:~$ pkill makuosan
ちょっとした動作確認であれば、-n オプション(don't fork)を使うと便利です。
~$ makuosan -n -b /home/hoge/public_html/ makuosan version 1.2.1 loglevel : 0 base dir : /home/hoge/public_html/ multicast : 224.0.0.108 port : 5000 uid : 1000 gid : 1000 parallel : 3 don't recv: No don't send: No don't fork: Yes encrypt : No console : Yes passwoed : No ownermatch: No listen : 127.0.0.1
- ファイル転送
ファイルの転送には msync コマンドを使います。host1で以下のコマンドを実行すると、 host1:/home/hoge/public_html/以下のファイルがhost2とhost3に転送されます。
host1:~$ msync -r
以下のようにファイルやディレクトリを指定して転送することもできます。
host1:~$ msync -r images
この例の場合、host1:/home/hoge/public_html/images/以下のファイルが転送されます。
まくおでは、転送するファイルやディレクトリは ベースディレクトリからの相対パスで指定します。
カレントディレクトリからの相対パスではありませんのでくれぐれもご注意下さい。
- ステータス確認
msyncコマンドでは、以下のオプションでmakuosanの状態を確認することができます。
- --membersオプション
- 転送先となるサーバの一覧を表示します
- --statusオプション
- ベースディレクトリやバージョン情報などを表示します
host1:~$ msync --members w102 192.168.1.2 (Ver1.2.1) w103 192.168.1.3 (Ver1.2.1) w107 192.168.1.7 (Ver1.2.1) w108 192.168.1.8 (Ver1.2.1) w109 192.168.1.9 (Ver1.2.1) Total: 5 members host1:~$ msync --status process: 24564 version: 1.2.1 basedir: /home/hoge/public_html/ mfalloc: 8 command: 0 send op: 0 recv op: 0
- makuosanとmsyncの関係
ファイル転送などの他のサーバと通信する処理はmakuosanがすべて担っています。
- msyncはmakuosanに対して転送依頼を発行するだけです
- msyncはmakuosanに対してソケット通信をし、転送依頼をしたりステータスを確認したりできます
- makuosanはデフォルトで tcp:127.0.0.1:5000 で接続を待っています
- msyncはデフォルトで tcp:127.0.0.1:5000 へ接続しようとします
- makuosanの受け口指定
makuosanの受け口は、コマンドラインオプションで変更できます。
-p <ポート番号> ポート番号を指定する(default: 5000) -l <IPアドレス> 待ち受けアドレスを指定する(default: 127.0.0.1) -U <PATH> UNIXドメインソケットを指定する ※ -Uオプションを指定した場合、TCP接続はできなくなります
- msyncの接続先指定
mysncは -c オプションで接続先を指定します。
host1:~$ makuosan -b /home/hoge/public_html/ -U /tmp/makuosan.sock host1:~$ msync -c unix:/tmp/makuosan.sock --status version : 1.2.1 basedir : /home/hoge/public_html/ send file: 0 recv file: 0
環境変数MSYNC_TARGETで接続先を指定することもできます。
host1:~$ makuosan -b /home/hoge/public_html/ -U /tmp/makuosan.sock host1:~$ MSYNC_TARGET=unix:/tmp/makuosan.sock host1:~$ msync --status version : 1.2.1 basedir : /home/hoge/public_html/ send file: 0 recv file: 0
今後の課題
-
転送先のファイルを消せない(rsync --delete相当の機能がない) -
SysVinit向けの、起動/停止スクリプトを作っていない - マニュアルが不十分(><)
- 輻輳制御って必要かなあ(^^;
- ファイルの転送効率をもっと上げられるはず
これらは、今後のバージョンアップで随時対応していく予定です。
作者
- YASUI Masanobu
連絡先
- info-makuosan <at> klab.jp