Skip to content

Details_jpn

Tetsuya Mochizuki edited this page Feb 6, 2017 · 4 revisions

詳細説明 To English

CHMPX起動オプション

CHMPXプログラムの起動オプションについて以下にまとめます。

  • -h(help)
    ヘルプを表示します
  • -v(version)
    バージョン情報を表示します
  • -conf
    CHMPXの設定を行うコンフィグレーションファイル(INI形式、YAML形式、JSON形式)を指定します。-jsonオプションと排他です。
  • -json
    CHMPXの設定を行うコンフィグレーションをJSON文字列で指定します。-confオプションと排他です。
  • -ctlport
    起動するCHMPXがコンフィグレーションのどの設定値を利用するのかを明確にするために制御ポート番号を指定します。
    コンフィグレーションに同一のホスト名で複数のCHMPXプログラムを起動する場合、CHMPXプログラムは自信がどの設定値を読み込むのか曖昧なケースがあります。
    このようなコンフィグレーションを指定する場合に、設定値を明確にするために、制御ポート番号を指定します。
    制御ポート番号とは、クラスタ内で同一ホスト内で一意であるべき設定値です。
  • -d
    CHMPXプログラムのメッセージの出力レベルを指定します。出力レベルは、silent、err(error)、wan(warning)、info、dumpを指定できます。
  • -dfile
    CHMPXプログラムのメッセージを指定したファイルに出力します。

コンフィグレーション(INI形式ファイル、YAML形式ファイル、JSON形式ファイル、JSON文字列)については、こちら を参照してください。
-conf/-jsonオプションのいずれも指定されていない場合には、環境変数 CHMCONFFILE もしくは CHMJSONCONF が利用されます。
オプション、環境変数のいずれにもコンフィグレーションの指定がない場合にはエラーとなり、起動できません。

CHMPXプログラムの起動

CHMPXプログラムを起動するには以下のようにします。

chmpx [-conf <file> | -json <json>] [-ctlport <port>] [-d [slient|err|wan|msg|dump]] [-dfile <debug file path>]

以下は起動例です。

chmpx -conf server.ini -ctlport 8021 -d err -dfile /tmp/chmpx.log

コンフィグレーション

CHMPXプログラムおよびCHMPXライブラリが読み込むコンフィグレーションについて説明します。
コンフィグレーションをファイルとして指定した場合、コンフィグレーションファイル自体が更新されたとき、設定がリロードされます。以下ではリロードされる項目も併記しています。

GLOBAL(INI形式の場合には、[GLOBAL])セクション

CHMPXのコンフィグレーションの共通設定およびデフォルト設定値を指定します。

  • FILEVERSION
    コンフィグレーションのバージョン番号を数値で記述します。
  • DATE
    コンフィグレーションファイルの日付をRFC 2822形式で記述します。省略された場合には、UNIXTIME(0)として動作します。
  • GROUP
    CHMPXが属するクラスタの名称を指定します。特定のクラスタに接続するCHMPXノードは全て同じクラスタ名である必要があります。
  • MODE
    サーバーノード(SERVER)、スレーブノード(SLAVE)のいずれかを指定します。
    CHMPXプログラム起動時およびCHMPXライブラリの初期化時に制御ポート番号(-ctlportオプションなど)を指定している場合には、省略が可能です。
    本項目を省略した場合には、指定した制御ポート番号と同じサーバー/スレーブノードをリストから検出し、ノードのタイプが決定されます。
  • DELIVERMODE
    クラスタタイプの指定項目で、random(RANDOM)もしくはHASH(HASH)を指定します。
  • MAXCHMPX
    サーバーノード、スレーブノードの最大数を指定します。省略された場合には、1024となります。
  • REPLICA
    HASHタイプの場合において、多重化を指定します。省略された場合には、0(多重化しない)となります。
  • MAXMQSERVER
    サーバーノード、スレーブノードが使用するMQ数を指定します。省略された場合には、1となります。
  • MAXMQCLIENT
    サーバー/クライアントプログラムが使用する最大のMQ数(クライアント数×各クライアントの使用するMQ数)を指定します。省略された場合には1024となります。
  • MQPERATTACH
    サーバー/クライアントプログラムがMQをオープンした際に、あらかじめ予約されるMQ数を指定します。省略された場合には1となります。
  • MAXQPERSERVERMQ
    サーバーノード、スレーブノード用の各MQのキューの個数(各MQのキュー数)を指定します。省略された場合には16となります。
  • MAXQPERCLIENTMQ
    サーバー/クライアントプログラム用の各MQのキューの個数(各MQのキュー数)を指定します。省略された場合には1となります。
  • MAXMQPERCLIENT
    個々のサーバー/クライアントプログラム利用する最大のMQ数(MQ数/サーバーおよびクライアントプログラム数)を指定します。省略された場合には1となります。
  • MAXHISTLOG
    通信ログ履歴の最大サイズを32768以内で指定します。省略された場合は、8192となります。
  • PORT
    デフォルトのSocketのポート番号を指定します。
    この値は、SVRNODE/SLVNODEセクションにてポート番号の未指定のエントリーために利用される値です。
    この項目が省略された場合は、SVRNODE/SLVNODEセクションの各ノードは必ずPORTを指定している必要があります。
  • CTLPORT
    デフォルトの制御ポート番号を指定します。
    この値は、SVRNODE/SLVNODEセクションにて制御ポート番号の未指定のエントリーために利用される値です。
    この項目が、省略された場合はSVRNODE/SLVNODEセクションの各ノードは必ずCTLPORTを指定している必要があります。
  • SELFCTLPORT
    同一のホスト上に複数のサーバーノードのCHMPXプログラムを起動する場合、起動するエントリーを特定するために制御ポート番号を指定します。
    本項目は、省略可能であり、複数のサーバーノードが同一ホスト上に設定されていないことが前提です。
    また、CHMPXプログラム起動時およびCHMPXライブラリの初期化時に制御ポート番号(-ctlportオプションなど)を指定している場合には、省略が可能です。
  • RWTIMEOUT
    TCP/IP(Socket)通信における読み書きの1試行あたりのタイムアウト値(us)を指定します。
    省略された場合は、200usとなります。
  • RETRYCNT
    TCP/IP(Socket)通信における読み書き失敗時の再試行回数を指定します。
    省略された場合は、500回となります。
    RWTIMEOUTとRETRYCNTもデフォルトである場合には、200us×500=10msがタイムアウト値です。
  • CONTIMEOUT
    CHMPXプログラム起動時のTCP/IP(Socket)接続を行う際のタイムアウト値(us)を指定します。
    省略された場合は、500msとなります。
  • MQRWTIMEOUT
    サーバー/クライアントプログラムからCHMPX(サーバーノード、スレーブノード)へのIPC(MQ)通信における読み書きの1試行あたりのタイムアウト値(us)を指定します。
    省略された場合は、1000us(1ms)となります。
  • MQRETRYCNT
    サーバー/クライアントプログラムからCHMPX(サーバーノード、スレーブノード)へのIPC(MQ)通信における読み書き失敗時の再試行回数を指定します。
    省略された場合は、2回(合計3回)となります。
    MQRWTIMEOUTとMQRETRYCNTもデフォルトである場合、1000us×3=3msがタイムアウト値です。
  • MQACK
    MQ通信であるサーバー/クライアントプログラムからCHMPXプログラムへのIPC通信において、ACKを返信するか否かを指定します。
    CHMPXにおいて唯一のACKであり、デフォルトはNOとなっています。
  • SOCKTHREADCNT
    TCP/IP(Socket)受信・処理のための待機スレッド数を指定します。
    デフォルトは0です。0以上の数値を指定してください。
  • MQTHREADCNT
    MQ通信における受信・処理のための待機スレッド数を指定します。
    デフォルトは0です。0以上の数値を指定してください。
  • MAXSOCKPOOL
    CHMPXプログラムは、TCP/IP(Socket)通信におけるCHMPXプログラム間のSocketをプールできます。
    そのプール数を指定します。初期値は1です。1以上の数値を指定してください。
  • SOCKPOOLTIMEOUT
    Socketプールが2以上指定されている場合に、余剰(待機)Socketが一定時間以上利用されない場合にはそのセッションはクローズされます。
    このタイムアウト時間を秒数で指定します。デフォルトは60秒です。
  • DOMERGE
    サーバーノードがクラスタに参加し、サービスを開始するときに、データマージが必要であるか否かを示すフラグです。デフォルトはOFFとなっています。
    クラスタが、RANDOMタイプの場合には、OFF以外を選択できません。
  • AUTOMERGE
    サーバーノードでデータマージの必要な場合、本項目の値がONであれば、自動的にデータマージが開始されます。
    初期値はOFFとなっています。クラスタがRANDOMタイプの場合には、この項目は無視されます。
    本項目がOFFの場合、制御ポートから、SERVICEIN、MERGE、COMPMERGE(もしくはABORTMERGE)などのコマンドを使い、手動でサービス提供状態にします。
  • MERGETIMEOUT
    データマージ処理のタイムアウトを秒で指定します。
    デフォルトはタイムアウトなしになっています。
    0を設定した場合にはタイムアウトなしとなります。
  • SSL
    SSL通信を行うか否か(on/off)を指定します。
    この値は、SVRNODE/SLVNODEセクションにてSSLの指定のないノードのために利用される値です。
  • SSL_VERIFY_PEER
    SSL通信を行う場合において、接続元のクライアント証明書の確認をするか否か(on/off)を指定します。
    この値は、SVRNODE/SLVNODEセクションにてSSL_VERIFY_PEERの指定のないノードのために利用される値です。
  • CAPATH
    SSL通信を行う場合において、CA証明書のファイルパスもしくはディレクトリパスを指定します。この値は、SVRNODE/SLVNODEセクションにてCAPATHの指定のないノードのために利用される値です。
  • SERVER_CERT
    SSL通信を行う場合において、サーバー証明書のファイルパスを指定します。この値は、SVRNODE/SLVNODEセクションにてSERVER_CERTの指定のないノードのために利用される値です。
  • SERVER_PRIKEY
    SSL通信を行う場合において、サーバー証明書の秘密鍵のファイルパスを指定します。この値は、SVRNODE/SLVNODEセクションにてSERVER_PRIKEYの指定のないノードのために利用される値です。
  • SLAVE_CERT
    SSL通信を行う場合において、クライアント証明書のファイルパスを指定します。この値は、SVRNODE/SLVNODEセクションにてSLAVE_CERTの指定のないノードのために利用される値です。
  • SLAVE_PRIKEY
    SSL通信を行う場合において、クライアント証明書の秘密鍵のファイルパスを指定します。この値は、SVRNODE/SLVNODEセクションにてSLAVE_PRIKEYの指定のないノードのために利用される値です。
  • K2HFULLMAP
    CHMPX内部で利用しているK2HASHの設定値です。省略時にはonとなります。( K2HASH 参照)
  • K2HMASKBIT
    CHMPX内部で利用しているK2HASHの設定値です。省略時には8となります。( K2HASH 参照)
  • K2HCMASKBIT
    CHMPX内部で利用しているK2HASHの設定値です。省略時には4となります。( K2HASH 参照)
  • K2HMAXELE
    CHMPX内部で利用しているK2HASHの設定値です。省略時には8となります。( K2HASH 参照)

SVRNODE(INI形式の場合には、[SVRNODE])セクション

本セクションでは、クラスタのサーバーノードの設定を記述します。
INI形式では、[SVRNODE]セクションとして、1つのコンフィグレーションファイルに複数記述できます。
SVRNODEセクションの中に配列として以下の項目をサーバーノード単位で指定してください。

  • NAME
    サーバーノードのホスト名を記述します。記述は、FQDN、IPアドレスで指定してください。また簡易的な疑似正規表現も使うことができます。
    簡易的は疑似正規表現では、[]範囲の中に複数(セパレータは",")文字列を記載可能、また個々の文字列には"-"を使い範囲指定ができます。
  1. server-[x1,y1,z1].yahoo.co.jp
    ","区切りで複数指定
  2. server-[1-5].yahoo.co.jp
    "-"指定で数値範囲を指定(注意:大小を逆転は不可)
  3. server-[a-z].yahoo.co.jp
    "-"指定で文字範囲を指定(注意:a~zの範囲で指定)
  4. server-[A-Z].yahoo.co.jp
    "-"指定で文字範囲を指定(注意:A~Zの範囲で指定)
  5. server-[x1,y1,z1][1-5].yahoo.co.jp
    []を複数指定
  6. server-[1-2,a-c,X-Z].yahoo.co.jp
    ","で区切られた中に範囲を指定
  • PORT
    TCP/IP(Socket)通信におけるポート番号を指定します。
    省略する場合にはGLOBALセクションでデフォルト値の設定がされている必要があります。
  • CTLPORT
    制御ポート番号を指定します。
    省略する場合にはGLOBALセクションでデフォルト値の設定がされている必要があります。
  • SSL
    TCP/IP(Socket)通信においてSSL通信を行うか否か(on/off)を指定します。
    省略され、GLOBALセクションにも設定が存在しない場合には、offとなります。
  • SSL_VERIFY_PEER
    TCP/IP(Socket)通信においてSSL通信を行う場合、接続元のクライアント証明書の確認をするか否か(on/off)を指定します。
    省略され、GLOBALセクションにも設定が存在しない場合には、offとなります。
  • CAPATH
    SSL通信を行う場合において、CA証明書のファイルパスもしくはディレクトリパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。
  • SERVER_CERT
    SSL通信を行う場合において、サーバー証明書のファイルパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。
  • SERVER_PRIKEY
    SSL通信を行う場合において、サーバー証明書の秘密鍵のファイルパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。
  • SLAVE_CERT
    SSL通信を行う場合において、クライアント証明書のファイルパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。
  • SLAVE_PRIKEY
    SSL通信を行う場合において、クライアント証明書の秘密鍵のファイルパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。

SLVNODE(INI形式の場合には、[SLVNODE])セクション

本セクションでは、スレーブノードの設定を記述します。
INI形式では、[SLVNODE]セクションとして、1つのコンフィグレーションファイルに複数記述できます。
SLVNODEセクションの中に配列として以下の項目をスレーブノード単位で指定してください。

  • NAME
    スレーブノードのホスト名を記述します。記述は、FQDN、IPアドレス、localhost、127.0.0.1、::1などで指定してください。また正規表現を使うことができます。
  • CTLPORT
    制御ポート番号を指定します。省略する場合にはGLOBALセクションでデフォルト値の設定がされている必要があります。
  • CAPATH
    SSL通信を行う場合において、CA証明書のファイルパスもしくはディレクトリパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。
  • SLAVE_CERT
    SSL通信を行う場合において、クライアント証明書のファイルパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。
  • SLAVE_PRIKEY
    SSL通信を行う場合において、クライアント証明書の秘密鍵のファイルパスを指定します。省略され、GLOBALセクションにも設定が存在しない場合には、nullとなります。

その他

  • INCLUDEセクション(INI形式の場合のみ)
    INCLUDEキーワードが出現した場合、その値であるファイルパスのファイルをその行に読み込むことができます。

注意(通信)

1つのクラスタ内のCHMPX同士の通信は、コンフィグレーションに指定されたSVRNODE、SLVNODEに存在するホストのみ通信をできます。
これらに合致しないホストからの通信は拒否されます。

注意(Posix MQ)

CHMPXプログラムとサーバー/クライアントプログラム間のIPC通信にはPosix MQが利用されています。
環境によっては、指定したコンフィグレーションのMQ数、サイズが小さい場合があります。
CHMPX起動時にMQ数、サイズが少ない場合には起動できません。
このような場合には、以下のMQに関連する、いずれか、もしくは両方を大きくしてください。

# echo 1024 > /proc/sys/fs/mqueue/queues_max

もしくは

# echo 1024 > /proc/sys/fs/mqueue/msg_max

(上記の数値(1024)はサンプルです。実際に必要になる値をご利用ください。)

CHMPXがMQ数により起動に失敗する場合は、その旨のメッセージが出力されますので、-dオプションでメッセージ出力をしてみてください。
必要となる上記いずれかの値を大きくするように指摘されている内容を表示できます。
もしくは、ツール chmconftest にコンフィグレーションを読み込ませ、必要数のMQ数、サイズを確認できます。

Clone this wiki locally