EMQX Enterprise ローリングアップグレード
クラスター構成のデプロイメントにおいて、EMQX ノードはダウンタイムなしで1台ずつアップグレードできます。このプロセスはローリングアップグレードと呼ばれます。クライアントのセッション移行をスムーズに行うために、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 5.10以降のローリングアップグレードに関する注意点
EMQX 5.10.0以降では、v2 ルーティングストレージスキーマのみがサポートされます。5.4.0以前のデフォルトだった旧スキーマ_v1_は非互換となりました。そのため、特に段階的にアップグレードされたクラスタで_v1_スキーマを使用している場合、5.10.0以降へのローリングアップグレードはできません。
重要
クラスタがまだ_v1_ルーティングスキーマを使用している場合は、アップグレード完了のためにクラスタ全体の再起動が必要です。
現在のルーティングスキーマの確認
以下のコマンドでEMQXクラスタが使用しているルーティングスキーマを確認してください。
$ emqx eval 'emqx_router:get_schema_vsn()'
出力がv2
であれば、通常のローリングアップグレードが可能です。
出力がv1
の場合は、以下の手順でクラスタ全体の再起動を伴うアップグレードを行ってください。
v1 ルーティングスキーマのアップグレード手順
クラスタが_v1_スキーマを使用している場合、EMQX 5.10.0以降へのアップグレードは以下の手順で実施してください。
- クラスタ内の全ノードを停止します。
- 任意の設定ファイルに定義されている
broker.routing.storage_schema
オプションを削除します。 - 全ノードを5.10.0以降のバージョンにアップグレードします。
- コアノードを先に起動します。
- レプリカントノードを起動します。
ローリングアップグレードの一般的な手順
ダウンタイムなしでクラスタ内の各ノードをアップグレードするには、以下の手順に従ってください。
- クラスターリバランシングを使ってノードからクライアントを退避させます(任意)。
- 旧バージョンのノードを停止します。
- ノードの設定ファイルおよびデータディレクトリをバックアップします。
- 新しいバージョンのEMQXをインストールします。
- 新しいバージョンのノードを起動します。
注意
ローリングアップグレード中にクラスタ全体の設定変更は行わないでください。ダッシュボード、HTTP API、CLIからの設定変更はクラスタ内全ノードに適用されます。アップグレード中に設定変更を行うとノード間で設定の不整合が発生する恐れがあります。
RPMおよびDEBパッケージを使ったローリングアップグレード
RPMまたはDEBパッケージを使用している場合は、新しいバージョンのパッケージをインストールするだけでEMQXをアップグレードできます。
Dockerを使ったローリングアップグレード
Dockerを使用している場合は、新しいバージョンのイメージをプルしてコンテナを再起動するだけでEMQXをアップグレードできます。
オープンソース版からEnterprise版へのローリングアップグレード
オープンソース版のEMQXを実行していてEnterprise版にアップグレードする場合、手順はオープンソース版の新バージョンへのアップグレードと同じです。
EMQXのオープンソース版とEnterprise版のインストールおよびアップグレードに違いはありません。 唯一の違いは、アップグレード後にEnterprise版ノードに対して手動でライセンス設定を行う必要がある点です。 全ノードのアップグレードが完了する前にクラスタ全体にライセンスキーを適用することはできません。
例として、etc/base.hocon
(アップグレード対象バージョンがe5.8.5
より前の場合はetc/emqx.conf
)に以下の行を追加します。
license.key = "your license"
注意
emqx.conf
にライセンス設定を追加した場合、ダッシュボード、HTTP API、CLIからのランタイム設定変更はノード再起動後に失われます。 これは起動時にemqx.conf
と環境変数が設定読み込みの最優先となるためです。