第8章 既知の問題

このセクションでは、AMQ Broker 7.11 の既知の問題について説明します。

  • ENTMQBR-8166 - UseClientAuth=true の自己署名証明書により、Operator と Jolokia の通信が妨げられる

    ActiveMQ Artemis CR の console セクションで useClientAuth 属性が true に設定されている場合、Operator はブローカー上で特定の機能 (アドレスの作成など) を設定できません。Operator ログに、remote error: tls: bad certificate で終わるエラーメッセージが表示されます。

  • ENTMQBR-7385 - 遅いコンシューマーのフェデレーションキューでメッセージがフロップする

    ローカルアプリケーションコンシューマーが非常に遅い場合、またはメッセージを消費できない場合、メッセージはアプリケーションコンシューマーによって最終的に消費されるまでに、フェデレーションされた接続を介して何度も送受信される可能性があります。

  • ENTMQBR-7820 - [Operator] 7.11.0 OPR1 Operator ログにリストされているサポート対象バージョンが間違っている

    Operator ログには、AMQ Broker イメージバージョン 7.10.0、7.10.1、7.10.2、7.11.0、7.8.1、7.8.2、7.8.3、7.9.0、7.9.1、7.9.2、7.9.3、および 7.9.4 のサポートがリストされています。Operator は、実際には、7.10.0 以降の AMQ Broker イメージバージョンをサポートしています。

  • ENTMQBR-7359 - 7.10.0 Operator による認証情報シークレットの現在の処理方法を変更

    Operator は、ブローカーに接続するための管理者のユーザー名とパスワードをシークレットに保存します。デフォルトのシークレット名は <custom-resource-name>-credentials-secret の形式です。シークレットは手動で作成するか、Operator による作成を許可できます。

    7.10.0 より前のカスタムリソースで adminUser および adminPassword 属性が設定されている場合、Operator は手動で作成されたシークレットをこれらの属性の値で更新します。7.10.0 以降、Operator は手動で作成されたシークレットを更新しなくなりました。したがって、CR の adminUser および adminPassword 属性の値を変更する場合は、次のいずれかを行う必要があります。

  • 新しいユーザー名とパスワードでシークレットを更新します。
  • シークレットを削除し、Operator がシークレットを作成できるようにします。Operator がシークレットを作成する場合、adminUser および adminPassword 属性が CR で指定されていればその値が追加されます。これらの属性が CR にない場合、Operator はシークレットの認証情報をランダムに生成します。
  • ENTMQBR-7111 - Operator の 7.10 バージョンは、アップグレード中に StatefulSet を削除する傾向がある

    AMQ Broker Operator 7.10.0 にアップグレードする場合、または AMQ Broker Operator 7.10.0 からアップグレードする場合、新しい Operator は調整プロセス中にデプロイメントごとに既存の StatefulSet を自動的に削除します。Operator が StatefulSet を削除すると、既存のブローカー Pod が削除され、一時的なブローカーの停止が発生します。

    Operator が StatefulSet を削除する前に、次のコマンドを実行して StatefulSet を手動で削除し、実行中の Pod を孤立させることで、この問題を回避できます: oc delete statefulset <statefulset-name> --cascade=orphan

    アップグレードプロセス中に StatefulSet を手動で削除すると、新しい Operator は実行中の Pod を削除せずに StatefulSet を調整できます。詳細については、OpenShift への AMQ Broker のデプロイOperatorHub を使用した Operator のアップグレード を参照してください。

  • ENTMQBR-6473 - スキーマ URL の変更により設定に互換性がない

    バージョン 7.9 または 7.10 インスタンスで以前のリリースからのブローカーインスタンス設定の使用を試みた場合、スキーマ URL を変更したことで互換性のない設定があると、ブローカーがクラッシュします。この問題を回避するには、Linux での 7.9.0 から 7.10.0 へのアップグレード の説明に従って、関連する設定ファイル内のスキーマ URL を更新します。

  • ENTMQBR-4813 大きなメッセージと複数の C++ サブスクライバーの使用により AsynchronousCloseException が発生する

    AMQP プロトコルを使用する複数の C++ パブリッシャークライアントがサブスクライバーおよびブローカーと同じホストで実行され、パブリッシャーが大きなメッセージを送信すると、サブスクライバーの 1 つがクラッシュします。

  • ENTMQBR-5749 - OperatorHub に表示されるがサポートされていない Operator を削除する

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

    • Red Hat Integration-AMQ Broker LTS - すべてのチャネル
    • Red Hat Integration-AMQ Broker - alpha、current、および current-76
  • ENTMQBR-569 - ID を OpenWire から AMQP へ変換すると、ID をバイナリーとして送信する

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

  • ENTMQBR-655 - [AMQP] populate-validated-user が有効になっているとメッセージを送信できない

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

  • 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-3331 - ステートフルセットコントローラーが CreateContainerError から回復できず、Operator がブロックされる

    AMQ Broker Operator が設定エラーのあるカスタムリソース (CR) からステートフルセットを作成すると、ステートフルセットコントローラーは、エラーが解決されたときに更新されたステートフルセットをロールアウトできません。

    たとえば、メインブローカ CR の image 属性の値にスペルミスがあると、ステートフルセットコントローラーによって作成された最初の Pod のステータスが Pending のままになります。その後、スペルミスを修正して CR の変更を適用すると、AMQ Broker Operator はステートフルセットを更新します。ただし、Kubernetes の既知の問題により、ステートフルセットコントローラーは更新されたステートフルセットをロールアウトできません。コントローラーは Pending ステータスの Pod が Ready になるまで無期限に待機するため、新しい Pod はデプロイされません。

    この問題を回避するには、Pending ステータスの Pod を削除して、ステートフルセットコントローラーが新しい Pod をデプロイできるようにする必要があります。どの Pod のステータスが Pending であるかを確認するには、次のコマンドを使用します: oc get pods --field-selector=status.phase=Pending。Pod を削除するには、oc delete pod <pod name> コマンドを使用します。

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

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

  • 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 を選択し、新規の値を入力します。