3.0バージョン向けの内容です。前のバージョンのマニュアルはこちらを参照ください。corosync実行形式の設定ファイル書式/etc/corosync/corosync.conf説明corosync.confはcorosync実行部を制御するのに必要な種々のパラメータを規定します。空白行や#で始まる行は無視されます。設定ファイルは括弧で囲まれたトップレベルディレクティブから構成されています。有効なものは以下です。}totemプロトコルの設定オプションを記載するトップレベルのディレクティブです。}ログの設定オプションを記載するトップレベルのディレクティブです。}クォーラムの設定オプションを記載するトップレベルのディレクティブです。}クラスタ内のノードの設定オプションを記載するトップレベルのディレクティブです。}システムの設定オプションを記載するトップレベルのディレクティブです。}リソース設定の設定オプションを記載するトップレベルのディレクティブです。}libnozzleデバイスの設定オプションを記載するトップレベルのディレクティブです。totemのサブディレクティブのinterfaceはudpおよびknetトランスポートのオプションです。knetでは、複数のインターフェイスサブセクションのシステム上の各knetリンクのパラメーターを定義します。udpuの場合、インターフェイスセクションは不要であり、nodelistを使用してクラスターノードを定義することをお勧めします。linknumberインターフェイスのリンク番号を指定します。knetプロトコルを使用する場合、各インターフェイスは、どのリンクにどのインターフェイスを使用するかをメンバーシッププロトコルに対して一意に識別するために、個別のリンク番号を指定する必要があります。リンク番号は0から開始する必要があります。udpの場合、サポートされるリンク番号は0のみです。knet_link_priorityknetが「パッシブ」モードで使用される場合のリンクの優先順位を指定します。(以下のlink_modeを参照して下さい。)knet_ping_intervalknetリンクでのpingの間隔を指定します。knet_ping_intervalとknet_ping_timeoutはペアです。一方が指定されている場合、もう一方も指定する必要があります。ない場合はトークンタイムアウトから計算されて設定されます。2))knet_ping_timeoutこの時間内にpingが受信されない場合、knetリンクは無効と宣言されます。knet_ping_timeoutはペアです。一方が指定されている場合、もう一方も指定する必要があります。ない場合は、トークンタイムアウトから計算されて設定されます。knet_pong_countです)knet_ping_precision平均リンク遅延の計算に使用される遅延の値の数。(デフォルト2048サンプルです。(デフォルト5)knet_transportknetが使用するIPトランスポート。有効な値は「sctp」または「udp」です。only)corosync実行する時にバインドするネットワークアドレスを指定します。bindnetaddrはシステムで設定するIPアドレス、またはネットワークアドレスである必要があります。bindnetaddrは192.168.5.92、または192.168.5.0を設定します。同様に、ローカルインターフェースが192.168.5.92でネットマスクが255.255.255.192であれば、bindnetaddrは192.168.5.92、または192.168.5.64を設定します。IPv6通信でも使用できます。この場合IPV6ネットワークが使用されます。正確なアドレスを指定する必要があり、IPv4の場合のように特定のサブネット内のネットワークインターフェイスの自動選択はありません。IPv6ネットワークを使用する場合、nodelistのnodeidフィールドを指定して下さい。only)これはオプションであり、yesに設定できます。yesに設定すると、ブロードキャストアドレスが通信に使用されます。このオプションが設定されている場合、mcastaddrは設定しないでください。only)corosync実行部が使用するマルチキャストアドレスです。ほとんどのネットワークではデフォルトのままで動作しますが、ネットワーク管理者にはマルチキャストアドレスの使用を通知すべきです。224.x.x.xはコンフィグ用の特別なアドレスなので使用しないでください。IPv6通信を利用する場合でもIPv6マルチキャストを利用できます。この場合、nodelistのnodeidフィールドが設定されている必要があります。cluster_nameオプションを使用している場合、このオプションは必要はありません。両方のオプションを使用した場合は、mcastaddrが優先されます。only)udpのポート番号を設定します。異なる番号を使用すれば、corosyncサービス用に同じマルチキャストアドレスを使用できます。corocyncはマルチキャスト受信用と、送信用(mcastport-1)の2つのudpポートを使用する事にご注意ください。同じネットワーク上に、同じマルチキャストアドレスを使用する複数のクラスタがある場合は、異なるポート番号を使用ください。Live)を設定します。ルーティングされたネットワークを使用する場合には、デフォルト値の1では小さすぎます。有効な値は0から255です。このオプションは、マルチキャスト通信の場合にのみ有効です。totemディレクティブでは、7つの設定オプションがあり、そのうち1つは必須、5つは任意、1つはIPv6を有効にした場合の必須設定です。必須のディレクティブはtotem設定のバージョンを制御します。任意のオプションディレクティブ(IPv6を使っていない場合)ではノードの特定を制御したり、セキュリティと認証、冗長リングモードのオペレーション、最大ネットワークMTUフィールドを制御します。version設定ファイルのバージョンを指定します。このディレクティブで現在有効な値は2だけです。clear_node_high_bitnodeidが指定されていない場合のみ関係する、任意の設定項目です。一部のcorosyncクライアントでは、0以上の符号付き32ビットnodeidが必要ですが、nodeidの生成時には、デフォルトではIPv4アドレス空間の32ビット全てを使用しています。このオプションをyesにすると、最高位のビットを0にすることで、nodeidを正の符号付き32ビット整数型にします。注意:ローリングアップデートなど、このオプションがクラスタの1つサブネットでのみ有効の場合には、クラスターの挙動は予期できなくなります。crypto_modelknetが使用する暗号化ライブラリを指定します。オプションはnssとopensslです。デフォルトはnssです。crypto_hashすべてのメッセージを認証するために使用するHMAC認証を指定します。sha1、sha256、sha384、およびsha512です。暗号化された送信は、knetトランスポートでのみサポートされます。デフォルトの設定はnone(認証なし)です。crypto_cipherすべてのメッセージを暗号化するために使用する暗号方式を指定します。有効な値は、なし(暗号化なし)、aes256、aes192、およびaes128です。crypto_cipherを有効にするには、crypto_hashも有効にする必要があります。暗号化された送信は、knetトランスポートでのみサポートされます。none.デフォルトの設定はnone(暗号化なし)です。secauthオプションが明示的に設定されていない限り、crypto_cipher=aes256およびcrypto_hash=sha256を意味します。暗号化された送信は、knetトランスポートでのみサポートされます。デフォルトの設定はoffです。keyfileこれは、Totemプロトコル内で使用されるデータの認証と暗号化に使用される共有キーファイルを指定します。デフォルトのファイル名は/etc/corosync/authkeyです。keyauthkeyファイルの代わりに構成に保存された共有キー。このオプションはkeyfileオプションよりも優先順位が低いため、keyfileが指定されていない場合にのみ使用されます。セキュリティ上の理由から、このオプションの使用は推奨されません。link_modeKronosnetモードを指定します。これは、パッシブ、アクティブ、またはrr(ラウンドロビン)です。パッシブ:最も優先度の低いアクティブリンクが使用されます。1つ以上のリンクが同じ優先順位を共有している場合、最も低いリンクIDを持つものが使用されます。アクティブ:すべてのアクティブなリンクが同時にトラフィックを送信するために使用されます。リンクの優先順位は無視されます。rr:ラウンドロビンポリシー。各パケットは順番に次のアクティブリンクに送信されます。インターフェイスディレクティブが1つだけ指定されている場合、passiveが自動的に選択されます。Kronosnetで許可されるインターフェースディレクティブの最大数は8です。他のトランスポートの場合は1です。netmtuネットワークの最大送信単位を指定します。通常フレームのMTUである1500以上の値を指定するには、イーサネットデバイスがラージまたはジャンボフレームに対応している必要があります。ネットワーク中にラージフレームに対応していないデバイスがあると、このプロトコルは正常に動作しません。MTUのサイズは1500以上の値を指定する必要があります。ラージフレーム対応のNICやスイッチで、最大フレームサイズがIPヘッダ含めて9000MTUに対応するとしているものには注意して下さい。netmtuとホストMTUに9000を指定すると、totemは9000バイトすべてをフレームに使います。Linuxは18バイトのヘッダを加えるので、フレームサイズ全体では9018になります。このため、このデータサイズではハードウェアによっては正常に動作しません。netmtuが8982であれば動作するラージフレームのデバイスがある事を確認しています。実際には4500バイトのフレームサイズ対応でも、ラージフレーム対応とうたうメーカーもあります。ネットワークが頻繁に再構成されていると、マルチキャストのトラフィックを送信する際に、デバイスによってはラージフレームに対応しないかもしれません。ラージフレーム対応にあたっては、ハードウェア選定に注意してください。この値のデフォルトは1500です。transportこのディレクティブは、使用されるトランスポートメカニズムを制御します。デフォルトはknetです。トランスポートタイプは、udpuまたはudpに設定することもできます。knetだけでノードごとに暗号化または複数のインターフェイスを利用できます。cluster_nameクラスターの名前を指定し、マルチキャストアドレスの自動生成に使用されます。config_version構成ファイルのバージョンを指定します。これは、符号なし64ビット整数に変換されます。デフォルトでは0です。オプションは、最新の構成ではない古いノードへの参加を防ぐために使用されます。値が0ではなく、ノードが単一ノードメンバーシップから複数ノードメンバーシップに初めて(初めてのみ、分割後にこのルールに従っていない場合)参加する場合、他のノードconfig_versionsが収集されます。現在のノードconfig_versionが収集されたバージョンの最高と等しくない場合、corosyncは終了します。ip_versionDNSリゾルバに問い合わせるIPのバージョンを指定します。値は、ipv4(IPv4アドレスのみを検索)、ipv6(IPv6アドレスのみを確認)、ipv4-6(すべてのアドレスファミリを検索し、そのようなアドレスがある場合はリストにある最初のIPv4アドレスを使用します。最初のIPv6アドレス)およびipv6-4(すべてのアドレスファミリを探し、そのようなアドレスがある場合はリストにある最初のIPv6アドレスを使用し、そうでない場合は最初のIPv4アドレスを使用します)。デフォルト(未指定の場合)は、knetおよびudpuトランスポートの場合はipv6-4、udpの場合はipv4です。knetトランスポートは、各リンクで一貫している場合、IPv4アドレスとIPv6アドレスを同時にサポートします。totemディレクティブ内には、プロトコルの動作を制御するために使用されるいくつかの構成オプションがあります。通常、適切なガイダンスと十分なテストなしにこれらの値を変更することはお勧めしません。頻繁に再構成が必要な場合、ネットワークによってはより大きな値が必要になる場合があります。一部のアプリケーションでは、より高速な障害検出時間が必要になる場合があります。これはトークンのタイムアウトを減らすことで実現できます。tokenこのタイムアウトは、直接使用されるか、実際のトークンタイムアウトの計算のベースとして使用されます。(token_coefficientセクションで説明します。トークンタイムアウトは、トークンを受信しなかった後にトークンの損失が宣言されるまでのミリ秒単位で指定します。これは、現在の構成でプロセッサの障害の検出に費やされた時間です。このタイムアウトに加えて、新しい構成の変更には約50ミリ秒かかります。トーテムで使用される実際のトークンタイムアウトの場合、runtime.config.totem.tokenキーのcmap値を読み取ることができます。クラスター内の各ノードで同じタイムアウト値を使用するように注意してください。しないと、予期しない結果が生じる可能性があります。この値のデフォルトは1000ミリ秒です。token_warningトークンが受信されなかったことを警告する間隔を指定します。値はトークンタイムアウトの割合です。0に設定すると警告を無効にすることができます。75%.この値のデフォルトは75%です。token_coefficientこの値は、nodelistセクションが指定され、少なくとも3つのノードが含まれる場合にのみ使用されます。token_coefficientとして実際のトークンタイムアウトが計算されます。これにより、新しいノードが追加されるたびにトークンタイムアウトを手動で変更せずにクラスターを拡張できます。この値を0に設定すると、この機能が効果的に削除されます。この値のデフォルトは650ミリ秒です。token_retransmitこのタイムアウトは、トークンを受信する前にトークンが再送信されるまでの時間をミリ秒単位で指定します。トークンが変更されると、これは自動的に計算されます。この値を変更すること場合はcorosyncコミュニティに相談されることを勧めます。最小値は30ミリ秒です。0.2)が30を超えていることを確認してください。2ノードクラスタのデフォルトは238ミリ秒です。3つ以上のノードはtoken_coefficientを参照します。knet_compression_modelKronosnetが使用する(オプションの)圧縮のタイプ。利用可能な値は、ビルドおよび利用可能なライブラリによって異なります。通常、zlibとlz4が使用可能になりますが、bzip2なども許可されます。デフォルトは「なし」ですknet_compression_threshold指定された値より小さいパケットを圧縮しないようにknetに指示します。デフォルトは100バイトです。0に設定すると、デフォルトにリセットされます。すべてを圧縮するには1に設定します。knet_compression_level多くの圧縮ライブラリでは、圧縮パラメーターの調整が可能です。9は一般に圧縮レベルを決定するために使用されます。この値は変更されずに圧縮ライブラリに渡されるため、詳細についてはライブラリのドキュメントを参照することをお勧めします。holdこのタイムアウトは、プロトコルの使用率が低い場合にトークンを保持する時間をミリ秒単位で指定します。corosyncコミュニティの指導なしでこの値を変更することはお勧めしません。デフォルトは180ミリ秒です。token_retransmits_before_loss_constこの値は、新しい構成を形成する前に再送信を試行する必要があるトークンの数を識別します。token_retransmitおよびhold計算にも使用されます。デフォルトは4回の再送信です。joinこのタイムアウトは、メンバーシッププロトコルで参加メッセージを待機する時間をミリ秒単位で指定します。デフォルトは50ミリ秒です。send_joinこのタイムアウトは、結合メッセージを送信する前に待機する0からsend_joinまでの範囲をミリ秒単位で指定します。32ノード未満の構成の場合、このパラメーターは不要です。大きなリングの場合、このパラメーターは、新しいリングの形成時に参加メッセージでNICがオーバーフローしないようにするために必要です。大きなリング(128ノード)の妥当な値は80ミリ秒です。この値を変更した場合、他のタイマー値も変更する必要があります。大規模な構成を実行しようとする場合は、corosyncメーリングリストからアドバイスを求めてください。デフォルトは0ミリ秒です。consensusこのタイムアウトは、メンバーシップ構成の新しいラウンドを開始する前にコンセンサスが達成されるまで待機する時間をミリ秒単位で指定します。*トークンでなければなりません。*トークンで自動的に計算されます。2ノードクラスタの場合、コンセンサスは参加タイムアウトよりも大きく、トークンよりも小さい方が安全です。3ノード以上のクラスターの場合、コンセンサスはトークンよりも大きくする必要があります。コンセンサスがトークンよりも少ない場合、ノード数が増えると、メンバーシップの変更のリスクが高まり、仮想同期が保証されます。デフォルトは1200ミリ秒です。mergeこのタイムアウトは、マルチキャストトラフィックが送信されていないときにパーティションをチェックするまでの待機時間をミリ秒単位で指定します。マルチキャストトラフィックが送信されている場合、マージ検出はプロトコルの機能として自動的に行われます。デフォルトは200ミリ秒です。downcheckこのタイムアウトは、ネットワークインターフェイスがダウンした後にバックアップされることを確認する前に待機する時間をミリ秒単位で指定します。デフォルトは1000ミリ秒です。fail_recv_constこの定数は、新しい構成が形成される前にメッセージを受信する必要があるときに、メッセージを受信せずにトークンをローテーションする回数を指定します。デフォルトでは、メッセージの受信に失敗する回数は2500です。seqno_unchanged_constこの定数は、ホールドタイマーが開始される前に、マルチキャストトラフィックなしでトークンをローテーションする回数を指定します。デフォルトの回数は30回です。障害検出を高速化するために、オプションのHeartBeatingメカニズムを構成します。損失の多いネットワークでこのメカニズムを使用すると、メカニズムがハートビートをネットワークに依存しているため、損失に誤りが生じる可能性があることに注意してください。したがって、使用率の低いネットワークから中程度のネットワークで障害を改善する必要がある場合、経験則としてこのメカニズムを使用します。この定数は、システムがハートビート障害を宣言する前に許容する必要があるハートビート障害の数、例えば3などを指定します。この値が設定されていないか0である場合、ハートビートメカニズムはシステムに関与しておらず、トークンローテーションが障害検出の方法になります。デフォルトは0(無効)です。mechanism]この定数は、あるマシンから別のマシンにパケットを転送するためにネットワークが要するおおよその遅延をミリ秒単位で指定します。この値はシステムエンジニアが設定するものであり、ハートビートを使用した障害検出メカニズムに影響するため、不明な場合は変更しないでください。デフォルトは50ミリ秒です。window_sizeこの定数は、1回のトークンローテーションで送信できるメッセージの最大数を指定します。すべてのプロセッサーのパフォーマンスが同等であれば、この値は大きくなる可能性があり(300)、非常に大きなリングの発信から配信までの待ち時間が長くなります。大きなリング(16以上)のレイテンシを減らすために、デフォルトは安全な妥協案です。netmtuより大きくない必要があります。このことは、通知ログに再送信リストを表示することでユーザーに通知されます。データが損失することはありませんが、これらのエラーが発生するとパフォーマンスが低下します。デフォルトは50メッセージです。max_messagesこの定数は、トークンの受信時に1つのプロセッサが送信できるメッセージの最大数を指定します。netmtuに制限されています。デフォルトは17メッセージです。miss_count_constこの定数は、トークンの受信時に、再送信が発生する前に再送信についてメッセージがチェックされる最大回数を定義します。このパラメーターは、ユニキャストパケットと比較してマルチキャストパケットを遅延させるスイッチを変更するのに役立ちます。デフォルト設定は、ほぼすべての最新のスイッチでうまく機能します。デフォルトは5メッセージです。PMTUdが実行される頻度。値のデフォルトは30秒です。block_unlisted_ipsudpuとknetがcorosyncに認識されていないIPアドレス(ノードリストに存在しないノード)からパケットをドロップできるようにします。値はyesまたはnoです。この機能は主に、クラスター分割後の古い構成を持つノードの結合を防ぐためのものです。別の使用例は、2つの独立したクラスターのアトミックマージを許可することです。デフォルト値を変更することはお勧めできません。オーバーヘッドが小さく、古い構成でリストされていないノードでcorosyncを起動すると、既存のクラスターで障害が発生する可能性があります。この値のデフォルトはyesです。ロギングディレクティブ内には、すべてオプションの設定オプションがいくつかあります。次の3つのオプションは、最上位のロギングディレクティブに対してのみ有効です。timestampこれは、すべてのログメッセージにタイムスタンプが配置されることを指定します。off(タイムスタンプなし)、on(秒精度のタイムスタンプ)、またはhires(ミリ秒精度のタイムスタンプ-LibQBでサポートされている場合のみ)のいずれかです。デフォルトはhires(またはhiresがサポートされていない場合はオン)です。filelineこれは、ファイルと行を記録することを指定します。デフォルトはオフです。function_nameこれは、コード関数名を表示することを指定します。デフォルトはオフです。blackboxこれは、ブラックボックス機能を有効にすることを指定します。デフォルトはオンです。次のオプションは、トップレベルのロギングディレクティブの両方に有効であり、logger_subsysエントリでオーバーライドできます。to_stderrto_logfileto_syslogこれらは、ログ出力の宛先を指定します。これらのオプションの任意の組み合わせを指定できます。有効なオプションはyesおよびnoです。デフォルトはsyslogおよびstderrです。to_logfileを使用していて、ファイルをローテーションする場合は、オプションcopytruncateを指定してlogrotate(8)を使用してください。次のように設定します。copytruncate}logfileto_logfileディレクティブがyesに設定されている場合、このオプションはログファイルのパス名を指定します。これは、この特定のサブシステムのログファイルの優先順位を指定します。デバッグがオンの場合は無視されます。onと同じ)、emerg、err、info、notice、warningです。デフォルトはinfoです。logfile_priorityこれは、この特定のサブシステムのログファイルの優先順位を指定します。デバッグがオンの場合は無視されます。onと同じ)、emerg、err、info、notice、warningです。デフォルトはinfoです。syslog_facilityこれは、syslog.optionsに送信されるメッセージに使用されるsyslog機能タイプを指定します。optionsは、daemon、local0、local1、local2、local3、local4、local5、local6、およびlocal7です。デフォルトはdaemonです。syslog_priorityこれは、この特定のサブシステムのsyslogレベルを指定します。デバッグがオンの場合は無視されます。onと同じ)、emerg、err、info、notice、warningです。デフォルトはinfoです。debugこれは、この特定のロガーのデバッグ出力を記録するかどうかを指定します。最高レベルのデバッグ情報である値トレースを含めることができます。デフォルトはオフです。ロギングディレクティブ内では、logger_subsysディレクティブはオプションです。logger_subsysサブディレクティブ内では、上記のロギング構成オプションはすべて有効であり、デフォルト設定をオーバーライドするために使用できます。以下で説明するsubsysエントリは、サブシステムを識別するために必須です。subsysこれは、ロギングが指定されるサブシステムID(名前)を指定します。これは、log_init()呼び出しでサービスが使用する名前です。