solaris ディープダイブセミナー #4: a-2-1 サービス実行を超えた...
Post on 29-Nov-2014
1.101 Views
Preview:
DESCRIPTION
TRANSCRIPT
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 3
サービス実行を超えた 新たなサービス管理アーキテクチャ Service Management Facility Part I
システム事業統括 ソリューション統括本部
野崎 宏明
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 4
スピーカー自己紹介
学生時代
– JDK 1.1でPrologの推論機構を実装し検索エンジンの真似ごと
1998年4月(日本)サン・マイクロシステムズ新卒入社
– ふと気づけば社会人15年目
ほぼずっとSE (Sはシステム?セールス?)
– 主にSolaris、開発環境、Sun Rayシンクライアント
– 今は主に通信系のお客様担当
– Oracle では SC (Sales Consultant) と呼ばれます
1年だけサポートエンジニア
– Java VMの解析
Solarisエバンジェリスト(宣教師?!)
– 最近は特にZFSの宣伝係としての出番増
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 5
Program Agenda
Solaris における予測的自己修復機能
Service Management Facility
– Solaris 10 での実装
(Solaris 11 での実装はSolaris 10 での実装をベースにしています)
まとめと参考情報
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 6
予測的自己修復とは
システムの可用性を大幅に向上させる機能
– 問題検出
状態監視と情報収集体系の強化・標準化
– 問題点分析
診断エンジンによる分析・診断
– 自動対応
障害部切り離し、プロセス再起動等
システムの継続運用
Fault Management Architecture (FMA)
– 主にハードウェア
Service Management Facility (SMF)
– 主にソフトウェア
Solaris 11 では
SMFとFMAの
連携・網羅性が向上
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 7
Service Management Facility ~Solaris 10 での実装内容~ (Solaris 11 での実装はSolaris 10 での実装をベースにしています)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 8
Solaris 9までのサービス管理(1)
「サービス」の明確な定義無し
– 1つまたは複数のdaemonプロセス..?
システム起動時、停止時
– initがランレベルに応じて/sbin/rc<r>を起動
<r>はランレベル(S, 1, 2, 3, 5, 6)
– rc<r>は/etc/rc<r>.d以下のスクリプト群を呼ぶ
S??<name>はstartを引数として
K??<name>はstopを引数として
– ??は数字で値の小さい順にrc<r>が実行
»起動/終了順序はただ1個の列
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 9
Solaris 9までのサービス管理(2)
あるdaemonが落ちたとき
– daemon再起動だけでよいと判断できたら
そのdaemonの起動手順に従って起動
– /etc/init.d以下のスクリプトがよく使われる
» /etc/rc<r>.d以下のコピーかsymlinkが多い
– 他の複数daemon等への依存が判断できたら
各daemonを依存関係に従い1個1個起動・停止
– S??やK??の順序を参考に..?
– どのdaemon等まで依存するかわからない場合
システムの再起動??
あるdaemonを落としたいときも
– 依存関係で同様の問題
専門知識無しでは
かなり難しそう
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 10
SMF開発目的
主にソフトウェアの可用性向上
– SMF前
サービスは落ちたら落ちっぱなし
サービス間依存関係が曖昧もしくは不明
– 判断や対処の妨げになる
– (rcでは1シーケンスの起動順のみ記述)
監視モジュールを作り込むか、クラスタリングによる対処が必要
– SMFにて
落ちたサービスは自動で復旧
– 管理者の介在不要
サービス単位での起動・停止が可能に
監視モジュール不要、クラスタリングの必然性は少なくなる
真のセルフヒーリングの実現
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 11
SMFとは
サービスをオブジェクトとして監視・管理
– /etc/init.d/*, /etc/rc*や/etc/inet/inetd.conf などの後継
– 従来のrcスクリプトも使用可能
ただしSMFの利便性が享受できない
サービス障害の検知、自動リスタート
– 管理上、ソフトウェアのバグ、訂正できないハードウェアエラー
サービス構成情報(依存関係など)のチェック機能
ブート時の詳細表示オプションによるサービス起動確認
サービス並列起動による boot 時間の短縮
root 以外のユーザへの安全な権限委譲
– サービスベースのリソース管理が可能
サービスの起動、停止、状態表示などの統一的な管理機能を提供。
ハードウェア・ソフトウェア障害時に、自動的にサービスを再起動。
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 12
SMFの構造
Solaris カーネル
init(1M)
svc.startd(1M)
監視エージェント・ コマンド
管理エージェント・ コマンド
サービス群
プロセス 起動
リポジトリ クライアント
inetd 配下の サービス群
inetd(1M) svc.configd(1M)
libscf(3LIB) レポジトリAPI Delegated restarter
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 13
SMFサービスを構成するパーツ
例: Solaris 10 のApache2
– FMRI (Fault-Management Resource Identifier)
svc:/network/http:apache2
– Manifest
/var/svc/manifest/network/http-apache2.xml
– Daemon
/usr/apache2/bin/httpd
– Exec Method
/lib/svc/method/http-apache2
– Log File
/var/svc/log/network-http:apache2.log
注: Solaris 10 では Apache 1.3 を rc スクリプト、Apache 2.0 を SMF で提供。
Solaris 11 では Apache 2.2 を SMF で提供。
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 14
サービス構成パーツの置き場
Profile
– システム全般のサービス設定
– /var/svc/profile
Manifest
– 個々のサービスの詳細定義
– /var/svc/manifest
Exec Method
– サービス起動・停止用実行ファイル(スクリプト)
– /lib/svc/method
Log File
– /var/svc/log
Solaris 10 の場合
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 15
サービスカテゴリ
application:アプリケーション
milestones: サービス集合
platform: プラットフォーム固有
system: システムサービス
– system/filesystem/*.xml
ポイント: 「ファイルシステムがマウントされ使用可能」というサービス
device: デバイス固有
network: ネットワーク・インターネット
– network-physical.xml
ポイント: 「NICが使用可能」というサービス
site: サイト固有
Solaris 10 の場合
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 16
milestoneとランレベル
single-user.xml
– ランレベルS (シングルユーザーモード)
multi-user.xml
– ランレベル2 (マルチユーザーモード)
multi-user-server.xml
– ランレベル3 (NFSを共有したマルチユーザーモード)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 17
FMRI
サービスを表す名称
ホスト内で一意であれば指定時に省略可能
– 省略例 (重複が無ければコマンド引数等以下どれでもよい)
svc://localhost/network/http:apache2
svc:/network/http:apache2
network/http:apache2
http:apache2
apache2
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 18
SMFコマンド
svcs
– サービスの状態を報告
svcadm
– サービスインスタンスの操作
svccfg
– サービス構成の操作
svcprop
– サービス設定プロパティ値の取得
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 19
svcsコマンド
svcs :サービス状態の表示
svcs -a :全てのサービス状態の表示
svcs -l <FMRI>:サービス詳細情報の表示
svcs -d <FMRI>:依存するサービスの表示
svcs -D <FMRI>: 依存されるサービスの表示
svcs -x :不具合のあるサービスの情報表示
各 -v : 詳細表示
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 20
デモ1
svcsコマンドによるサービス状態表示
– 状態表示内容の確認
– -a の有無による違い
– サービスの詳細表示
– 依存しているサービスの表示
– 依存されているサービスの表示
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 21
SMF - サービスの一覧表示(1) Solaris 10 での例
root@host1# svcs -a
STATE STIME FMRI
legacy_run 4月_01 lrc:/etc/rc2_d/S10lu
legacy_run 4月_01 lrc:/etc/rc2_d/S20sysetup
...
disabled 4月_01 svc:/system/metainit:default
disabled 4月_01 svc:/platform/sun4u/mpxio-upgrade:default
...
online 4月_01 svc:/system/svc/restarter:default
online 4月_01 svc:/network/pfil:default
...
offline 4月_01 svc:/application/print/ipp-listener:default
offline 4月_01 svc:/application/print/rfc1179:default
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 22
SMF - サービスの一覧表示(2)
状態表示
– legacy_run
旧来のrcスクリプトによるサービスでSMF管理外
– online
サービスが有効で動作中
– offline
サービスは有効だが停止している
– degraded
サービスが有効で動作中だが一部機能が制限
– disable
サービスが管理者によって無効とされている
– maintenance
サービスは有効だが問題があり動作していない
– uninitialized
サービスの構成が読み込まれる前
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 23
SMF - サービスの詳細情報表示 Solaris 10 での例
root@host1# svcs -l apache2
fmri svc:/network/http:apache2
name Apache 2 HTTP server
有効 true
状態 online
next_state none
state_time 2007年08月28日 (火) 20時21分25秒
logfile /var/svc/log/network-http:apache2.log
リスタータ svc:/system/svc/restarter:default contract_id 2865
dependency require_all/error svc:/network/loopback:default (online)
dependency optional_all/error svc:/network/physical:default (online)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 24
SMF -サービスの依存関係
依存関係
– require_all が全てonline/degradedのとき
– require_any のどれかがonline/degraded のとき
– optional_all がonline/degradedか、管理待ちのとき (つまりオプション)
– exclude_all の全てがdisabled/maintenance のとき
依存するサービスが停止・更新したら
– restart_on='none' → 停止しない
– restart_on='error' → 依存するサービスがエラー停止なら停止
– restart_on='restart' → 'error' +エラー以外の停止時も停止
– restart_on='refresh' → 'restart' +更新時も停止
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 25
SMF - サービスの依存関係表示
依存しているサービスの表示
依存されているサービスの表示
Solaris 10 での例
root@host1# svcs -d apache2
STATE STIME FMRI
online 18:45:18 svc:/network/loopback:default
online 18:45:21 svc:/network/physical:default
root@host1# svcs -D apache2
STATE STIME FMRI
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 26
svcadmコマンド
svcadm enable <FMRI>
– サービスの有効化と起動
svcadm disable <FMRI>
– サービスの無効化と停止
– リブート後も保持される
svcadm clear <FMRI>
– maintenance状態からの復帰
svcadm restart <FMRI>
– サービスの再起動
svcadm refresh <FMRI>
– サービス構成の再読込
各 -t : 一時的な変更
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 27
デモ2
svcadmコマンドによるサービスの起動と停止
– サービスの状態確認
– 別ウィンドウでログを表示
– サービスの有効化と起動
– サービスの再起動
– サービスの無効化と停止
– 自動再起動
– 起動しない場合のトラブル対応
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 28
SMF - サービスの起動・停止(1)
サービス状態の確認
– サービスは停止している
サービスを有効化し起動
Solaris 10 での例
root@host1# svcs -a | grep apache
legacy_run 4月_01 lrc:/etc/rc3_d/S50apache
disabled 20:04:30 svc:/network/http:apache2
root@host1# svcs -v apache2
STATE NSTATE STIME CTID FMRI
disabled - 20:04:30 - svc:/network/http:apache2
root@host1# svcadm enable apache2
root@host1# svcs -v apache2
STATE NSTATE STIME CTID FMRI
online - 20:10:51 2861 svc:/network/http:apache2
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 29
SMF - サービスの起動・停止(2)
ログにより起動を確認
プロセス情報確認
Solaris 10 での例
root@host1# tail -f /var/svc/log/network-http:apache2.log
[ Apr 25 20:10:50 Enabled. ]
[ Apr 25 20:10:50 Executing start method
("/lib/svc/method/http-apache2 start") ]
[ Apr 25 20:10:51 Method "start" exited with status 0 ]
root@host1# svcs -p apache2 STATE STIME FMRI
online 20:10:51 svc:/network/http:apache2
20:10:51 7425 httpd 20:10:52 7426 httpd
20:10:52 7427 httpd
20:10:52 7428 httpd
20:10:52 7429 httpd
20:10:52 7430 httpd
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 30
SMF - サービスの起動・停止(3)
サービスの再起動
ログによる再起動の確認
Solaris 10 での例
root@host1# svcadm restart apache2 root@host1# svcs -v apache2
STATE NSTATE STIME CTID FMRI
online - 20:15:44 2863 svc:/network/http:apache2
root@host1# tail -f /var/svc/log/network-http:apache2.log
[ Apr 25 20:15:43 Stopping because service restarting. ]
[ Apr 25 20:15:43 Executing stop method
("/lib/svc/method/http-apache2 stop") ] [ Apr 25 20:15:43 Method "stop" exited with status 0 ]
[ Apr 25 20:15:43 Executing start method
("/lib/svc/method/http-apache2 start") ] [ Apr 25 20:15:44 Method "start" exited with status 0 ]
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 31
SMF - サービスの起動・停止(4)
自動再起動
プロセスIDが新しくなっている
Solaris 10 での例
root@host1# kill 7425
root@host1# svcs -p apache2
STATE STIME FMRI
online 20:21:25 svc:/network/http:apache2
20:21:25 7462 httpd 20:21:26 7463 httpd
20:21:26 7464 httpd
20:21:26 7465 httpd
20:21:26 7466 httpd
20:21:26 7467 httpd
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 32
SMF - サービスの起動・停止(5)
自動再起動をログで確認
Solaris 10 での例
root@host1# tail -f /var/svc/log/network-http:apache2.log
[ Apr 25 20:21:24 Stopping because all processes in service exited. ]
[ Apr 25 20:21:24 Executing stop method
("/lib/svc/method/http-apache2 stop") ] httpd (no pid file) not running [ Apr 25 20:21:24 Method "stop" exited with status 0 ]
[ Apr 25 20:21:24 Executing start method
("/lib/svc/method/http-apache2 start") ] [ Apr 25 20:21:25 Method "start" exited with status 0 ]
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 33
トラブル対応
svcs -xv でサービスの状態を確認
– http://www.sun.com/msg/<MSG-ID> を確認
My Oracle Support へのアクセス権が必要
– サービスのログを確認
/var/svc/log や /etc/svc/volatile
コンソールやsyslog (/var/adm/messages)をチェック
不具合解消後はsvcadm clear <FMRI>
ブート時にシステムがハングする場合
– boot -m milestone=none
– プロンプトでログインしてsvcadm milestone all
– svcsでシステムの状況を調査
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 34
svcprop / svccfgコマンド
svcprop <FMRI>
– プロパティ値の表示
svccfg list
– サービスリスト表示
svccfg
– サービスパラメータ設定
svccfg export <FMRI>
– サービスのmanifest を標準出力に出力
svccfg import <manifest_file>
– manifest_file をリポジトリに取り込む
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 35
デモ3
svccfg コマンドによるサービスの設定変更
– サービスリポジトリの特定
– リポジトリ情報の表示
– 設定されているサービスのリスト表示
– サービスのパラメータ設定
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 36
SMF - サービスリポジトリ
リポジトリの実体(SQLite形式)
リポジトリ情報の表示
Solaris 10 での例
root@host1# cd /etc/svc
root@host1# ls -l repository.db
-rw------- 1 root sys 2268160 4月 25日 20:10 repository.db
root@host1# svcprop apache2
httpd/ssl boolean false
httpd/stability astring Evolving
loopback/entities fmri svc:/network/loopback:default
loopback/grouping astring require_all
loopback/restart_on astring error
loopback/type astring service
physical/entities fmri svc:/network/physical:default
:
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 37
SMF - 既存サービスの設定変更
設定されているサービスのリスト表示
サービスのパラメータ設定
Solaris 10 での例
root@host1# svccfg list
system/console-login
system/device/local
...
network/http
...
root@host1# svccfg
svc:> select network/http:apache2
svc:/network/http:apache2> setprop parameter=”value”
svc:/network/http:apache2> exit
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 38
SMF - リスタータがinetdのサービス
inetadm
– リスト表示
inetadm -e <FMRI>
– 有効化して起動
inetadm -d <FMRI>
– 無効化して停止
inetadm -l <FMRI>
– サービスの詳細表示
inetconv
– 既存 inetd サービスの取り込みや
inted.conf 形式から manifest 形式への変換
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 39
SMF - rcスクリプトなどから新規サービスの作成
1. 類似サービスのエクスポート
2. manifestの編集
3. 必要ファイルの配備
4. サービスのインポート (Solaris 11 ではsvcadm restart manifest-import)
Solaris 10 での例
root@host1# svccfg export network/http > apache.xml
root@host1# cat apache.xml
(/var/svc/manifest/network/http-apache.xml同様の内容)
root@host1# svccfg import apache.xml
詳細は下記ドキュメント参照 How to Migrate Control of System Services from Scripts to the Service Management Facility
• http://www.oracle.com/technetwork/articles/servers-storage-admin/scripts-to-smf-1641705.html
How to Create an Oracle Solaris Service Management Facility Manifest • http://www.oracle.com/technetwork/server-storage/solaris/solaris-smf-manifest-wp-167902.pdf
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 40
デモ4
inetd 管理下サービスの操作
– リスト表示
– 詳細表示
– 無効化
– 有効化
– 既存サービスの取り込み
Solaris 10 にて新規サービスの作成
– lrc:/etc/rc3_d/S50apache を SMF 管理下に
– apache2 をベースに apache サービスを構成
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 41
Solaris 9 までのサービス管理との違いのまとめ
サービスの無効化
– 従来: mv /etc/rc2.d/S75cron /etc/rc2.d/x.S75.cron
– SMF: svcadm disable system/cron:default
サービスの再起動
– 従来: /etc/init.d/sshd stop; /etc/init.d/sshd start
– SMF: svcadm restart network/ssh:default
ランレベルの変更
– 従来: init S
– SMF: svcadm milestone -d milestone/single-user:default
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 42
最近のOS内サービスの依存関係はここまで複雑
もはやスクリプトで手動で管理するのは限界
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 43
SMFまとめ
サービス開発者、システム開発者
– 依存関係やサービス定義を明確に行う必要あり
サービスの可用性向上につながる
サービス監視モジュール不要
クラスタリングの必然性は少なくなる
– 可用性要件に基づいて検討
システム管理者
– 落ちたサービスは基本的に自動で復旧
管理者介在不要
– 自動復旧しないサービス
統一的な手順で調査と対処が可能
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 44
参考情報
Oracle Solaris 11 マニュアル (日本語) 「Oracle Solaris の管理: 一般的なタスク」
– http://docs.oracle.com/cd/E26924_01/html/E25810/index.html
6. サービスの管理(概要)、7. サービスの管理(手順)
(英語版)
– http://docs.oracle.com/cd/E23824_01/html/821-1451/index.html
6. Managing Services (Overview), 7. Managing Services (Tasks)
Solaris 10 マニュアル (日本語) 「Solaris のシステム管理 (基本編)」
– http://docs.oracle.com/cd/E24845_01/html/819-0378/index.html
18. サービスの管理(概要)、19. サービスの管理(手順)
Oracle University 「Solaris 8/9 管理者の為のSolaris 10 システム管理速習」 – http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getCourseDesc?dc=D66660JP10
OTN (Oracle Technology Network) Solaris SMF ページ
– http://www.oracle.com/technetwork/server-storage/solaris11/technologies/smf-1690889.html
SMF依存関係グラフ例
– http://opensolaris.org/os/community/smf/scfdot/
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 45
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 46
top related