Red Hat AMQ Broker 7.9 のリリースノート

Red Hat AMQ 2021.Q3

AMQ Broker のリリースノート

概要

本リリースノートには、AMQ Broker 7.9 リリースに含まれる新機能、改良された機能、修正、および問題に関する最新情報が含まれています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージをご覧ください。

第1章 機能拡張

ここでは、AMQ Broker 7.9 で主要な機能拡張および新機能強調について説明します。リリースの拡張機能の完全リストは、「 AMQ Broker 7.9.0 Enhancements 」を参照してください。

注記

最新の AMQBroker Long Term Support (LTS) リリースバージョンが必要な場合は、AMQ Broker 7.8を参照してください。

AMQP サーバー接続
ブローカーは AMQP プロトコルを使用して他のエンドポイントへの接続を開始できます。たとえば、ブローカーは他の AMQP サーバーに接続し、それらの接続で要素を作成できます。この機能は、 AMQ ブローカーの構成で説明されているように<broker-connection>要素を使用して実装されます。
Operator によるすべてまたは複数の名前空間の監視のサポート

以前のリリースでは、ブローカーのデプロイが必要なすべての名前空間に AMQ ブローカーオペレーターをインストールしていました。7.9 以降、AMQ Broker Operator は、ブローカーのカスタムリソースのすべてまたは複数の名前空間の監視をサポートします。詳細は、「 Deploying AMQ Broker on OpenShift 」を参照してください。

注記

以前のバージョンの AMQBroker Operator をクラスターの名前空間にすでにインストールしている場合には、競合を回避するために、AMQ Broker Operator 7.9 バージョンをインストールしてその名前空間の監視は行わないことを推奨します。

一時キューの名前空間
AMQ Broker 7.9 では、 broker.xml構成ファイルでtemporary-queue-namespaceを指定できます。次に、namespace に一致するアドレス設定を指定し、ブローカーはそれらの設定をすべての一時キューに適用することができます。一時キューの名前空間が存在しない場合には、一時キューは他のキューと同じアドレス設定構成を使用します。詳細は、 AMQ ブローカーの構成一時キューへの特定のアドレス設定の適用を参照してください。
Operator チャンネル

AMQ Broker Operator のRed Hat Integration - AMQ Broker for RHEL 8 (Multiarch) は、次のチャネルで入手できます。

  • 7.x - このチャネルは、7 .9 をインストールし、今後ある時点で 7. 10 に更新します。現在 7.10 をインストール する 場合は、7.10. x チャンネルに サブスクライブできます。
  • 7.8.x - Long Term Support (LTS) チャンネルです。

選択する Operator を判別するには、「Red Hat Enterprise Linux Container Compatibility Matrix」を参照してください。

デフォルトで検証されるホスト
コネクターに適用すると、 verify Hostのデフォルト値がfalseからtrueに変更されました。すべてのブローカー間の接続は、デフォルトでホストが検証されるようになりました。アクセプターのデフォルト値は引き続きfalseです。
CR を使用した Prometheus プラグインの有効化
環境変数を使用したプラグインの有効化に加えて、CR を使用して Open Shift で Prometheus プラグインを有効化できます。両方のオプションについては、オンプレミスでの AMQ Boker のデプロイで説明されています。

第2章 削除された機能

以下の機能は、7.9 では利用できなくなりました。

OpenJ9 イメージ
OpenJ9 をベースとする IBM Z(s390x)および IBM Power Systems(ppc64le)イメージはサポートされなくなりました。これらのプラットフォームの新しいイメージは OpenJDK をベースにしています。
テンプレートベースのインストール
OpenShift Container Platform に AMQ Broker をデプロイするアプリケーションテンプレートの使用は、以前のリリースで非推奨となり、今回のリリースで削除されます。「AMQ Broker Operator を使用し た OpenShift Container Platform での AMQ Broker のデプロイ」の説明どおりに、AMQ Broker Operator を 使用します。
OpenShift Container Platform 3.11
Open Shift Container Platform3.11 への AMQ Broker のデプロイはサポートされなくなりました。AMQ Broker は、Open Shift Container Platform 4.6、4.7、または 4.8 でサポートされています。
RHEL 7 ベースのイメージ
OpenShift Container Platform での AMQ Broker のすべてのデプロイメントで、RHEL 8 ベースのイメージが使用されるようになりました。
ドキュメント
AMQ Broker での JON の使用 ガイドは、AMQ Broker のドキュメントの一部として公開されなくなりました。ただし、最後に公開されたバージョン AMQ Broker 7.8 のドキュメントに含まれているので、そちらは引き続きご利用いただけます。

第3章 非推奨の機能

このセクションでは、サポートされているが、AMQ Broker では非推奨になっている機能について説明します。

OpenWire プロトコル
7.9 以降、OpenWire プロトコルは非推奨の機能です。新しい AMQ Broker ベースのシステムを作成する場合は、サポートされている他のプロトコルのいずれかを使用してください。この機能は今後のリリースで削除されます。
Hawtio のディスパッチコンソールプラグイン
7.3 以降、AMQ Broker には Hawtio ディスパッチコンソールプラグインである dispatch-hawtio-console.war に同梱されなくなりました。以前のバージョンでは、AMQ Interconnect の管理にディスパッチコンソールを使用していました。ただし、AMQ Interconnect は独自のスタンドアロン Web コンソールを使用するようになりました。
ネットワーク pinger
7.5 以降では、ネットワークの ping は非推奨にされています。ネットワークの ping は、ネットワークの分離の問題からブローカークラスターを保護することができません。これにより、修復不能なメッセージが失われることがあります。この機能は今後のリリースで削除されます。Red Hat では、ネットワークの ping を使用する既存の AMQ Broker デプロイメントは引き続きサポートされます。ただし、Red Hat は、新しいデプロイメントでネットワーク ping を使用することは推奨しません。高可用性を確保するためにブローカークラスターを設定し、ネットワーク分離の問題を回避するには、『AMQ Broker の設定』の「高可用性の実装」を参照してください。

第4章 テクノロジープレビュー

ここでは、AMQ Broker 7.9 のテクノロジープレビュー機能について説明します。

重要

テクノロジープレビュー機能は、Red Hat の実稼働サービスレベルアグリーメント (SLA) でサポートされておらず、機能的に完全でない可能性があります。Red Hat は、実稼働環境での使用は推奨していません。詳細は、「テクノロジープレビュー機能のサポート範囲」を参照してください。

定足数投票の向上
以前のバージョンの AMQ Broker では、レプリケーションの高可用性 (HA) ポリシーを使用するときに、ライブブローカーが 2 つ存在しないように、少なくとも 3 つのライブバックアップペアを設定して定足数投票が使用されるようにする必要がありました。7.9 以降では、 Apache CuratorApache Zoo Keeperを使用してフェイルオーバーを構成し、2 つのブローカーで定足数投票を実行できます。この機能の使用方法については、Apache Active MQArtemis のドキュメントの高可用性とフェイルオーバーを参照してください。
クライアント接続分散の改善
以前のリリースでは、サーバー側のクライアント接続を分散する方法がありませんでした。7.9 以降では、クライアント接続が分散されるように、ブローカーとポリシーのプールを指定できます。たとえば、アクティブな接続が最も少ないブローカーにクライアントがリダイレクトされるようにする、LEAST_CONNECTIONSポリシーを指定できます。この機能の使用方法については、Apache ActiveMQ Artemis ドキュメントの Broker Balancers を参照してください。
Fuse Console でのブローカーの表示

Operator ベースのブローカーのデプロイメントを、AMQ Management Console ではなく OpenShift に Fuse Console を使用するように設定できます。ブローカーのデプロイメントを適切に設定すると、Fuse Console はブローカーを検出し、専用の Artemis タブに表示されます。詳細は、OpenShift での AMQ Broker のデプロイFuse Console でのブローカーの表示 を参照してください。

注記

Fuse Console でのブローカーの表示は、Fuse 7.8 のテクノロジープレビューの機能です。

第5章 修正された問題

リリースで修正された問題の完全リストは、AMQ Broker 7.9.0 の修正済み問題 および AMQ Broker - 7.9.x の解決済みの問題 を参照してください。

第6章 修正された Common Vulnerabilities and Exposures (CVE)

ここでは、AMQ Broker 7.9 リリースで修正された Common Vulnerabilities and Exposures (CVE) について詳しく説明します。

  • ENTMQBR-4071CVE-2020-13956 httpclient: apache-httpclient: リクエスト URI での不適切な authority コンポーネントへの対処が正しくない
  • ENTMQBR-4677-CVE-2021-21290 netty: ローカルシステムの一時ディレクトリーを介した情報開示
  • ENTMQBR-4775-CVE-2020-27223 jetty: "quality" パラメーターが多数ある Accept ヘッダーを複数含む要求では、DoS が発生する可能性がある
  • ENTMQBR-4779-CVE-2021-3425 ブローカー: Red Hat AMQ Broker: アプリケーションログファイルで JDBC のユーザー名とパスワードが開示される
  • ENTMQBR-4795-CVE-2021-21295 netty: 検証されないので HTTP/2 で Request Smuggling (リクエストスマグリング) が発生する可能性がある
  • ENTMQBR-4829-CVE-2021-21409 netty: content-length ヘッダー経由にリクエストスマグリング
  • ENTMQBR-4907-CVE-2021-28163 jetty-server:jetty: シンボリックリンクディレクトリーで webapp ディレクトリーの内容が公開される
  • ENTMQBR-4911-CVE-2021-28165 jetty-server:jetty: サイズが大きく、無効な TLS フレームを受信時のリソースの枯渇
  • ENTMQBR-4912-CVE-2021-28164 jetty-server:jetty: あいまいなパスで WEB-INF にアクセスできる
  • ENTMQBR-4960-CVE-2021-29425 commons-io:apache-commons-io: Apache Commons IO2.2 から 2.6 での制限付きパストラバーサル
  • ENTMQBR-5118-CVE-2021-28169 jetty-server:jetty: Concat Servlet および Welcome Filter への要求で WEB-INF ディレクトリー内の保護されたリソースにアクセスできる
  • ENTMQBR-5165-CVE-2021-34428 jetty-server:jetty: Session Listener が原因でセッションがログアウトが機能しない場合に無効化されない
  • ENTMQBR-5229-CVE-2021-20289 resteasy-jaxrs:resteasy: エラーメッセージでエンドポイントクラス情報が公開される
  • ENTMQBR-5250CVE-2021-34429: jetty-server: jetty: で特別に作成された URI により、セキュリティーの制約を回避できる
  • ENTMQBR-5398-CVE-2021-3763 AMQ ブローカー 7: 管理コンソールの権限が正しくない

第7章 既知の問題

ここでは、AMQ Broker 7.9 の既知の問題について説明します。

  • ENTMQBR-5749- Operator Hub に表示される、サポートされていない演算子を削除する

    OperatorHub からの Operator のデプロイ」に記載されている Operator および Operator チャネルのみがサポートされます。Operator の公開に関連する技術的な理由により、他のOperator とチャネルが Operator Hub に表示されますが、無視するようにしてください。参考までに、次のリストは、表示されていても、サポートされていない演算子です。

    • Red Hat Integration-AMQ Broker LTS - すべてのチャネル
    • Red Hat Integration-AMQ Broker - alpha、current、および current-76
  • ENTMQBR-5615- artemis.profile の予期せぬ重大な変更により、コンテナーイメージの初期化アプローチが使用できない

    JVM オプション-Dhawtio.roleを使用して、artemis_profileファイルの $ JAVA_ARGS セクションの一部としてユーザーロールを設定すると、ユーザーはブローカーコンソールにアクセスできない場合があります。

    この問題は、 -Dhawtio.roleによって設定された値をオーバーライドする新しいプロパティーHAWTIO_ROLEが原因で発生します。この問題を回避するには、 etc/artemis.profileファイルのHAWTIO_ROLEプロパティーを使用して適切なロールを設定します。

  • ENTMQBR-17 - AMQ222117: クラスター接続を開始できない

    IPv6 をサポートする環境では、ブローカークラスターが適切に初期化に失敗することがあります。この失敗は、ログメッセージ Can’t assign requested address で示される SocketException が原因となります。この問題を回避するには、java.net.preferIPv4Stack システムプロパティーを true に設定します。

  • ENTMQBR-520: 別のアドレスにバインドされたキューと同じ名前のアドレスからの受信は許可されるべきではない

    アドレスと同じ名前のキューは、アドレスにのみ割り当てる必要があります。既存のアドレスと同じ名前で、異なる名前のアドレスにバインドされるキューを作成することは、無効な構成です。これを実行すると、誤ったメッセージがキューにルーティングされる可能性があります。

  • ENTMQBR-569 - ID を OpenWire から AMQP へ変換すると、ID をバイナリーとして送信する

    A-MQ 6 OpenWire クライアントから AMQP クライアントに相互プロトコルを通信する場合、追加の情報はアプリケーションメッセージプロパティーにエンコードされます。これは、ブローカーによって内部で使用される無害な情報であり、無視することができます。

  • ENTMQBR-599 - Artemis cli によるトラストストアおよびキーストアを定義する

    --ssl-key--ssl-key-password--ssl-trust、および --ssl-trust-password パラメーターを使用したブローカーインスタンスの作成は機能しません。この問題を回避するには、ブローカーの作成後に bootstrap.xml で対応するプロパティーを手動で設定します。

  • ENTMQBR-636 - perf load (mpt) の下で、ジャーナルが破損し、JavaNullPointerException が発生する

    ブローカーが高負荷を管理しているときに IO 関連の問題が発生しないようにするには、JVM に十分なメモリーとヒープ領域が割り当てられていることを確認してください。ActiveMQ Artemis ドキュメントの「Performance Tuning」章の「Tuning the VM」項を参照してください。

  • ENTMQBR-648 - JMS Openwire クライアントは、定義された purgeOnNoConsumer またはキュー filter を持つキューにメッセージを送信できない

    A-MQ 6 JMS クライアントを使用して、purgeOnNoConsumer を持つキューが true に設定されたアドレスにメッセージを送信します。キューにコンシューマーがない場合は失敗します。A-MQ 6 JMS クライアントを使用する場合は、purgeOnNoConsumer オプションを設定しないことが推奨されます。

  • ENTMQBR-652 - 既知の amq-jon-plugin のバグの一覧

    amq-jon-plugin のこのバージョンでは、ブローカーおよびキューの MBean の既知の問題があります。

    ブローカーの MBean の問題:

    • 接続を閉じると java.net.SocketTimeoutException 例外が発生する
    • listSessions()java.lang.ClassCastException を出力する
    • アドレス設定を追加すると java.lang.IllegalArgumentException が発生する
    • getConnectorServices() 操作が見つからない
    • listConsumersAsJSON() 操作が見つからない
    • getDivertNames() 操作が見つからない
    • ネットワークトポロジーの一覧表示で IllegalArgumentException が発生する
    • 削除アドレス設定で、パラメーター名が間違っている

    キュー MBean の問題:

    • expireMessage() で引数型の不一致例外が発生する
    • listDeliveringMessages()IllegalArgumentException を出力する
    • listMessages()java.lang.Exception を出力する
    • エラーメッセージの引数型不一致で moveMessages()IllegalArgumentException を出力する
    • エラーメッセージの引数型不一致で removeMessage()IllegalArgumentException を出力する
    • removeMessages() が、Can’t find operation removeMessage with 2 arguments の例外を出力する
    • retryMessage() が引数型の不一致 IllegalArgumentException を出力する
  • ENTMQBR-655 - [AMQP] populate-validated-user が有効になっているとメッセージを送信できない

    設定オプション populate-validated-user は、AMQP プロトコルを使用して生成されたメッセージではサポートされません。

  • ENTMQBR-897 - 宛先名の特殊文字による Openwire クライアント/プロトコルの問題

    現在、AMQ OpenWire JMS クライアントは、その名前にコンマ (',')、ハッシュ ('#')、および空白を含むキューおよびアドレスにアクセスできません。

  • ENTMQBR-944 - [A-MQ7, Hawtio, RBAC] ユーザーは RBAC によって拒否された場合にフィードバックを取得しない

    コンソールで、許可されていないユーザーが試行した操作が成功しなかったのに成功したことを示すことがあります。

  • ENTMQBR-1875 - [AMQ 7, ha, replicated store] バックアップブローカーが「ライブ」にならない、または ActiveMQIllegalStateException errorType=ILLEGAL_STATE message=AMQ119026: Backup Server was not yet in sync with live の後にシャットダウンしているようにみえる

    バックアップブローカーがマスターブローカーと同期しようとしている間に、マスターブローカーのページングディスクを削除すると、マスターが失敗します。さらに、バックアップブローカーはマスターとの同期を試みるため、ライブになりません。

  • ENTMQBR-2068 - 一部のメッセージが、HA フェイルオーバー、フェイルバックのシナリオでは受信されるものの、配信されない

    現在、OpenWire クライアントがメッセージを送信している間にブローカーがスレーブにフェールオーバーすると、フェイルオーバー時にブローカーへ配信されるメッセージが失われる可能性があります。この問題を回避するには、承認する前にブローカーがメッセージを永続化していることを確認します。

  • ENTMQBR-2928 - Broker Operator が CR の変更から復旧できず、誤った状態が生じている

    AMQ Broker Operator がカスタムリソース (CR) の更新を適用する際にエラーが発生した場合、Operator は復旧しません。具体的には、Operator が CR への追加の更新について予想通りに応答しなくなりました。

    たとえば、メインのブローカー CR の image 属性の値に誤りがあると、ブローカー Pod は ImagePullBackOff の関連エラーメッセージでデプロイに失敗します。その後、誤りを修正して CR の変更を適用すると、Operator は指定された数のブローカー Pod をデプロイしません。さらに、Operator は追加の CR 変更に応答しません。

    この問題を回避するには、最初にデプロイした CR を削除してから、それらを再デプロイする必要があります。既存の CR を削除するには、oc delete -f <CR name> などのコマンドを使用します。

  • ENTMQBR-3846 - MQTT クライアントがブローカーの再起動時に再接続されない

    ブローカーを再起動するか、ブローカーがフェイルオーバーすると、アクティブなブローカーは、以前に接続された MQTT クライアントの接続を復元しません。この問題を回避するには、MQTT クライアントを再接続するのに、クライアントで subscribe() メソッドを手動で呼び出す必要があります。

  • ENTMQBR-4023 - AMQ Broker Operator: Pod Status の Pod 名が、実際のものとは異なる

    特定の OpenShift プロジェクトでの Operator ベースのブローカーデプロイメントの場合、oc get pod コマンドを使用してブローカー Pod を一覧表示すると、Pd の順序値は 0 から始まります (例: amq-operator-test-broker-ss-0)。ただし、oc describe コマンドを使用して、activemqartmises カスタムリソース (oc describe activemqartemises) から作成されたブローカー Pod のステータスを取得した場合、Pod の順序値は誤って 1 から開始します (例: amq-operator-test-broker-ss-1)。この問題を回避する方法はありません。

  • ENTMQBR-4127 - AMQ Broker Operator: Operator によって生成されるルート (Route) 名が OpenShift で長すぎる可能性がある

    Operator ベースのデプロイメントのブローカー Pod ごとに、Operator が AMQ Broker 管理コンソールにアクセスするために作成するルートのデフォルト名には、カスタムリソース (CR) インスタンスの名前、OpenShift プロジェクトの名前、および OpenShift クラスターの名前が含まれます。たとえば、my-broker-deployment-wconsj-0-svc-rte-my-openshift-project.my-openshift-domain になります。これらの名前の一部が長い場合、デフォルトのルート名は OpenShift が実施する 63 文字の制限を超えている可能性があります。この場合、OpenShift Container Platform Web コンソールでは、ルートに表示されるステータスが Rejected になります。

    この問題を回避するには、OpenShift Container Platform Web コンソールを使用してルートの名前を手動で編集します。コンソールでルートをクリックします。右上の Actions ドロップダウンメニューで、Edit Route を選択します。YAML エディターで spec.host プロパティーを見つけ、値を編集します。

  • ENTMQBR-4140 - AMQ Broker Operator: storage.size が正しくないとインストールが使用できなくなる

    カスタムリソース (CR) インスタンスの storage.size プロパティーを設定し、永続ストレージのデプロイメントでブローカーに必要な Persistent Volume Claim (PVC) のサイズを指定すると、Operator のインストールがこの値を適切に指定しない場合に使用できなくなります。たとえば、storage.size の値を 1 (つまり、単位を指定しない) に設定したとします。この場合、Operator は CR を使用してブローカーデプロイメントを作成できません。さらに、CR を削除し、storage.size が正しく指定された新規バージョンをデプロイする場合でも、Operator はこの CR を使用して予想通りにデプロイメントを作成することはできません。

    この問題を回避するには、まず Operator を停止します。OpenShift Container Platform Web コンソールで Deployments をクリックします。AMQ Broker Operator に対応する Pod の More options (3 つの垂直ドット) をクリックします。Edit Pod Count をクリックし、値を 0 に設定します。Operator Pod が停止すると、storage.size を正しく指定した CR の新規バージョンを作成します。次に、Operator を再起動するには、Edit Pod Count を再度クリックし、値を 1 に戻します。

  • ENTMQBR-4141 - AMQ Broker Operator: ステートフルセットを再作成した後も手動の関与が必要になる

    デプロイメントのブローカーで必要な Persistent Volume Claim (PVC) のサイズを大きくしようとすると、手動でのステップを加えずに変更は反映されません。たとえば、カスタムリソース (CR) インスタンスの storage.size プロパティーに、PVC の初期サイズを指定するとします。CR を変更して storage.size別の 値を指定する場合、既存のブローカーは元の PVC サイズを引き続き使用します。これは、デプロイメントをゼロブローカーに縮小してから元の数に戻した場合でも当てはまります。ただし、デプロイメントのサイズを拡大してブローカーを追加すると、新しいブローカーは新しい PVC サイズを使用します。

    この問題を回避し、デプロイメント内のすべてのブローカーが同じ PVC サイズを使用するようにするには、OpenShift Container Platform Web コンソールを使用してデプロイメントで使用される PVC サイズを拡張します。コンソールで、StoragePersistent Volume Claims をクリックします。デプロイメントをクリックします。右上の Actions ドロップダウンメニューで Expand PVC を選択し、新規の値を入力します。