この章では、Sun Cluster HA for Solaris Containers のインストールと構成の方法について説明します。
この章の内容は次のとおりです。
Solaris コンテナは、完全なアプリケーション実行環境です。Solaris 10 リソースマネージャーと Solaris ゾーンソフトウェア区分技術は、どちらもこのコンテナの一部です。これらの構成要素は、コンテナのさまざまな機能にかかわり、連携して完全なコンテナを作り上げます。コンテナのゾーンに関連する部分は、プラットフォームの資源にアプリケーションを仮想的に割り当てます。ゾーンを使用すると、ゾーンが Solaris オペレーティングシステムの単一インスタンスを共有している場合であっても、1 つのアプリケーションから、複数のアプリケーションコンポーネントを分離できます。資源管理機能では、作業負荷に与える資源の量を割り当てることができます。
Solaris オペレーティングシステムの Solaris ゾーン機能は、システム上でアプリケーションを実行するための、独立した安全な環境を提供します。ゾーンを作成すると、そのアプリケーション実行環境で実行されるプロセスは、システムのほかの部分から隔離されます。
この分離を行うことで、1 つのゾーン内で稼動しているプロセスがほかのゾーンで稼動しているプロセスを監視したりそれらのプロセスに影響を及ぼしたりすることが防止されます。スーパーユーザー資格で実行中であるプロセスであっても、ほかのゾーンの動作を表示したり、動作に影響を与えることはできません。また、ゾーンにより、アプリケーションを配備するマシンの物理的属性からアプリケーションを分離する抽象層も提供されます。このような属性の例として、物理デバイスパスがあります。
あらゆる Solaris システムには大域ゾーンが含まれます。大域ゾーンは 2 つの機能を持っています。大域ゾーンは、システムのデフォルトのゾーンであり、システム全体の管理に使用されるゾーンでもあります。非大域ゾーンはゾーンと呼ばれ、広域管理者により作成されます。
Sun Cluster HA for Solaris Containers を使用すると、次の操作を実行するコンポーネントを提供することにより、Sun Cluster で Solaris ゾーン を管理できます。
ゾーンの順序正しいブートと停止
スクリプトまたはコマンドを介した、ゾーン内のアプリケーションの順序正しい起動、停止、および障害監視
ゾーン内の Solaris Service Management Facility (SMF) サービスの順序正しい起動、停止、および障害監視
Sun Cluster HA for Solaris Containers は、フェイルオーバーサービスとしても、マルチマスターサービスとしても構成できます。Sun Cluster HA for Solaris Containers をスケーラブルサービスとして構成することはできません。
Solaris Zone が Sun Cluster HA for Solaris Containers データサービスにより管理される場合、Sun Cluster ノード全体で、Solaris Zone はフェイルオーバー Solaris Zone、またはマルチマスター Solaris Zone になります。フェイルオーバーは、大域ゾーン内でのみ実行される Sun Cluster HA for Solaris Containers データサービスにより管理されます。
フェイルオーバーデータサービス、マルチマスターデータサービス、およびスケーラブルデータサービスの概念については、『Sun Cluster の概念 (Solaris OS 版)』を参照してください。
次の表は、Sun Cluster HA for Solaris Containers のインストールや構成に関する作業の要約と、それらの作業の実施に必要な詳しい説明がどこにあるかを示しています。これらの作業は、表に示す順序で行う必要があります。
表 1 Sun Cluster HA for Solaris Containers のインストールと構成に関する作業
作業 |
参照先 |
---|---|
インストールの計画 | |
Solaris ゾーン のインストールと構成 | |
インストールと構成の確認 | |
Sun Cluster HA for Solaris Containers パッケージのインストール | |
Sun Cluster HA for Solaris Containers コンポーネントの登録と構成 | |
Sun Cluster HA for Solaris Containers のインストールと構成の確認 | |
Sun Cluster HA for Solaris Containers 障害モニターの調整 | |
Sun Cluster HA for Solaris Containers のデバッグ |
ここでは、Sun Cluster HA for Solaris Containers のインストールと構成の計画について説明します。
以降の項で説明する構成の制限は Sun Cluster HA for Solaris Containers だけに適用されます。
これらの制限事項を守らないと、データサービスの構成がサポートされない場合があります。
ゾーンのネットワークアドレスの構成は、必要な高可用性のレベルによって決まります。HA なし、IPMP を使用した HA、および IPMP と SUNW.LogicalHostName を使用した HA から選択できます。
ゾーンのネットワークアドレス構成の選択は、ゾーンブートリソースの一部の構成パラメータに影響します。詳細は、「Sun Cluster HA for Solaris Containers の登録と構成」を参照してください。
ゾーンのアドレス用に HA が必要でない場合は、zonecfg ユーティリティーを使用してゾーンのアドレスを構成します。
IPMP 保護による HA が必要である場合は、zonecfg ユーティリティーを使用してゾーンのアドレスを構成してから、IPMP グループ内のアダプタ上にゾーンのアドレスを配置します。
IPMP 保護による HA とすべての物理インタフェースの障害に対する保護が必要である場合、次のリストから 1 つのオプションを選択します。
SUNW.LogicalHostName リソースタイプでゾーンのアドレスの 1 つまたはサブセットを管理する必要がある場合、これらのゾーンのアドレスの SUNW.LogicalHostName リソースを構成しますが、この際 zonecfg ユーティリティーは使用しません。zonecfg ユーティリティーを使用するのは、SUNW.LogicalHostName リソースタイプの制御下にする必要のないゾーンのアドレスを構成する場合のみです。
SUNW.LogicalHostName リソースタイプですべてのゾーンのアドレスを管理する必要がある場合、ゾーンのアドレスのリストを使用して SUNW.LogicalHostName リソースを構成しますが、この際 zonecfg ユーティリティーは使用しません。
上記以外の場合は、zonecfg ユーティリティーを使用してゾーンのアドレスを構成し、SUNW.LogicalHostName リソースが使用する個別の冗長 IP アドレスを zonecfg ユーティリティーを使用しないで構成します。
フェイルオーバー構成のゾーンのゾーンパスは、高可用性ローカルファイルシステム上に存在する必要があります。ゾーンは、ゾーンが存在可能な各クラスタノード上で構成する必要があります。
ゾーンは一度に 1 つのノード上でのみアクティブになり、ゾーンのアドレスは一度に 1 つのみ plumb されます。ゾーンがクラスタ内のどの場所に存在するかに関係なく、アプリケーションクライアントはゾーンのアドレスを介してゾーンに到達できます。
マルチマスター構成のゾーンのゾーンパスは、各ノードのローカルディスク上に存在する必要があります。ゾーンは、ゾーンのマスターとなることができる各ノード上で、同じ名前を使用して構成する必要があります。
マルチマスター構成内で動作するよう構成されている各ゾーンにも、ゾーン固有のアドレスが必要です。このような構成におけるアプリケーションの負荷均衡は、通常、外部にあるロードバランサにより実現されます。このロードバランサは、各ゾーンのアドレスに対して構成する必要があります。アプリケーションクライアントは、ロードバランサのアドレスを介してゾーンに到達できます。
Sun Cluster HA for Solaris Containers が管理するゾーンのゾーンパスは、広域ファイルシステム上に存在することができません。
ゾーンがフェイルオーバー構成内に存在する場合、ゾーンパスは高可用性ローカルファイルシステム上に存在する必要があります。
ゾーンがマルチマスター構成内に存在する場合、ゾーンパスは各ノードのローカルディスク上に存在する必要があります。
共有デバイスの場合、Sun Cluster では、メジャーデバイス番号とマイナーデバイス番号は、クラスタ内のすべてのノードで同一である必要があります。ゾーンにデバイスが必要である場合、ゾーンのホストとなるすべてのクラスタノード上で、メジャーデバイス番号が /etc/name_to_major 内で同じになるようにします。
ここで説明する構成の制約は Sun Cluster HA for Solaris Containers だけに適用されます。
これらの要件を満たしていないデータサービス構成は、サポートされない場合があります。
次の表に、Sun Cluster HA for Solaris Containers コンポーネント間の依存関係を示します。
表 2 Sun Cluster HA for Solaris Containers コンポーネント間の依存関係
コンポーネント |
依存関係 |
---|---|
ゾーンブートリソース |
SUNW.HAStoragePlus - フェイルオーバー構成では、ゾーンのゾーンパスは、SUNW.HAStoragePlus リソースにより管理される高可用性ファイルシステム上に存在する必要があります。 SUNW.LogicalHostName - この依存関係が必要であるのは、ゾーンのアドレスが SUNW.LogicalHostName リソースにより管理される場合のみです。 |
ゾーンスクリプトリソース |
ゾーンブートリソース |
ゾーン SMF リソース |
ゾーンブートリソース |
これらの依存関係は、Sun Cluster HA for Solaris Containers を登録および構成するときに設定されます。詳細は、「Sun Cluster HA for Solaris Containers の登録と構成」を参照してください。
ゾーンのスクリプトリソースと SMF リソースはオプションです。これらを使用すると、ゾーンのスクリプトリソースと SMF リソースの複数のインスタンスを、ゾーンブートリソースと同じリソースグループ内に配備できます。さらに、より複雑な依存関係が必要である場合は、r_properties(5) および rg_properties(5) のマニュアルページで、高度な依存関係とアフィニティーの設定を参照してください。
Sun Cluster HA for Solaris Containers のブートコンポーネントとスクリプトコンポーネントは、パラメータファイルでデータサービスに構成情報を渡す必要があります。これらのファイル用のディレクトリを作成する必要があります。ディレクトリ位置は、ゾーンのホストとなるノード上で使用できる必要があり、ゾーンのゾーンパス内に存在してはいけません。ディレクトリは、大域ゾーンからのみアクセス可能である必要があります。コンポーネントのリソースが登録された時点で、各コンポーネントのパラメータファイルは自動的に作成されます。
Solaris ゾーン をインストールおよび構成するには、次の作業が必要です。
インストールと構成を行うゾーンごとに、この作業を実行します。ここでは、Sun Cluster HA for Solaris Containers とともに使用するように Solaris ゾーン をインストールするための、特別な要件についてのみ説明します。Solaris ゾーン のインストールと構成の詳細については、『Solaris のシステム管理 (Solaris コンテナ : 資源管理と Solaris ゾーン)』を参照してください。
SUNW.HAStoragePlus リソースタイプを登録します。
# scrgadm -a -t SUNW.HAStoragePlus |
フェイルオーバーリソースグループを作成します。
# scrgadm -a -g solaris-zone-resource-group |
ゾーンのディスク記憶装置に対応するリソースを作成します。
# scrgadm -a -j solaris-zone-has-resource \ -g solaris-zone-resource-group \ -t SUNW.HAStoragePlus \ -x FilesystemMountPoints=solaris-zone-instance-mount-points |
(省略可能) ゾーンの論理ホスト名に対応するリソースを作成します。
# scrgadm -a -L -j solaris-zone-logical-hostname-resource-name \ -g solaris-zone-resource-group \ -l solaris-zone-logical-hostname |
# scswitch -Z -g solaris-zone-resource-group |
スケーラブルリソースグループを作成します。
# scrgadm -a -g solaris-zone-resource-group \ -y Maximum_primaries=max-number \ -y Desired_primaries=desired-number |
# scswitch -Z -g solaris-zone-resource-group |
ゾーンのインストールの詳細については、『Solaris のシステム管理 (Solaris コンテナ : 資源管理と Solaris ゾーン)』を参照してください。
Sun Cluster を使用してゾーンを配備するための次の要件を決定します。
配備する Solaris Zone インスタンスの数。
クラスタファイルシステムは、各 Solaris Zone インスタンスにより使用されます。
ゾーンをインストールします。
インストールするゾーンをフェイルオーバーゾーンにする場合、ゾーンのゾーンパスは高可用性ローカルファイルシステムを指定する必要があります。ファイルシステムは、手順 3 で作成した、SUNW.HAStoragePlus リソースにより管理する必要があります。
# zlogin -C zone |
ゾーンを構成するよう求めるプロンプトが表示されます。
プロンプトに従ってゾーンを構成します。
作成されたゾーンを構成したあと、/etc/zones/index ファイルには 1 つのエントリが存在します。
ゾーンのコンソールから切断します。
ゾーンに対して定義したエスケープシーケンスを使用します。エスケープシーケンスを定義していない場合は、次のデフォルトのエスケープシーケンスを使用します。
# ~. |
/etc/zones/index の内容を表示して、新しいゾーンのインデックスエントリを決定します。
「フェイルオーバー構成でのゾーンの実行を有効にする」のための、新しいゾーンのインデックスエントリが必要です。
# cat /etc/zones/index |
クラスタ内の全ノードでゾーンを使用できるようにします。
各クラスタノードで次の手順を実行します。
Sun Cluster HA for Solaris Containers パッケージをインストールする前に、ユーザーが作成したゾーンがクラスタ内で動作するよう正しく構成されていることを確認します。ただし、Sun Cluster HA for Solaris Containers データサービスはまだインストールされていないため、これによってゾーンが高可用性であることを確認できるわけではありません。
「ゾーンのインストールと構成」で作成したゾーンごとに、次の手順を実行します。
# zoneadm -z zone boot |
# zlogin -z zone |
ゾーンが svc:/milestone/multi-user-server:default マイルストンに到達したことを確認します。
# svcs -a | grep milestone online Apr_10 svc:/milestone/network:default online Apr_10 svc:/milestone/devices:default online Apr_10 svc:/milestone/single-user:default online Apr_10 svc:/milestone/sysconfig:default online Apr_10 svc:/milestone/name-services:default online Apr_10 svc:/milestone/multi-user:default online Apr_10 svc:/milestone/multi-user-server:default online Apr_10 svc:/system/cluster/cl-svc-cluster-milestone:default |
# zoneadm -z halt zone |
Sun Cluster の初回のインストールで Sun Cluster HA for Solaris Containers パッケージをインストールしなかった場合は、ここで説明する作業を行なってパッケージをインストールしてください。この手順は、Sun Cluster HA for Solaris Containers パッケージをインストールする各クラスタノード上で個別に実行します。この手順を実行するには、Sun Cluster Agents CD-ROM が必要です。
複数のデータサービスを同時にインストールする場合は、『Sun Cluster ソフトウェアのインストール (Solaris OS 版)』の「ソフトウェアのインストール」に記載されている手順を実行してください。
これらのパッケージは大域ゾーンにのみインストールしてください。パッケージをインストールしたあとで作成されたローカルゾーンにそれらのパッケージが転送されないようにするには、scinstall ユーティリティーを使用してパッケージをインストールしてください。
この作業は、Sun Cluster HA for Solaris Containers を実行できるすべてのノードで行います。
Sun Cluster Agents CD-ROM を CD-ROM ドライブに挿入します。
オプションは指定せずに、scinstall ユーティリティーを実行します。
scinstall ユーティリティーにより、ほかの情報を入力するためのプロンプトが表示されます。
メニューオプション「新しいデータサービスのサポートをこのクラスタノードに追加」を選択します。
この手順で scinstall ユーティリティーが対話型モードで起動します。
Sun Cluster Agents CD-ROM のパス名を指定します。
このユーティリティーには、この CD は “data services cd” と表示されます。
メニューオプション「q) 完了」を選択します。
「他のデータサービスも表示しますか ?」という質問に対して「yes」と入力します
このユーティリティーには、この CD は “data services cd” と表示されます。
インストールするデータサービスを指定します。
選択したデータサービスが scinstall ユーティリティーによって示され、この選択内容の確認が求められます。
scinstall ユーティリティーを終了します。
CD-ROM ドライブから CD を取り出します。
この手順を行う前に、Sun Cluster HA for Solaris Containers データサービスパッケージがインストールされていることを確認してください。
次のディレクトリにある構成/登録ファイルを使用して、Sun Cluster HA for Solaris Containers リソースを登録します。
/opt/SUNWsczone/sczbt/util
/opt/SUNWsczone/sczsh/util
/opt/SUNWsczone/sczsmf/util
これらのファイルは、Sun Cluster HA for Solaris Containers コンポーネント間で必要な依存関係を定義します。これらの依存関係については、「Sun Cluster HA for Solaris Containers コンポーネント間の依存関係」を参照してください。
Sun Cluster HA for Solaris Containers の登録と構成には、次の節で説明する作業が含まれます。
Sun Cluster HA for Solaris Containers には、ゾーンブートリソースの構成プロセスを自動化するスクリプトが用意されています。このスクリプトは、/opt/SUNWsczone/sczbt/util ディレクトリの sczbt_config ファイルから構成パラメータを取得します。ゾーンブートリソースに構成パラメータを指定するには、sczbt_config ファイルを編集します。
sczbt_config ファイル内の各構成パラメータは、キーワード値のペアとして定義されています。sczbt_config ファイルにはすでに、必要なキーワードと等号が含まれています。詳細は、「sczbt_config の一覧表示」を参照してください。sczbt_config ファイルを編集する際には、必要な値を各キーワードに追加します。
sczbt_config ファイル内のキーワード値のペアは、次のようになります。
RS=sczbt-rs RG=sczbt-rg PARAMETERDIR=sczbt-parameter-directory SC_NETWORK=true|false SC_LH=sczbt-lh-rs FAILOVER=true|false HAS_RS=sczbt-has-rs Zonename=zone-name Zonebootopt=zone-boot-options Milestone=zone-boot-milestone
sczbt_config ファイル内のキーワードの意味と使用できる値は、次のとおりです。
ゾーンブートリソースに割り当てる名前を指定します。このキーワードには値を指定する必要があります。
ゾーンブートリソースが存在するリソースグループの名前を指定します。このキーワードには値を指定する必要があります。
いくつかの変数とその値を格納するパラメータディレクトリに割り当てるディレクトリ名を指定します。このキーワードには値を指定する必要があります。
ゾーンブートリソースが SUNW.LogicalHostName リソースに対してネットワーク対応であるかどうかを指定します。このキーワードには値を指定する必要があります。
ゾーンのアドレス用に HA が必要でない場合は、zonecfg ユーティリティーを使用してゾーンのアドレスを構成します。
SC_NETWORK=false SC_LH= |
IPMP 保護による HA が必要である場合は、zonecfg ユーティリティーを使用してゾーンのアドレスを構成してから、IPMP グループ内のアダプタ上にゾーンのアドレスを配置します。
SC_NETWORK=false SC_LH= |
IPMP 保護による HA とすべての物理インタフェースの障害に対する保護が必要である場合、次のリストから 1 つのオプションを選択します。
SUNW.LogicalHostName リソースタイプでゾーンのアドレスの 1 つまたはサブセットを管理する必要がある場合、これらのゾーンのアドレスの SUNW.LogicalHostName リソースを構成しますが、この際 zonecfg ユーティリティーは使用しません。zonecfg ユーティリティーを使用するのは、SUNW.LogicalHostName リソースタイプの制御下にしないゾーンのアドレスを構成する場合のみです。
SC_NETWORK=true SC_LH=Name of the SUNW.LogicalHostName resource |
SUNW.LogicalHostName リソースタイプですべてのゾーンのアドレスを管理する必要がある場合、ゾーンのアドレスのリストを使用して SUNW.LogicalHostName リソースを構成しますが、この際 zonecfg ユーティリティーは使用しません。
SC_NETWORK=true SC_LH=Name of the SUNW.LogicalHostName resources |
上記以外の場合は、 zonecfg ユーティリティーを使用してゾーンのアドレスを構成し、SUNW.LogicalHostName リソースが使用する個別の冗長 IP アドレスを構成します。zonecfg ユーティリティーを使用してこのリソースを構成してはなりません。
SC_NETWORK=false SC_LH=Name of the SUNW.LogicalHostName resource |
ゾーンブートリソースの SUNW.LogicalHostName リソースの名前を指定します。この変数をいつ設定するかについては、「ゾーンネットワークアドレスに関する制限事項」を参照してください。この名前は、手順 4 でリソースを作成した時点で割り当てた SUNW.LogicalHostname リソース名である必要があります。
ゾーンのゾーンパスが高可用性ファイルシステム上にあるかどうかを指定します。
ゾーンブートリソースの SUNW.HAStoragePlus リソースの名前を指定します。この名前は、「フェイルオーバー構成でのゾーンの実行を有効にする」でリソースを作成した時点で割り当てた SUNW.HAStoragePlus リソース名でなければなりません。FAILOVER=true が設定されている場合、このキーワードには値を指定する必要があります。
ゾーン名を指定します。このキーワードには値を指定する必要があります。
使用するゾーンブートオプションを指定します。サポートされているのは -s のみです。この変数を空白のままにしておくと、ゾーンは multi-user-server マイルストンに対してブートします。
ブートに成功したとみなされるために、ゾーンが到達しなければならないマイルストンを指定します。このキーワードには値を指定する必要があります。
以下の例に、構成パラメータが次のように設定されている sczbt_config ファイルを示します。
ゾーンブートリソースの名前は zone1-rs です。
ゾーンブートリソースのリソースグループの名前は zone1-rg です。
ゾーンブートリソースのパラメータファイルディレクトリの名前は /global/zones/pfiles です。
ゾーンのアドレスは SUNW.LogicalHostName リソースにより管理され、true であることを示します。
ゾーンブートリソースの SUNW.LogicalHostName リソース名は zone1-lh です。
ゾーンブートリソースのゾーンパスは SUNW.LogicalHostName リソースにより管理され、true であることを示します。
ゾーンブートリソースの SUNW.HAStoragePlus リソース名は zone1-has です。
ゾーンの名前は zone1 です。
ゾーンブートリソースのブートオプションは null であることを示します。
ゾーンブートリソースのマイルストンは multi-user-server であることを示します。
RS=zone1-rs RG=zone1-rg PARAMETERDIR=/global/zones/pfiles SC_NETWORK=true SC_LH=zone1-lh FAILOVER=true HAS_RS=zone1-has Zonename=zone1 Zonebootopt= Milestone=multi-user-server
ゾーンスクリプトリソースには、コマンドやスクリプトを実行したり、ゾーン内でアプリケーションを起動、停止、および検証する機能があります。ゾーンスクリプトリソースはゾーンブートリソースに依存します。コマンド名またはスクリプト名は、リソースの登録時にゾーンスクリプトリソースに渡され、次の要件を満たす必要があります。
コマンドまたはスクリプトは、ゾーン内の完全修飾パスを含む必要がある。
コマンドまたはスクリプトは root により実行可能である必要がある。
コマンドまたはスクリプトは、次のいずれかのリターンコードを返す必要がある。
0 |
正常終了 |
>0 |
エラー発生 |
201 |
(検証のみ) — リソースグループをただちにフェイルオーバーする必要があるエラーが発生 |
>0 & !=201 |
(検証のみ) — リソースの再起動を必要とするエラーが発生 |
ゾーンスクリプトリソースをただちにフェイルオーバーするには、必要な動作を満たすよう、リソースプロパティー Failover_mode および Failover_enabled を構成する必要があります。Failover_mode プロパティーを設定する場合は r_properties(5) のマニュアルページを参照し、Failover_enabled プロパティーを設定する場合は SUNW.gds(5) のマニュアルページを参照してください。
以下の例では、存在するプロセスツリーを超えて、Apache2 サービスが実行中であるかをテストする簡単なスクリプトを示します。スクリプト /var/tmp/probe-apache2 はゾーン内に存在する必要があります。
# cat /var/tmp/probe-apache2 #!/usr/bin/ksh if "echo GET; exit" | mconnect -p 80 then exit 0 else exit 100 fi
Sun Cluster HA for Solaris Containers には、ゾーンスクリプトリソースの構成プロセスを自動化するスクリプトが用意されています。このスクリプトは、/opt/SUNWsczone/sczsh/util ディレクトリの sczsh_config ファイルから構成パラメータを取得します。ゾーンスクリプトリソースに構成パラメータを指定するには、sczsh_config ファイルを編集します。
sczsh_config ファイル内の各構成パラメータは、キーワード値のペアとして定義されています。sczsh_config ファイルにはすでに、必要なキーワードと等号が含まれています。詳細は、「sczsh_config の一覧表示」を参照してください。sczsh_config ファイルを編集する際には、必要な値を各キーワードに追加します。
sczsh_config ファイル内のキーワード値のペアは、次のようになります。
RS=sczsh-rs RG=sczbt-rg SCZBT_RS=sczbt-rs PARAMETERDIR=sczsh-parameter-directory Zonename=sczbt-zone-name ServiceStartCommand=sczsh-start-command ServiceStopCommand=sczsh-stop-command ServiceProbeCommand=sczsh-probe-command
sczsh_config ファイル内のキーワードの意味と使用できる値は、次のとおりです。
ゾーンスクリプトリソースに割り当てる名前を指定します。このキーワードには値を指定する必要があります。
ゾーンブートリソースが存在するリソースグループの名前を指定します。このキーワードには値を指定する必要があります。
ゾーンブートリソースの名前を指定します。このキーワードには値を指定する必要があります。
次の変数とその値を格納するパラメータディレクトリに割り当てるディレクトリ名を指定します。このキーワードには値を指定する必要があります。
ゾーン名を指定します。このキーワードには値を指定する必要があります。
実行するゾーン起動コマンドまたはスクリプトを指定します。このキーワードには値を指定する必要があります。
実行するゾーン停止コマンドまたはスクリプトを指定します。このキーワードには値を指定する必要があります。
実行するゾーンプローブコマンドまたはスクリプトを指定します。このキーワードには値を指定する必要があります。
以下の例では、ゾーンスクリプトリソースは Solaris 10 で使用可能な Apache2 スクリプトを使用します。この例を使用する前には、Apache2 の構成ファイル http.conf を構成する必要があります。この例の目的のため、用意された http.conf-example を使用できます。ファイルを次のようにコピーします。
# zlogin zone1 # cd /etc/apache2 # cp http.conf-example http.conf # exit |
以下の例に、構成パラメータが次のように設定されている sczsh_config ファイルを示します。
ゾーンスクリプトリソースの名前は zone1-script-rs です。
ゾーンスクリプトリソースのリソースグループの名前は zone1-rg です。
ゾーンブートリソースの名前は zone1-rs です。
ゾーンスクリプトリソースのパラメータファイルディレクトリの名前は /global/zones/pfiles です。
ゾーンの名前は zone1 です。
ゾーンスクリプトリソースの起動コマンドとそのパラメータの名前は、"/lib/svc/method/http-apache2 start" です。
ゾーンスクリプトリソースの停止コマンドとそのパラメータの名前は、"/lib/svc/method/http-apache2 stop" です。
ゾーンスクリプトリソースのプローブコマンドの名前は "/var/tmp/probe-apache2" です。例 2 に示すこのスクリプトは zone1 内に存在する必要があります。
RS="zone1-script-rs" RG="zone1-rg" SCZBT_RS="zone1-rs" PARAMETERDIR="/global/zones/pfiles" Zonename="zone1" ServiceStartCommand="/lib/svc/method/http-apache2 start" ServiceStopCommand="/lib/svc/method/http-apache2 stop" ServiceProbeCommand="/var/tmp/probe-apache2"
ゾーン SMF リソースは、ゾーン内の SMF サービスを有効、無効にしたり、検証する機能があります。ゾーン SMF リソースはゾーンブートリソースに依存します。SMF サービスの検証は、SMF サービスに対してコマンドまたはスクリプトを実行することによって行います。SMF サービス、およびプローブコマンドまたはスクリプトの名前は、リソースの登録時にゾーン SMF リソースに渡されます。プローブコマンドまたはスクリプトは、次の要件を満たす必要があります。
プローブコマンドまたはスクリプトは、ゾーン内の完全修飾パスを含む必要がある。
プローブコマンドまたはスクリプトは root により実行可能である必要がある。
プローブコマンドまたはスクリプトは、次のいずれかのリターンコードを返す必要がある。
0 |
正常終了 |
100 |
リソースの再起動が必要なエラーが発生 |
201 |
リソースグループをただちにフェイルオーバーする必要があるエラーが発生 |
ゾーン SMF リソースをただちにフェイルオーバーするには、必要な動作を満たすよう、リソースプロパティー Failover_mode および Failover_enabled を構成する必要があります。Failover_mode プロパティーを設定する場合は r_properties(5) のマニュアルページを参照し、Failover_enabled プロパティーを設定する場合は SUNW.gds(5) のマニュアルページを参照してください。
以下の例では、存在するプロセスツリーを超えて、SMF Apache2 サービスが実行中であるかをテストする簡単なスクリプトを示します。スクリプト /var/tmp/probe-apache2 はゾーン内に存在する必要があります。
# cat /var/tmp/probe-apache2 #!/usr/bin/ksh if "echo GET; exit" | mconnect -p 80 then exit 0 else exit 100 fi
Sun Cluster HA for Solaris Containers には、ゾーン SMF リソースの構成プロセスを自動化するスクリプトが用意されています。このスクリプトは、/opt/SUNWsczone/sczsmf/util ディレクトリの sczsmf_config ファイルから構成パラメータを取得します。ゾーン SMF リソースに構成パラメータを指定するには、sczsmf_config ファイルを編集します。
sczmf_config ファイル内の各構成パラメータは、キーワード値のペアとして定義されています。sczsmf_config ファイルにはすでに、必要なキーワードと等号が含まれています。詳細は、「sczsmf_config の一覧表示」を参照してください。sczsmf_config ファイルを編集する際には、必要な値を各キーワードに追加します。
sczsmf_config ファイル内のキーワード値のペアは、次のようになります。
RS=sczsmf-rs RG=sczbt-rg SCZBT_RS=sczbt-rs ZONE=sczbt-zone-name SERVICE=smf-service RECURSIVE=true|false STATE=true|false SERVICE_PROBE=sczsmf-service-probe
sczsmf_config ファイル内のキーワードの意味と使用できる値は、次のとおりです。
ゾーン SMF リソースに割り当てる名前を指定します。定義する必要があります。
ゾーンブートリソースが存在するリソースグループの名前を指定します。定義する必要があります。
ゾーンブートリソースの名前を指定します。このキーワードには値を指定する必要があります。
ゾーン名を指定します。定義する必要があります。
有効/無効にする SMF サービスを指定します。定義する必要があります。
true を指定するとサービスを再帰的に有効にし、false を指定するとサービスを有効にするだけで、従属関係は生じません。定義する必要があります。
true を指定するとサービス状態に到達するまで待機し、false を指定すると待機しません。定義する必要があります。
SMF サービスをチェックするようスクリプトを指定します。
以下の例では、ゾーン SMF リソースは Solaris 10 で使用可能な Apache2 SMF サービスを使用します。この例を使用する前には、Apache2 の構成ファイル http.conf を構成する必要があります。この例の目的のため、用意された http.conf-example を使用できます。ファイルを次のようにコピーします。
# zlogin zone1 # cd /etc/apache2 # cp http.conf-example http.conf # exit |
以下の例に、構成パラメータが次のように設定されている sczsmf_config ファイルを示します。
ゾーン SMF リソースの名前は zone1-smf-rs です。
ゾーン SMF リソースのリソースグループの名前は zone1-rg です。
ゾーンブートリソースの名前は zone1-rs です。
ゾーンの名前は zone1 です。
ゾーン SMF サービスの名前は apache2 です。
ゾーン SMF サービスの Recursive オプションが true であることを示しています。
ゾーン SMF サービスの State オプションが true であることを示しています。
ゾーン SMF サービスのプローブ名が /var/tmp/probe-apache2 であることを示しています。例 4 に示すこのスクリプトは zone1 内に存在する必要があります。
RS=zone1-smf-rs RG=zone1-rg SCZBT_RS=zone1-rs ZONE=zone1 SERVICE=apache2 RECURSIVE=true STATE=true SERVICE_PROBE=/var/tmp/probe-apache2
sczbt_config ファイルを編集して、Sun Cluster HA for Solaris Containers ゾーンブートコンポーネント用の構成パラメータを指定します。詳細は、「ゾーンブートリソース用の構成パラメータの指定」を参照してください。
ゾーンのホストとなるクラスタノードの 1 つで、スーパーユーザーになります。
SUNW.gds というリソースタイプを登録します。
# scrgadm -a -t SUNW.gds |
Sun Cluster HA for Solaris Containers ブートリソースを作成するためのスクリプトが含まれるディレクトリに移動します。
# cd /opt/SUNWsczone/sczbt/util |
# ./sczbt_register |
# scswitch -e -j sczbt-rs |
sczsh_config ファイルを編集して、Sun Cluster HA for Solaris Containers ゾーンスクリプトコンポーネント用の構成パラメータを指定します。詳細は、「ゾーンスクリプトリソース用の構成パラメータの指定」を参照してください。
Sun Cluster HA for Solaris Containers スクリプトリソースを作成するためのスクリプトが含まれるディレクトリに移動します。
# cd /opt/SUNWsczone/sczsh/util |
# ./sczsh_register |
# scswitch -e -j sczsh-rs |
sczsmf_config ファイルを編集して、Sun Cluster HA for Solaris Containers ゾーン SMF コンポーネント用の構成パラメータを指定します。詳細は、「ゾーン SMF リソース用の構成パラメータの指定」を参照してください。
Sun Cluster HA for Solaris Containers SMF リソースを作成するためのスクリプトが含まれるディレクトリに移動します。
# cd /opt/SUNWsczone/sczsmf/util |
# ./sczsmf_register |
# scswitch -e -j sczsmf-rs |
Sun Cluster HA for Solaris Containers のインストール、登録、構成が終わったら、Sun Cluster HA for Solaris Containers のインストールと構成を確認します。Sun Cluster HA for Solaris Containers のインストールと構成を確認することで、Sun Cluster HA for Solaris Containers データサービスがゾーンの高可用性を実現しているかどうかがわかります。
Solaris ゾーン コンポーネントのホストとなるクラスタノード上でスーパーユーザーになります。
すべての Solaris Zone リソースがオンラインであることを確認します。
リソースごとに、次の手順を実行します。
ゾーンリソースグループを別のクラスタノード (node2 など) に切り替えます。
# scswitch -z -g solaris-zone-resource-group -h node2 |
リソースが node2 でオンラインになっていることを確認します。
# scstat -g |
以下の手順が必要であるのは、大域ゾーンとローカルゾーンの両方にパッチを適用する場合だけです。大域ゾーンのみにパッチを適用する場合は、『Sun Cluster のシステム管理 (Solaris OS 版)』の第 8 章「Sun Cluster ソフトウェアとファームウェアのパッチ」の手順に従ってください。
作業を始める前に、パッチ README ファイルを調べて、パッチが非リブートパッチとリブートパッチのどちらであるかを判別します。
非リブートパッチの場合、ノード上でパッチを適用したあとにノードをブートする必要はありません。稼働中のシステムにもパッチを適用できます。
1 つのノードから、ゾーンリソースを含むリソースグループ内のすべてのリソースの監視を無効にします。
# scswitch -n -M -j resource-list |
ゾーンがブートしない各ノードで、/etc/zones/index ファイルのゾーンのエントリをコメントアウトします。
エントリをコメントアウトするには、エントリを含む行の先頭に # 文字を追加します。
ゾーンが構成されているすべてのノードでパッチを適用します。
手順 2 で編集した各エントリからコメントを削除します。
手順 1 で監視を無効にしたリソースの監視を有効にします。
# scswitch -e -M -j resource-list |
リブートパッチの場合、ノードにパッチを適用したあとにノードをリブートする必要があります。
パッチの適用対象であるゾーンに依存するリソースを無効にします。
# scswitch -n -j zdepend-rs-list |
ゾーンリソースの監修を無効にします。
# scswitch -n -M -j zone-rs |
ノード上で、ゾーンリソースを含むリソースグループをオンラインします。
# scswitch -z -g zone-rg -h node |
ゾーンがブートしない各ノードで、/etc/zones/index ファイルのゾーンのエントリをコメントアウトします。
エントリをコメントアウトするには、エントリを含む行の先頭に # 文字を追加します。
ゾーンがブートしていない各ノードに対して、次の一連の操作を実行します。
ゾーンがブートしたノード上でパッチを適用します。
手順 4 で編集した各エントリからコメントを削除します。
手順 2 で監視を無効にしたリソースの監視を有効にします。
# scswitch -e -M -j zone-rs |
ゾーンがブートしたノードをリブートします。
手順 1 で無効にしたリソースを有効にします。
# scswitch -e -j zdepend-rs-list |
パッチが正しく適用されたことを確認するため、ゾーンリソースを含む各リソースを、リソースグループのノードリスト内の各ノードに切り替えます。リソースグループを別のノードに切り替えるには、次のコマンドを入力します。
scswitch -z -g zone-rg -h node
Sun Cluster HA for Solaris Containers 障害モニターは、次のコンポーネントが正しく動作しているかを確認します。
ゾーンブートリソース
ゾーンスクリプトリソース
ゾーン SMF リソース
各 Sun Cluster HA for Solaris Containers 障害モニターは、Solaris ゾーン コンポーネントを表すリソースに含まれます。このようなリソースを作成するのは、Sun Cluster HA for Solaris Containers を登録および構成するときです。詳細は、「Sun Cluster HA for Solaris Containers の登録と構成」を参照してください。
これらのリソースのシステムプロパティーと拡張プロパティーは、障害モニターの動作を制御します。事前に設定された障害モニターの動作は、これらのプロパティーのデフォルト値に基づいています。現在の動作は、ほとんどの Sun Cluster システムに適しているはずです。したがって、Sun Cluster HA for Solaris Containers 障害モニターを調整する必要があるのは、この事前設定されている動作を変更する必要がある場合だけです。
Sun Cluster HA for Solaris Containers 障害モニターの調整では次のことを行います。
障害モニターの検証間隔を設定する。
障害モニターの検証タイムアウトを設定する。
継続的な障害とみなす基準を定義する。
リソースのフェイルオーバー動作を指定する。
詳細は、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』の「Sun Cluster データサービス用に障害モニターを調整する」を参照してください。
Sun Cluster HA for Solaris Containers ゾーンブートおよびスクリプトリソースは、パラメータファイルを使用して、起動、停止、およびプローブコマンドにパラメータを渡します。これらのパラメータに対する変更は、リソースを再起動したり、有効/無効にするごとに適用されます。
ゾーンブートコンポーネントの障害モニターにより、ゾーンブートコンポーネントを実行するためのすべての要件が満たされます。
Sun Cluster HA for Solaris Containers zsched プロセスが実行中である。
このプロセスが実行中ではない場合、障害モニターはゾーンを再起動します。この障害が解消されない場合、障害モニターは、ゾーンブートコンポーネントのリソースを含むリソースグループをフェイルオーバーします。
SUNW.LogicalHostname リソースにより管理されるすべてのホストは動作中である。
ホストが動作していない場合、障害モニターは、ゾーンブートコンポーネントのリソースを含むリソースグループをフェイルオーバーします。
指定されたマイルストンは、オンラインであるか機能低下のいずれかである。
マイルストンがオンライン状態や機能低下状態ではない場合、障害モニターはゾーンを再起動します。この障害が解消されない場合、障害モニターは、ゾーンブートコンポーネントのリソースを含むリソースグループをフェイルオーバーします。
マイルストンの状態を確認するため、障害モニターはゾーンに接続します。障害モニターがゾーンに接続できない場合、検証タイムアウトの約 60% の期間、5 秒ごとに再試行します。それでも接続試行が失敗する場合、障害モニターはゾーンを再起動します。
ゾーンスクリプトコンポーネントの障害モニターは、コンポーネントに対して指定したスクリプトを実行します。このスクリプトが障害モニターに返す値が、障害モニターが実行する動作を決定します。詳細は、表 3 を参照してください。
ゾーン SMF コンポーネントの障害モニターは、SMF サービスが無効でないことを確認します。サービスが無効である場合、障害モニターは SMF サービスを再起動します。この障害が解消されない場合、障害モニターは、ゾーン SMF コンポーネントのリソースを含むリソースグループをフェイルオーバーします。
サービスが無効でない場合、障害モニターは、コンポーネントに対して指定されている SMF サービスプローブを実行します。このプローブが障害モニターに返す値が、障害モニターが実行する動作を決定します。詳細は、表 4 を参照してください。
/opt/SUNWsczone/xxx /etc ディレクトリの config ファイルを使用すると、Solaris Zone リソースのデバッグを起動できます。xxx は、ブートコンポーネントの場合は sczbt を表し、スクリプトコンポーネントの場合は sczsh を表し、SMF コンポーネントの場合は sczsmf を表します。
Sun Cluster HA for Solaris Containers の各コンポーネントには、Solaris Zone リソースのデバッグを起動できる config があります。各コンポーネントのこのファイルの位置は次のとおりです。
ゾーンブートコンポーネントの場合、このファイルは /opt/SUNWsczone/sczbt/etc ディレクトリに含まれています。
ゾーンスクリプトコンポーネントの場合、このファイルは /opt/SUNWsczone/sczsh/etc ディレクトリに含まれています。
ゾーン SMF コンポーネントの場合、このファイルは /opt/SUNWsczone/sczsmf/etc ディレクトリに含まれています。
Sun Cluster HA for Solaris Containers のデバッグが有効であるかどうかを判断します。
デバッグが無効である場合、/etc/syslog.conf ファイルに daemon.notice が設定されています。
# grep daemon /etc/syslog.conf *.err;kern.debug;daemon.notice;mail.crit /var/adm/messages *.alert;kern.err;daemon.err operator # |
デバッグが無効である場合、/etc/syslog.conf ファイルを編集して、daemon.notice を daemon.debug に変更します。
Sun Cluster HA for Solaris Containers のデバッグが有効であることを確認します。
デバッグが有効である場合、/etc/syslog.conf ファイルに daemon.debug が設定されています。
# grep daemon /etc/syslog.conf *.err;kern.debug;daemon.debug;mail.crit /var/adm/messages *.alert;kern.err;daemon.err operator # |
syslogd デーモンを再起動します。
# pkill -1 syslogd |
/opt/SUNWsczone/sczbt/etc/config ファイルを編集して、DEBUG= を DEBUG=ALL または DEBUG=sczbt-rs に変更します。
# cat /opt/SUNWsczone/sczbt/etc/config # # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Usage: # DEBUG=<RESOURCE_NAME> or ALL # DEBUG=ALL # |
デバッグを無効にするには、これらの手順を逆にします。