Skip to content

クラスター構成

EMQXにおけるクラスターとは、高いスケーラビリティとフォールトトレランスを備えたMQTTメッセージングシステムを提供するために協調動作するEMQXノードの集合体です。クラスタリングにより、複数のノードに負荷を分散させることができ、1つまたは複数のノードが障害を起こしてもシステムの継続稼働が可能になります。

ノード名の設定

クラスター作成の前に、EMQXにおけるノード名の概念を理解しておきましょう。EMQXノードはノード名によって識別されます。ノード名はノード名部分とホスト部分の2つで構成され、@で区切られます。例えば、emqx@s1.emqx.ioのようになります。ホスト部分はIPアドレスか完全修飾ドメイン名(FQDN)である必要があります。例として:

  • サーバーs1.emqx.ioにデプロイされたEMQXノードの場合、ノード名はemqx@s1.emqx.ioとなります。
  • このサーバーに静的IPアドレス192.168.0.10が割り当てられている場合、ノード名はemqx@192.168.0.10となります。

emqx.confでノードを設定する際は、以下のように記述します。

bash
node {
  name = "emqx@s1.emqx.io"
  role = core
}

ここで、

  • name は希望するノード名を指し、例えばemqx@localhostのように設定します。
  • role はEMQXクラスター内でノードが果たす役割を示します。役割にはコアノードとレプリカントノードの2種類があります。コアノードとレプリカントノードの詳細については、EMQXクラスタリング - コアノードとレプリカントノードをご参照ください。
    • デフォルト値:core
    • 選択可能値:core または replicant

クラスターの設定

このセクションでは、EMQXクラスターの設定方法を紹介します。クラスター設定はコアノードまたはレプリカントノードのいずれかで行えます。レプリカントノードで設定する場合、一部の設定項目(例えばcore_nodes)は特定の前提条件下でのみ有効になります。

  • ノードのnode.db_backendrlogに設定されていること(ノードがrlogをデータベースバックエンドとして使用していることを示します)。
  • node.rolereplicantに設定されていること(このノードがレプリカントノードとして機能していることを示します)。
  • node.discovery_strategymanualまたはstaticに設定されていること。自動クラスター検出機構を使用する場合は、この設定は不要です。ノード検出戦略と対応する設定項目の詳細は、クラスターの作成をご参照ください。
bash
cluster {
  name = emqxcl
  discovery_strategy = manual
  core_nodes = []
  driver = tcp
  ssl_options {
    certfile = ""
    keyfile = ""
    cacertfile = ""
  }
}

ここで、

設定項目説明デフォルト値選択可能値
nameクラスターの名前を設定しますemqxcl
discovery_strategyクラスターのノード検出戦略を設定しますmanualmanualstaticdnsetcdk8ssingleton
core_nodesこのレプリカントノードが接続するコアノードを設定します。
複数ノードはカンマ区切りで指定可能です。
----
driverEMQXノード間通信のトランスポートプロトコルを設定しますtcptcpSSL
ssl_optionsリスナーのSSL/TLS設定オプションを設定します。3つのプロパティがあります----
ssl_options.cacertfileクライアント証明書の真正性を検証するためにリスナーが使用する信頼済みCA(認証局)証明書を含むPEMファイル----
ssl_options.certfileリスナーのSSL/TLS証明書チェーンを含むPEMファイル。証明書がルートCAから直接発行されていない場合は、中間CA証明書をリスナー証明書の後に連結してチェーンを形成する必要があります。----
ssl_options.keyfileSSL/TLS証明書に対応する秘密鍵を含むPEMファイル----
ssl_options.fail_if_no_peer_certtrueに設定すると、クライアントが証明書を送信しない(空の証明書を送信する)場合にサーバーが失敗します。falseの場合は、クライアントが無効な証明書を送信した場合のみ失敗します(空の証明書は有効とみなされます)。----

TIP

EMQXはカスタマイズニーズに応じてさらに多くの設定項目を提供しています。詳細はEMQX Enterprise設定マニュアルをご覧ください。