クラスター構成
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_backendがrlogに設定されていること(ノードがrlogをデータベースバックエンドとして使用していることを示します)。 node.roleがreplicantに設定されていること(このノードがレプリカントノードとして機能していることを示します)。node.discovery_strategyがmanualまたはstaticに設定されていること。自動クラスター検出機構を使用する場合は、この設定は不要です。ノード検出戦略と対応する設定項目の詳細は、クラスターの作成をご参照ください。
bash
cluster {
name = emqxcl
discovery_strategy = manual
core_nodes = []
driver = tcp
ssl_options {
certfile = ""
keyfile = ""
cacertfile = ""
}
}ここで、
| 設定項目 | 説明 | デフォルト値 | 選択可能値 |
|---|---|---|---|
name | クラスターの名前を設定します | emqxcl | |
discovery_strategy | クラスターのノード検出戦略を設定します | manual | manual、static、dns、etcd、k8s、singleton |
core_nodes | このレプリカントノードが接続するコアノードを設定します。 複数ノードはカンマ区切りで指定可能です。 | -- | -- |
driver | EMQXノード間通信のトランスポートプロトコルを設定します | tcp | tcp、SSL |
ssl_options | リスナーのSSL/TLS設定オプションを設定します。3つのプロパティがあります | -- | -- |
ssl_options.cacertfile | クライアント証明書の真正性を検証するためにリスナーが使用する信頼済みCA(認証局)証明書を含むPEMファイル | -- | -- |
ssl_options.certfile | リスナーのSSL/TLS証明書チェーンを含むPEMファイル。証明書がルートCAから直接発行されていない場合は、中間CA証明書をリスナー証明書の後に連結してチェーンを形成する必要があります。 | -- | -- |
ssl_options.keyfile | SSL/TLS証明書に対応する秘密鍵を含むPEMファイル | -- | -- |
ssl_options.fail_if_no_peer_cert | trueに設定すると、クライアントが証明書を送信しない(空の証明書を送信する)場合にサーバーが失敗します。falseの場合は、クライアントが無効な証明書を送信した場合のみ失敗します(空の証明書は有効とみなされます)。 | -- | -- |
TIP
EMQXはカスタマイズニーズに応じてさらに多くの設定項目を提供しています。詳細はEMQX Enterprise設定マニュアルをご覧ください。