クラスター構成
EMQXにおけるクラスターとは、複数のEMQXノードが連携して、高いスケーラビリティとフォールトトレランスを備えたMQTTメッセージングシステムを提供するグループのことです。クラスタリングにより、複数のノードに負荷を分散し、1つまたは複数のノードが障害を起こしてもシステムが継続して稼働できるようにします。
ノード名の設定
クラスター作成の手順を始める前に、EMQXにおけるノード名の概念を理解しましょう。EMQXノードは名前によって識別されます。ノード名は、ノード名部分とホスト部分の2つで構成され、@で区切られます。例えば、emqx@s1.emqx.ioのようになります。ホスト部分はIPアドレスか、完全修飾ドメイン名(FQDN)でなければなりません。例としてはmyhost.example.tldなどがあります。
- サーバー
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設定マニュアルをご参照ください。