- ドキュメントが乏しい(または難解である)
- XMLを編集しなければならないのが煩わしい
- 既存の仕組み(init.d)でも別に問題がない
既存の仕組みではそのようなことをシステムレベルで実装することができず、従って独自のプロセス監視方法などを導入する必要があった。しかしSMFを使えばその仕組みを比較的簡単に実装することができる。SMFはOpenSolarisでも利用可能であり、SMFにサービスを対応させる価値は大いにあるだろう。
SMFを利用するのに必要なものは次の2つである。
- プロセス起動・停止のためのスクリプト
- マニフェストと呼ばれる設定ファイル(XML)
システムのデフォルトでは、/lib/svc/methodにスクリプトが配置されている。新たに自分でサービスを追加したい時には、この辺にあるスクリプトを参考にして作成するといいだろう。起動・停止をするだけのスクリプトであれば、どのようなアプリケーションであれ簡単に作成できるはずだ。自分で作成したスクリプトの置き場所は別にどこでも良い。
次に、マニフェストと呼ばれる設定ファイルを作成する。これもシステムのデフォルトのものを参考にして作成するといい。/var/svc/manifest配下にあるXMLファイル群がそうである。また、以下のページに各種既存アプリケーション向けのマニフェスト集があるので、これらを活用するといいだろう。
http://opensolaris.org/os/community/smf/manifests/
マニフェストを/var/svc/manifestの配下にコピーしよう。このディレクトリにはマニフェストがカテゴリごとに分けて格納されているので、適切なサブディレクトリにマニフェストをコピーすること。カテゴリはマニフェストの中でも記載されている。得にどのカテゴリにしなければいけないという制約はないので、分かりやすいカテゴリをつけるといいだろう。ファイルを置けば、次の手順によりサービスを有効化するだけである。(network/memcachedの例)
rootユーザになる
shell> su -
マニフェストをインポートする
shell# svccfg import /var/svc/manifest/network/memcached.xml
サービスを起動する
shell# svcadm enable memcached
ステータス確認
shell# svcs -av|grep memcached
欲張って難しいことをしなければ意外と簡単である。
以下、memcached用のサンプルである。各種パラメータは適宜調整して使用してもらいたい。よく落ちると評判(?)のmemcachedもこれで少しは手間いらずか?
起動・停止スクリプト
マニフェスト
0 件のコメント:
コメントを投稿