solaris ディープダイブセミナー #4: a-2-1 サービス実行を超えた...

Post on 29-Nov-2014

1.101 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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