EMQX Enterprise ローリングアップグレード
クラスター展開において、EMQX ノードはダウンタイムなしで順次アップグレードすることが可能です。この手法をローリングアップグレードと呼びます。クライアントのセッション移行をスムーズに行うために、EMQX Enterprise のクラスターリバランシング機能を利用して、アップグレード前にノードからクライアントを退避させることができます。クラスターリバランシングの詳細はこちらをご参照ください。
EMQX 5.9 以降へのアップグレードに関する重要なお知らせ
バージョン 5.9.0 以降、EMQX Enterprise は従来のオープンソース版とエンタープライズ版の分離モデルに代わり、Business Source License (BSL) 1.1 のもとでリリースされています。
TIP
ライセンス変更の詳細については、EMQX ライセンス FAQをご覧ください。
EMQX のアップグレード手順(バイナリの置き換えなど)は従来とほぼ同様ですが、バージョン 5.9.0 では特にクラスター展開に関して重要なライセンス変更が導入されています。5.9 より前のオープンソース版からのアップグレードや、単一ノード展開からクラスター展開への移行を行う場合は、以下の重要な変更点にご注意ください。
- 新しいライセンスモデル: EMQX 5.9.0 以降はデフォルトで EMQX Community License が適用されます。このデフォルトライセンスはすべての機能を有効にしますが、単一ノードでの展開に制限されます。
- クラスター機能の制限: 従来のオープンソース版ではクラスター機能がサポートされていましたが、新モデルでは EMQX 5.9.0 以降、デフォルトでクラスターは許可されていません。クラスター展開を維持したい場合は、商用ライセンスの取得が必要です。
- ライセンス設定の必須化: アップグレード時にクラスター内で EMQX 5.9.0 以降のノードを起動する前に、各ノードに対してこの商用ライセンスを設定する必要があります。ライセンスが設定されていない、または誤って設定されている場合、ノードはクラスター内で正常に動作しません。
TIP
emqx.conf
にライセンス設定を追加した場合、ダッシュボード、HTTP API、CLI からのランタイム設定変更はノード再起動後に失われます。これは起動時に emqx.conf
と環境変数が設定読み込みの最優先となるためです。
ローリングアップグレードの実施方法
クラスター内の各ノードをダウンタイムなしでアップグレードするには、以下の手順に従ってください。
- クラスターリバランシングを使ってノードからクライアントを退避させる(任意)
- 旧バージョンのノードを停止する
- ノードの設定ファイルおよびデータディレクトリをバックアップする
- 新バージョンの EMQX をインストールする
- 新バージョンのノードを起動する
注意
ローリングアップグレード中にクラスター全体の設定変更は行わないでください。ダッシュボード、HTTP API、CLI からの設定変更はクラスター内の全ノードに適用されます。アップグレード中に設定変更を行うとノード間で設定の不整合が発生する恐れがあります。
RPM および DEB パッケージでのアップグレード
RPM または DEB パッケージを使用している場合は、新しいバージョンのパッケージをインストールするだけでアップグレードが可能です。
Docker でのアップグレード
Docker を使用している場合は、新しいバージョンのイメージをプルし、コンテナを再起動するだけでアップグレードが可能です。
オープンソース版からエンタープライズ版へのアップグレード
オープンソース版の EMQX を使用していてエンタープライズ版にアップグレードする場合、アップグレード手順はオープンソース版の新バージョンへのアップグレードと同じです。
EMQX のオープンソース版とエンタープライズ版のインストールおよびアップグレードに違いはありません。唯一の違いは、アップグレード後にエンタープライズ版ノードで手動でライセンスを設定する必要がある点です。すべてのノードがアップグレードされる前にクラスター全体にライセンスキーを適用することはできません。
例として、etc/base.hocon
(アップグレード対象バージョンが e5.8.5
より前の場合は etc/emqx.conf
)に以下の行を追加します。
license.key = "your license"
注意
emqx.conf
にライセンス設定を追加した場合、ダッシュボード、HTTP API、CLI からのランタイム設定変更はノード再起動後に失われます。これは起動時に emqx.conf
と環境変数が設定読み込みの最優先となるためです。