Amazon Managed Streaming for Apache Kafka (Amazon MSK) クラスターをアップグレードする際の問題のトラブルシューティングを行う必要があります。
解決策
考慮事項とベストプラクティス
Amazon MSK クラスターをアップグレードする前に、次の点に注意してください。
- クラスターのレプリケーション係数は必ず 3 以上の値に設定してください。レプリケーション係数を 1 に設定すると、ローリング更新中にパーティションがオフラインになる可能性があります。レプリケーション係数を 2 に設定すると、データが失われる可能性があります。
- 最小同期レプリカ数 (miniSR) を (レプリケーション係数 - 1) 以下の値に設定します。MiniSR 値がレプリケーション係数と等しいと、ローリング更新中にクラスターへの生成が妨げられる場合があります。MiniSR を 2 に設定すると、1 つのレプリカがオフラインの場合でも、3 方向にレプリケートされたトピックを使用できます。
- クライアント接続文字列には、各アベイラビリティーゾーンのブローカーが少なくとも 1 つ含まれていることを確認してください。クライアントの接続文字列に複数のブローカーがあると、特定のブローカーが更新のためにオフラインになったときにフェイルオーバーできます。
- クラスターの構成を更新する前に、クラスターが ACTIVE 状態であることを確認します。
- トラフィックが少ない時間帯にクラスターをアップグレードするのがベストプラクティスです。Apache Kafka バージョンのアップグレードに必要な時間は、クラスター内のブローカーの数によって異なります。
- クラスターバージョンをアップグレードする場合、クラスターに他の更新を行うことはできません。アップグレード中もクラスターから生成して使用することができます。
- レプリケーションが不十分なトピック (例:レプリケーション係数が 3 未満のトピック) 以外は、アップグレード中にデータが失われるリスクはありません。このような状況でも、ブローカーがオンラインになると、パーティションは再び利用可能になります。
- Amazon MSK クラスターの Apache Kafka バージョンは、Amazon MSK コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して更新できます。
- Amazon MSK クラスターを新しいバージョンの Apache Kafka に更新できます。古いバージョンに更新することはできません。
- Amazon MSK はサーバーソフトウェアのみを更新し、クライアントは更新しません。そのため、クラスターをアップグレードするときは、新しい Apache Kafka バージョンの機能をクライアントソフトウェアバージョンで使用できることを確認してください。
- インスタンスタイプを更新しても、クラスターのバージョンはアップグレードされません。
アップグレードの監視
Amazon MSK クラスターを作成するときは、クラスターに必要な Apache Kafka バージョンを指定します。また、クラスターを作成した後で、以下を実行してクラスターを新しいバージョンの Apache Kafka に更新することもできます。
- Amazon MSK コンソールを開きます。
- アップグレードするクラスターを選択します。
- [プロパティ] タブの [Apache Kafka バージョン] セクションで [アップグレード] を選択します。
詳細については、Apache Kafka バージョンの更新を参照してください。
更新の進行状況は [クラスター操作] タブで監視できます。このタブから、[アップグレードの初期化]、[Apache Kafka バージョンの更新]、[アップグレードの完了] など、アップグレードの各ステップを監視できます。アップグレードが 17% に達した後、アップグレードが完了するまでに数時間かかる場合があります。Amazon MSK はローリングベースでアップグレードを実行することに注意してください。クラスターから一度に 1 つのブローカーが取り出され、その Kafka バージョンがアップグレードされます。このブローカーは、次のブローカーが削除されると再参加します。このプロセスは、最後のブローカーが新しい Kafka バージョンにアップグレードされるまで続きます。
よくあるエラーのトラブルシューティング
クラスター構成の更新中のエラー。クラスター構成の更新中に問題が発生しました。問題が解決しない場合は、AWS サポートにお問い合わせください。ブローカーあたりのパーティション数が推奨制限を超えています。さらにブローカーを追加し、ブローカーごとのパーティションを推奨制限を下回るように再配置してから、リクエストを再試行してください。
または
アップグレードが「アップグレードを初期化中」の段階で止まる
このエラーは、ブローカーごとのパーティション数が 推奨値を超えると発生します。ブローカーでのパーティションの処理は、リソースを大量に消費するワークロードです。推奨される制限よりも多くのパーティションがあると、クラスターで利用可能なリソースに負担がかかる可能性があります。この状況では、クラスターで次の操作を実行することはできません。
- クラスター構成を更新する
- クラスターの Apache Kafka バージョンを更新する
- クラスターをより小さなブローカータイプに更新する
このエラーを解決するには、以下を試してください。
- クラスター内のブローカーの数を増やします。次に、パーティションを再割り当てして、ブローカーごとのパーティション数を減らします。Amazon CloudWatch メトリックスを使用して、ブローカーごとのパーティション数を知ることができます。パーティション数は、レプリカを含む、ブローカーごとのトピックパーティションの総数です。デフォルトでは、トピックごとのパーティション数は 1 で、3-AZ クラスターのレプリケーション係数は 3 です。したがって、レプリケーション係数 3 にはメインパーティションが含まれるため、トピックごとに 3 つのパーティションがあります。同じクラスター上の別のブローカーにパーティションを移動するには、[kafka-reassign-partitions.sh] という名前のパーティション再割り当てツールを使用できます。
- 未使用のトピックを削除して、パーティションの数を減らします。次のコマンドを使用すると、クラスターのすべてのトピックとパーティションの数を確認できます。コマンドを実行する前に、必ず Amazon Elastic Compute Cloud (Amazon EC2) マシンに Apache Kafka クライアントをセットアップしてください。
bin/kafka-topics.sh —bootstrap-server localhost:9092 —describe —topic test