この節では、マニュアル内で誤って記載されている情報を示します。
『Sun Cluster 3.0 Hardware Guide』では次の手順が誤っているか、または記載されていません。
第 7 章の「Configuring StorEdge A3500 Disk Drives」には誤りがあります。「Increase the drive capacity of a LUN」というタイトルは誤りです。LUN のドライブ容量を増やすことはできません。ただし、ドライブグループのサイズを増やすことはできます。従って、ディスクセットやディスクグループから LUN を取り外す必要はありません。この作業は「Increase the size of the drive group. Follow the same procedure used in a non-cluster environment (ドライブグループのサイズを増やします。非クラスタ環境と同様の手順に従ってください)」と読み替えてください。
Sun Cluster 3.0 AnswerBook には、Cluster Configuration Repository (CCR) に冗長ディスクパスを導入せずにディスクを再配線する手順が記載されていません。
クラスタ内部でデバイスを再配線する場合には、クラスタが新しいデバイス構成を認識するようにしなければなりません。クラスタが新しい構成を認識し、デバイスを確実に使用できるようにするには、次の手順に従います。
次の手順で、ディスクケーブルをノード内の新しいアダプタに移動します。
関係するディスクの I/O をすべて休止します。
古いアダプタからケーブルを取り外します。
ローカルノードで cfgadm(1M) コマンドを実行し、移動に関連するすべてのドライブの構成を解除します。
または、次のコマンドでノードを再起動します。
# reboot -- -r |
ローカルノードで devfsadm -C コマンドを実行し、Solaris のデバイスリンクをクリーンアップします。
ローカルノードで scdidadm -C コマンドを実行し、DID デバイスパスをクリーンアップします。
新しいアダプタにケーブルを接続します。
ローカルノードで cfgadm コマンドを実行し、ドライブを新しい場所に構成します。
または、次のコマンドでノードを再起動します。
# reboot -- -r |
scgdevs コマンドを実行し、新しい DID デバイスパスを追加します。
ディスクケーブルを、あるノードから別のノードに移動するには次の手順を使用します。
すべてのボリュームマネージャーとデータサービスの構成から、削除するパスへの参照をすべて削除します。
関連するディスクへの I/O をすべて休止します。
古いノードからケーブルを取り外します。
古いノードで cfgadm コマンドを実行し、移動に関連するすべてのドライブの構成を解除します。
または、次のコマンドでノードを再起動します。
# reboot -- -r |
ローカルノードで devfsadm -C コマンドを実行し、Solaris のデバイスリンクをクリーンアップします。
ローカルノードで scdidadm -C コマンドを実行し、DID デバイスパスをクリーンアップします。
新しいノードにケーブルを接続します。
新しいノードで cfgadm コマンドを実行し、ドライブを新しい場所に構成します。
または、次のコマンドでノードを再起動します。
# reboot -- -r |
新しいノードで devfsadm コマンドを実行し、新しい Solaris デバイスリンクを作成します。
新しいノードで scgdevs コマンドを実行し、新しい DID デバイスパスを追加します。
新しいノードで必要なボリューム管理ソフトウェアとデータサービスの構成に必要なパスを追加します。
データサービスを構成するときには、ノードのフェイルオーバーの設定が新しい構成を反映するように設定されていることを確認してください。
この手順が正しく行われていないと、次回に scdidadm -r コマンドや scgdevs コマンドを実行した時にエラーが記録されることがあります。正しいデバイス構成を反映するように、次の手順でクラスタソフトウェアを更新してください。
ケーブル構成が意図した通りであることを確認します。ケーブルが古いノードから取り外してあるかどうかを確認します。
古いノードが必要なボリューム管理ソフトウェアやデータサービスの構成から削除されていることを確認します。
古いノードで cfgadm コマンドを実行し、移動に関連するすべてのドライブの構成を解除します。
または、次のコマンドでノードを再起動します。
# reboot -- -r |
ケーブルを取り外したノードで devfsadm -C コマンドを実行します。
ケーブルを取り外したノードで scdidadm -C コマンドを実行します。
新しいノードで cfgadm コマンドを実行し、ドライブを新しい場所に構成します。
または、次のコマンドでノードを再起動します。
# reboot -- -r |
新しいノードで scgdevs コマンドを実行し、新しい DID デバイスパスを追加します。
新しいノードで scdidadm -R デバイス名 コマンドを実行し、SCSI の予約が正しい状態にあるかどうかを確認します。
『Sun Cluster 3.0 データサービス開発ガイド』の付録 B のサンプルコードには、次の問題があります。
コードリストの改行の多くが誤っており、特に長いコメントで顕著です。正しい改行で見るためには PDF 版のマニュアルを表示してください。
この付録のメソッドスクリプトのリストでは、ほとんどの変数の宣言が抜けています。各メソッドでは main() で次の変数が宣言されていなければなりません。
SYSLOG_TAG=$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME |
この変数は、logger() コマンドのコード例の全体で使用されています。
『Sun Cluster 3.0 の概念』では次の点に注意する必要があります。
『Sun Cluster 3.0 の概念』には、データサービスの開発者やシステム管理者が、アプリケーショントラフィックにクラスタインターコネクトを利用する方法が説明されていません。以下を参照してください。
クラスタでは、ノード間に複数のネットワーク接続が存在してクラスタインターコネクトを形成しなければなりません。クラスタリングソフトウェアは、複数のインターコネクトを高可用性とパフォーマンスの向上のために利用します。内部のトラフィックでは (たとえばファイルシステムのデータやスケーラブルサービスのデータ)、メッセージは利用可能なすべてのインターコネクトの間でラウンドロビンによりストライプ化されます。
クラスタインターコネクトは、アプリケーションからもノード間の可用性の高い通信のために利用できます。たとえば、分散アプリケーションでは、構成要素が異なるノードで実行されていて通信が必要なことがあります。パブリックインターコネクトの代わりにクラスタインターコネクトを使用することで、これらの接続は個別リンクのエラーを回避できます。
ノード間の通信にクラスタインターコネクトを使用するには、アプリケーションは、クラスタをインストールした際に構成されたプライベートホスト名を使用する必要があります。たとえば、ノード 1 のプライベートホスト名が clusternode1-priv である場合には、ノード 1 とクラスタインターコネクトで通信する際にこの名前を使用します。この名前で開いた TCP ソケットは、クラスタインターコネクトを経由して転送され、ネットワークエラーが発生した際には透過的に再転送できます。
プライベートホスト名はインストール時に構成できるため、その時にはクラスタインターコネクトに任意の名前を使用できます。実際の名前は、scha_cluster_get(3HA) に scha_privatelink_hostname_node 引数を指定することで取得できます。
アプリケーションレベルでクラスタインターコネクトを使用する場合は、各ノードのペアの間で単一のインターコネクトを使用しますが、異なるノードのペアに対しては、可能であれば独立したインターコネクトを使用します。たとえば、3 ノードで実行中のアプリケーションがあり、クラスタインターコネクトで通信しているとします。この場合、ノード 1 と 2 の間の通信には hme0 インタフェースが使用され、ノード 1 と 3 の通信には qfe1 インタフェースが使用されることになります。つまり、アプリケーションが任意の 2 ノード間で通信する場合は、単一のインターコネクトに限られますが、内部クラスタリングの通信は、すべてのインターコネクトでストライプ化されます。
アプリケーションは、インターコネクトを内部クラスタリングのトラフィックと共有しており、従って、アプリケーションが利用可能な帯域幅は、他のクラスタリングトラフィックが使用している帯域幅に依存していることに注意してください。エラーが発生した場合、内部トラフィックは残っているインターコネクトにラウンドロビンできますが、アプリケーションの接続でインターコネクトにエラーが出た場合は、稼動中のインターコネクトに切り替わります。
2 種類のアドレスがクラスタインターコネクトをサポートしており、プライベートホスト名に gethostbyname(3N) を実行すると、通常 2 つの IP アドレスを返します。最初のアドレスは論理 pairwise アドレスと呼ばれ、2 番目のアドレスは論理 pernode アドレスと呼ばれます。
各ノードのペアには、独立した論理 pairwise アドレスが割り当てられています。この小規模な論理ネットワークが、接続のフェイルオーバーをサポートしています。各ノードには固定 pernode アドレスも割り当てられています。つまり、clusternode1-priv の論理 pairwise アドレスはノードごとに異なっていますが、clusternode1-priv の論理 pernode アドレスは各ノードで同じです。しかし、ノードは pairwise アドレスを自分で持っているわけではないため、ノード 1 に gethostbyname(clusternode1-priv) を実行しても、戻るのは論理 pernode アドレスだけです。
アプリケーションが、クラスタインターコネクトによる接続を受け入れてから IP アドレスを確認する際には、セキュリティ上の理由から、gethostbyname で返される最初の IP アドレスだけではなく、すべての IP アドレスを検査する必要があることに注意してください。
アプリケーション全体にわたって一貫した IP アドレスが必要な場合は、クライアントとサーバーの両側で pernode アドレスをバインドするようにアプリケーションを構成し、すべての接続が pernode アドレスで行き来するようにしてください。
『Sun Cluster 3.0 データサービスのインストールと構成』の第 5 章「Sun Cluster HA for Apache のインストールと構成」では、Apache Web Server を Apache の Web サイト (http://www.apache.org) からインストールする方法について説明していますが、Apache Web Server は Solaris 8 オペレーティング環境の CD-ROM からインストールすることもできます。
Apache のバイナリは SUNWapchr、SUNWapchu、SUNWapchd という 3 つのパッケージに含まれており、SUNWCapache パッケージのメタクラスタを構成しています。SUNWapchr は、SUNWapchu より先にインストールする必要があります。
Web サーバーのバイナリは、各クラスタノードのローカルファイルシステムか、クラスタファイルシステムに置きます。
この手順では、Sun Cluster HA for Apache データサービスを Solaris 8 オペレーティング環境 CD-ROM に含まれている Apathe Web Server で使用する場合に必要な手順について説明します。
Apache パッケージの SUNWapchr、SUNWapchu、SUNWapchd をインストールしていない場合は、インストールします。
パッケージがすでにインストールされているかどうかを確認するには pkginfo(1) コマンドを実行します。
# pkgadd -d Solaris_8_Product_directory SUNWapchr SUNWapchu SUNWapchd ... Installing Apache Web Server (root) as SUNWapchr ... [ verifying class initd ] /etc/rc0.d/K16apache linked pathname /etc/rc1.d/K16apache linked pathname /etc/rc2.d/K16apache linked pathname /etc/rc3.d/S50apache linked pathname /etc/rcS.d/K16apache linked pathname ... |
SUNWapchr パッケージの一部としてインストールした、実行開始/停止制御スクリプトを無効にします。
データサービスを構成した後は、Sun Cluster HA for Apache データサービスが Apache アプリケーションの起動と停止を行うため、このスクリプトを無効にする必要があります。次の手順を実行してください。
次の例では、開始制御スクリプトの名前の最初の文字を大文字から小文字に変更しています。このスクリプトの名前は、通常のシステム管理の方針に合わせて、任意の名前に変更しても構いません。
# ls -1 /etc/rc?.d/*apache /etc/rc0.d/K16apache /etc/rc1.d/K16apache /etc/rc2.d/K16apache /etc/rc3.d/S50apache /etc/rcS.d/K16apache # mv /etc/rc0.d/K16apache /etc/rc0.d/k16apache # mv /etc/rc1.d/K16apache /etc/rc1.d/k16apache # mv /etc/rc2.d/K16apache /etc/rc2.d/k16apache # mv /etc/rc3.d/S50apache /etc/rc3.d/s50apache # mv /etc/rcS.d/K16apache /etc/rcS.d/k16apache # ls -1 /etc/rc?.d/*apache /etc/rc0.d/k16apache/etc/rc1.d/k16apache/etc/rc2.d/k16apache/etc /rc3.d/s50apache/etc/rcS.d/k16apache |
Sun Cluster 3.0 ソフトウェアと共に提供される各データサービスには、新しいマニュアルページ (英語) が含まれています。データサービスのマニュアルページには、SUNW.apache(5)、SUNW.dns(5)、SUNW.iws(5)、SUNW.nfs(5)、SUNW.nsldap(5)、SUNW.oracle_listener(5)、SUNW.oracle_server(5)、SUNW.HAStorage(5)、scalable_service(5) があります。これらのマニュアルページには、各データサービスが使用する標準および拡張プロパティが説明してあります。