Oracle Solaris Cluster リファレンスマニュアル

印刷ビューの終了

更新: 2015 年 9 月
 
 

scha_cluster_get_zone (3HA)

名前

scha_cluster_open, scha_cluster_open_zone, scha_cluster_get, scha_cluster_get_zone, scha_cluster_close - クラスタに関する情報へのアクセスおよび取得

形式

cc [flags…] –I /usr/cluster/include file –L /usr/cluster/lib 
     –l scha#include <scha.h>scha_err_t scha_cluster_open(
     scha_cluster_t *handle);
scha_err_t scha_cluster_open_zone(const char *cluster, 
     scha_cluster_t *handlep);
scha_err_t scha_cluster_get(scha_cluster_t handle, const char **
     tag, ...);
scha_err_t scha_cluster_get_zone(const char *cluster, 
     scha_cluster_t handlep, const char *cluster_tag, ...);
scha_err_t scha_cluster_close(scha_cluster_t handle);

説明

scha_cluster_open()scha_cluster_get()、および scha_cluster_close() 関数は、クラスタに関する情報を取得するために一緒に使用します。

scha_cluster_open() はクラスタアクセスを初期化し、scha_cluster_get() が使用するアクセスハンドルを返します。handle 引数は、関数が返す値を格納する変数のアドレスです。

scha_cluster_get() 関数は、tag 引数に指定されるクラスタの情報にアクセスします。handle 引数は、scha_cluster_open() の事前呼び出しによって返される値です。tag 引数は、scha_tags.h ヘッダーファイルのマクロで定義される文字列値です。タグに続く引数は、tag 引数の値によって異なります。

情報の取得元となるクラスタノードを指定するために、tag 引数のあとに追加の引数を指定する必要がある場合もあります。引数リストの最後の引数は、tag 引数で指定される情報の格納に適した変数型にする必要があります。これは出力引数で、クラスタの情報を格納します。関数の実行に失敗した場合、出力引数に値は返されません。scha_cluster_get() 関数が返す情報を格納するために割り当てられたメモリーは、scha_cluster_get() 関数に使用したハンドルで scha_cluster_close() を呼び出すまで、そのまま残ります。

scha_cluster_close() は、以前の scha_cluster_get() 関数の呼び出しから返された handle 引数を取ります。この関数は、このハンドルを無効にして、このハンドルで行われた scha_cluster_get() 呼び出しが返した値に割り当てられたメモリーを解放します。値を返す必要が生じるごとに、個々の get 呼び出しでメモリーが割り当てられる点に注意してください。ある呼び出しで値を返すために割り当てられたメモリーが、以降の呼び出しによって上書きされたり、再利用されることはありません。

scha_cluster_open_zone() 関数と scha_cluster_get_zone() 関数はそれぞれ、scha_cluster_open() および scha_cluster_get() と同じ目的で使用され、追加の cluster 引数で、リソースグループが存在し、操作の対象となるゾーンクラスタの名前を指定します。これらの関数は、大域ゾーンで実行されるコードを特定のゾーンクラスタで動作させる必要がある場合に便利です。ゾーンクラスタ内で、異なるゾーンクラスタにアクセスするために使用することはできません。

scha_cluster_open_zone() または scha_cluster_get_zone()cluster 引数が NULL の場合、クエリーは、呼び出しが実行されるクラスタで実行されます (つまり、NULL 引数での呼び出しは、それぞれ scha_cluster_open() または scha_cluster_get() と等しくなります)。

scha_cluster_open_zone() から返されたハンドルを閉じるには、scha_cluster_close() を使用します。cluster 引数は不要です。

tag 引数に使用できるマクロ

次に、scha_tags.h に定義されており、tag 引数に使用できるマクロを示します。ここでは出力引数および追加引数の型を説明します。構造体と enum 型は、scha_calls(3HA) で説明されています。

SCHA_ALL_LOADLIMITS

出力引数の型は scha_str_array_t** です。

このマクロは、クラスタに定義されているすべての loadlimit 名を返します。

SCHA_ALL_NODEIDS

出力引数の型は scha_uint_array_t** です。

返される値は、クラスタ内のすべてのノードの数値識別子です。

SCHA_ALL_NODENAMES

出力引数の型は scha_str_array_t** です。

返される値は、クラスタ内のすべてのノードの名前です。

SCHA_ALL_PRIVATELINK_HOSTNAMES

出力引数の型は scha_str_array_t** です。

このマクロは、クラスタインターコネクト上にノードのアドレスを指定するための、すべてのクラスタノードのホスト名を返します。

SCHA_ALL_PSTRINGS

出力引数の型は scha_str_array_t** です。

このマクロは、クラスタに定義されたすべてのプライベート文字列の名前を返します。プライベート文字列の詳細は、clpstring(1CL) のマニュアルページを参照してください。

SCHA_ALL_RESOURCEGROUPS

出力引数の型は scha_str_array_t** です。

返される値は、クラスタ上で管理されているすべてのリソースグループの名前です。

SCHA_ALL_RESOURCETYPES

出力引数の型は scha_str_array_t** です。

返される値は、クラスタに登録されているすべてのリソースタイプの名前です。

SCHA_CLUSTERNAME

出力引数の型は char** です。

返される値は、クラスタの名前です。

SCHA_HARD_LOADLIMIT

出力引数の型は scha_str_array_t** です。

このマクロは、指定された範囲名に対し、クラスタのすべてのノードの強い負荷制限値を返します。負荷制限の名前文字列である、char * 型の追加の引数が必要です。

文字列配列の出力の各要素の書式は "%s=%d" で、左側の文字列は nodename、右側の整数はそのノードで指定されている制限名に対する強い負荷制限値です。強い制限値を指定しない場合、強い制限値の値として -1 が表示されます。

SCHA_LOADLIMIT_PROPS

出力引数の型は scha_str_array_t** です。

このマクロは、指定された制限名に対し、クラスタのすべてのノードの強い負荷制限値と弱い負荷制限値を (/ で区切って) 返します。負荷制限の名前文字列である、char * 型の追加の引数が必要です。

文字列配列の出力の各要素の書式は "%s=%d/%d" で、左側の文字列は nodename、最初の整数は弱い制限値、2 番目の整数は強い制限値です。強い制限値を指定しない場合、強い制限値の値として -1 が表示されます。弱い制限値を指定しない場合、弱い制限値の値として 0 が表示されます。

SCHA_LOADLIMITS_NODE

出力引数の型は scha_str_array_t** です。

このマクロは、特定のノードの負荷制限値 (/ 区切り) と制限名を返します。nodename である、char * 型の追加の引数が必要です。

文字列配列の出力の各要素の書式は "%s=%d/%d" で、文字列は指定したノードに定義されている制限名、最初の整数は弱い制限値、2 番目の整数は強い制限値です。強い制限値を指定しない場合、強い制限値の値として -1 が表示されます。弱い制限値を指定しない場合、弱い制限値の値として 0 が表示されます。

SCHA_NODEID_LOCAL

出力引数の型は uint_t* です。

返される値は、コマンドを実行するノードの数値識別子です。

SCHA_NODEID_NODENAME

出力引数の型は uint_t* です。追加引数の型は char * です。このマクロに必要な追加引数には、クラスタノードの名前を指定します。

返される値は、指定した名前に該当するノードの数値識別子です。

SCHA_NODENAME_LOCAL

出力引数の型は char** です。

返される値は、関数が実行されたクラスタノードの名前です。

SCHA_NODENAME_NODEID

出力引数の型は char** です。追加引数の型は uint_t です。追加引数には、数値式のクラスタノード識別子を指定します。

返される値は、数値識別子で指定されるクラスタノードの名前です。

SCHA_NODESTATE_LOCAL

出力引数の型は scha_node_state_t* です。

返される値は、コマンドが実行されたノードの状態に応じて SCHA_NODE_UP または SCHA_NODE_DOWN となります。

SCHA_NODESTATE_NODE

出力引数の型は scha_node_state_t* です。追加引数の型は char* です。このマクロに必要なフラグ無し追加引数には、クラスタノードの名を指定します。

返される値は、指定のノードの状態に応じて SCHA_NODE_UP または SCHA_NODE_DOWN となります。

SCHA_PRIVATELINK_HOSTNAME_LOCAL

出力引数の型は char** です。

このマクロは、クラスタインターコネクト上にコマンドを実行するノードのアドレスを指定するためのホスト名を返します。

SCHA_PRIVATELINK_HOSTNAME_NODE

出力引数の型は char** です。追加引数の型は char * です。このマクロに必要なフラグ無し追加引数には、クラスタノードの名前が入ります。

このマクロは、クラスタインターコネクト上に指定のノードのアドレスを指定するためのホスト名を返します。

SCHA_PSTRING

出力引数の型は char** です。

このマクロは、プライベート文字列の平文値を返します。プライベート文字列の名前を指定する、char * 型の追加の引数が必要です。スーパーユーザー以外のユーザーがこのクエリータグを使用するには、solaris.cluster.modify 役割に基づくアクセス制御 (RBAC) の承認が必要です。プライベート文字列の詳細は、clpstring(1CL) のマニュアルページを参照してください。

SCHA_RESOURCE_SECURITY

出力引数の型は char** です。

このマクロは、resource_security クラスタプロパティーの現在の設定を返します。

SCHA_RG_FAILOVER_LOG

出力引数の型は scha_str_array_t** です。追加引数の型は uint_t です。追加引数は、取得するフェイルオーバー履歴の日数を示す 1 から 7 まで (両端の値を含む) の整数です。

このマクロは、リソースグループのスイッチオーバーおよびフェイルオーバーイベントのログを返します。文字列配列の各文字列には、セミコロンで区切られた次のフィールドが含まれています。

resource-group-name;source-nodes;target-nodes;time-stamp
  • source-nodes フィールドは、リソースグループのフェイルオーバー元または手動切り替え元となったノードをコンマで区切ったリストです。空の source-nodes フィールドは、リソースグループが手動で、またはクラスタのブート中にオンラインに切り替えられたイベントを示しています。

  • target-nodes フィールドは、リソースグループのフェイルオーバー先または手動切り替え先となったノードをコンマで区切ったリストです。空の target-nodes フィールドは、リソースグループオフラインになったことを示しています。

  • time-stamp 値は ctime 形式で書き込まれます。出力形式の例については、scha_cluster_get(1HA) のマニュアルページを参照してください。ctime() 関数の詳細は、ctime(3C) のマニュアルページを参照してください。

SCHA_SOFT_LOADLIMIT

出力引数の型は scha_str_array_t** です。

このマクロは、指定された範囲名に対し、クラスタのすべてのノードの弱い負荷制限値を返します。負荷制限の名前文字列である、char * 型の追加の引数が必要です。

文字列配列の出力の各要素の書式は "%s=%d" で、左側の文字列は nodename、右側の整数はそのノードで指定されている制限名に対する弱い負荷制限値です。弱い制限値を指定しない場合、弱い制限値の値として 0 が表示されます。

SCHA_SYSLOG_FACILITY

出力引数の型は int* です。

このマクロは、RGM がログメッセージに使用する syslog(3C) 機能の番号を返します。返される値は 24 です。これは LOG_DAEMON 機能の値に対応しています。

エラー

SCHA_ERR_NOERR

関数の実行に成功。

その他のエラーコードについては、scha_calls(3HA) を参照してください。

使用例 1 scha_cluster_get() 関数の使用

次の例では、scha_cluster_get() 関数を使用して、全クラスタノードの名前を取得します。この関数を使用すると、ノードが稼働しているかどうかもわかります。

このコード例では、制限が構成されている各クラスタノードに対し、mylimit という limitname に構成されている弱い負荷制限値と強い負荷制限値も出力されます。各ノードの負荷制限値の出力形式は nodename=softlimit/[ hardlimit] で、強い制限値が設定されていない場合、hardlimit の値は無制限 (-1) です。

#include <scha.h>
#include <stdio.h>
#include <stdlib.h>

main()
{
        scha_err_t              err;
        scha_node_state_t       node_state;
        scha_str_array_t        *all_nodenames;
        scha_cluster_t          handle;
        int                     ix;
        const char              *str;
        scha_str_array_t        *load_limits;

        err = scha_cluster_open(&handle);
        if (err != SCHA_ERR_NOERR) {
                fprintf(stderr, "FAILED: scha_cluster_open()0);
                exit(err);
        }

        err = scha_cluster_get(handle, SCHA_ALL_NODENAMES, &all_nodenames);
        if (err != SCHA_ERR_NOERR) {
                fprintf(stderr, "FAILED: scha_cluster_get()0);
                exit(err);
        }

        for (ix = 0; ix < all_nodenames->array_cnt; ix++) {
                err = scha_cluster_get(handle, SCHA_NODESTATE_NODE,
                    all_nodenames->str_array[ix], &node_state);
                if (err != SCHA_ERR_NOERR) {
                        fprintf(stderr, "FAILED: scha_cluster_get()"
                            "SCHA_NODESTATE_NODE0);
                        exit(err);
                }

                switch (node_state) {
                case SCHA_NODE_UP:
                        str = "UP";
                        break;
                case SCHA_NODE_DOWN:
                        str = "DOWN";
                        break;
                }

                printf("State of node: %s value: %s\n",
                    all_nodenames->str_array[ix], str);
        }
        err = scha_cluster_get(handle, SCHA_LOADLIMIT_PROPS, "mylimit",
            &load_limits);

        printf("\n\nLoad limits settings for limitname 'mylimit':\n\n");

        for (ix = 0; ix < load_limits->array_cnt; ix++) {
            printf("%s\n", load_limits->str_array[ix]);
        }
}

ファイル

/usr/cluster/include/scha.h

インクルードファイル

/usr/cluster/lib/libscha.so

ライブラリ

属性

次の属性の説明は、attributes(5) を参照してください:

属性タイプ
属性値
使用条件
ha-cluster/developer/api
インタフェースの安定性
発展中

関連項目

scha_cluster_get(1HA), scha_calls(3HA), scha_cluster_getlogfacility(3HA ), scha_cluster_getnodename(3HA), scha_strerror(3HA), syslog(3C), attributes(5), rg_properties(5)