オンサイト エンジニア: VMware+LVM ボリュームを使用して Windows Server に Kafka クラスターを迅速に展開します。

最近、現場では難しい問題が多発していますが、今回の課題は、4 台の Windows Server サーバーに Kafka クラスターを展開することです。一部の依存ドライバーは仮想化を適切にサポートしておらず、物理的な Win マシンでのみ実行できるため、これは比較的まれな操作です。

もともと上位業務はBチームが開発・運用していましたが、Bチームが独立して、Bチームの業務フローをこの4台のWindowsサーバーに移管する必要があります。Lao Dingの紹介のため、その場で移住を案内しましたが、スムーズではなかったので記録します。

1. windows Kafka 存在BUG

最初の移行では、Kafka のスループットが大きい可能性があることを考慮して、落とし穴を踏んでいない場合は、Java + Kafka を直接使用して Windows 上でビルドする準備をすることもできます。結局のところ、公式WebサイトからダウンロードしたkafkaにはWindowsフォルダーがあります。

このアプローチには大きな落とし穴があります。Windows 上の Kafka インスタンスが期限切れのログを削除すると、ファイルを削除できないために再起動例外が発生します。この種の例外は、メッセージ キューがローリング削除ウィンドウに入った後に頻繁に発生します。

ERROR Failed to clean up log for topic.1bc-0 in dir F:\tmp\kafka-logs

その理由は、kafka がログの有効期限が切れていることを検出し、ログの名前が .deleted に変更されても、ファイルがまだ占有されているためです。この問題は実際には長い間存在しており、このスレッドでも同様の議論があります。

2. 仮想マシンのストレージ構成

2.1 すべてのレベルでの容量の見積もり

Windows 物理システム + Linux 仮想マシンで Kafka が動作するため、数段階のストレージ容量の把握に注意が必要です。

  1. 仮想マシンが存在する物理パーティションのサイズ (P バイト単位)。
  2. 仮想マシンの物理ディスク ファイル vmdk または vdi の最大合計サイズは Q バイトです。
  3. 仮想マシンの kafka ログ フォルダーのパーティション サイズは R バイトです。
  4. Kafka が仮想マシンに予約するログ日数 (または推定サイズ) S バイト。

確実に行うには:

  1. 0.9P >= Q.これについては十分に注意してください。R << P であっても、Q>P であっても、システムが一定期間実行されると、システムはハングします。これは、仮想マシンのディスク ファイルが増大し続けるためです。仮想マシンの OS は、「サイズ」が Q の vmdk ファイルを物理ディスクと見なし、仮想マシン OS がディスクを使用するとき、断片化を避けるために、常に新しいファイルを末尾に配置します。その結果、仮想マシンのディスクが常にいっぱいではない場合でも、頻繁に追加や削除を行うと、仮想マシンのディスク ファイル (*.vmdk) のサイズが上限に達してしまいます。

以下の図に示すように、Kafka の古いログは後で削除されますが、新しく書き込まれたログはファイルの先頭を埋めることはなく、順方向に増加し続けます。これにより、VMDK ファイルが実際に大きくなってしまいました。いわゆる 1TB の vmdk ファイルが 100GB の物理ディスクに配置されている場合、Kafka ログが 1 時間しか保存されない場合でも、物理ディスクは徐々に圧迫されていきます。

ここに画像の説明を挿入2. 0.9R >= S。これは、仮想マシン kafka のクォータをあまり厳しく設定できないことを意味します。たとえば、ログを 1 日あたり 10 GB または 80 GB のパーティションにする必要がある場合、7 日後に削除されるように設定せず、5 日に設定することをお勧めします。一部のビジネス ロジックやピーク注文により、突然大量のテーマ データが生成される可能性があるためです。

2.2. 仮想マシンへの仮想ディスクアレイの追加

VMWare の仮想マシン ディスクは最大 8TB をサポートします。以前は、通常のノードで十分でした。しかし、現在では多くのサーバーが 32TB から始まります。さらに、Kafka を半長期ストレージ プールとして使用するこのようなアプリケーションの場合、64 TB を超える構成もあります。このように、各仮想マシンのディスク アレイを使用する場合は、それぞれの容量に応じて、上記のセクションの制限と組み合わせて、各仮想マシンにいくつのディスク グループを割り当てるかを考慮するだけです。

同時に、便宜上、最大の物理ディスク アレイのサイズに応じてディスクの数を均一に構成し、小型のディスク アレイ マシンでは 8TB 単位でカットする必要があります。LVM ボリュームは、この柔軟なトリミングをサポートします。

仮想マシンのディスクすべてのデータ ディスクを GPT 物理パーティションに変換します。具体的な方法は Yuanruyi C に直接聞いて、Baidu と少量組み合わせて一度に実行します。

最初のパスでは、基本的なプロセスを簡単に理解します。

问:在 Linux 下如何把多块新磁盘变成一个整体的 LVM 卷
答:
你可以按照以下步骤在 Linux 下将多块新磁盘变成一个整体的 LVM 卷:
将新磁盘连接到电脑上并且使用 fdisk 工具来创建一个新的分区。
将创建的新分区标注为 LVM 类型。
使用 pvcreate 命令来创建一个物理卷,并将新分区添加到该物理卷中。
使用 vgcreate 命令来创建一个卷组,并将物理卷添加到该卷组中。
使用 lvcreate 命令来创建一个逻辑卷,并将卷组分配给该逻辑卷。
格式化逻辑卷成一个文件系统。
挂载逻辑卷到指定的目录。

完整的命令如下:
fdisk /dev/sdb
t
8e
pvcreate /dev/sdb1
vgcreate vg_data /dev/sdb1
lvcreate -L 100G -n data_lv vg_data
mkfs.ext4 /dev/mapper/vg_data-data_lv
mount /dev/mapper/vg_data-data_lv /data
注意:以上步骤仅适用于 CentOS 和 Ubuntu 等 Linux 操作系统。

2回目は聞き方を変えてコマンドを詳しく調べて再度確認します。

我有三块新硬盘,插在了计算机上,被Linux系统识别为 /dev/sdc, /dev/sdd, /dev/sde。这三块硬盘都是8TB大小,请告诉我如何把他们组成一个完整的连续LVM卷,并挂载到/var/local/kafka-logs 下。


可以按照以下步骤将三块硬盘组成一个完整的连续LVM卷,并挂载到/var/local/kafka-logs下:

首先,在Linux系统中打开终端,输入命令sudo fdisk -l,查看硬盘识别情况。

确认三块硬盘的设备名称,即/dev/sdc, /dev/sdd, /dev/sde。

输入命令sudo pvcreate /dev/sdc /dev/sdd /dev/sde,创建物理卷。

输入命令sudo vgcreate vg_kafka /dev/sdc /dev/sdd /dev/sde,创建卷组vg_kafka。

输入命令sudo lvcreate -n lv_kafka -l 100%FREE vg_kafka,创建逻辑卷lv_kafka,其大小为三块硬盘总容量。

输入命令sudo mkfs.ext4 /dev/vg_kafka/lv_kafka,格式化逻辑卷。

将逻辑卷挂载到/var/local/kafka-logs下,输入命令sudo mkdir /var/local/kafka-logs;sudo mount /dev/vg_kafka/lv_kafka /var/local/kafka-logs。

如果需要开机自动挂载,可以编辑/etc/fstab文件,在其中添加以下一行内容:
/dev/vg_kafka/lv_kafka /var/local/kafka-logs ext4 defaults 0 0

以上步骤完成后,三块硬盘就被组成了一个完整的连续LVM卷,并挂载到了/var/local/kafka-logs下。

終了後、仮想マシンには 24TB LVM 仮想ディスクが作成されます。

2.3 LVM のグラフィカル ツールを使用してマシンごとに調整する

将来的には各サーバーでオンデマンドでクロップする必要があるため、グラフィカル インターフェイスが欲しいと考えています。どちらを使用しますか? 私は以前に KDE のパーティションマネージャーを使用していましたが、非常に使いやすいです。

$ sudo pacman -S partitionmanager

インストール後は、実際には不便です。
KDEパーティションマネージャー調整する前に右クリックし、マウントされた LVM パーティションを最初にアンインストール (アンマウントと同等) する必要があることに注意してください。それ以外の場合、多くのオプションはグレー表示されます。このものの最も優れた点は、釣り方を教えられることです。完了するたびに、各ステップに相当するコマンドがログにリストされます。
ここに画像の説明を挿入

KDE 分区管理器:SMART 状态报告
日期: 	2023/5/11 上午4:30
程序版本: 	22.12.3
后端程序: 	pmsfdiskbackendplugin (1)
KDE 程序框架版本: 	5.103.0
机器: 	Linux user-kafka 6.1.25-1-MANJARO #1 SMP PREEMPT_DYNAMIC Thu Apr 20 13:48:36 UTC 2023 x86_64

将分区 “/dev/kafka/kafka” 从 46.87 TiB 缩小为 7.81 GiB
任务:检查分区 “/dev/kafka/kafka” 的文件系统
命令:e2fsck -f -y -v /dev/kafka/kafka
检查分区 “/dev/kafka/kafka” 的文件系统:成功
任务:调整分区 “/dev/kafka/kafka” 的文件系统大小为 2,000 个扇区

正在将文件系统的大小从 12,287,994 个扇区调整为 2,000 个扇区。


命令:resize2fs /dev/kafka/kafka 16384000s
调整分区 “/dev/kafka/kafka” 的文件系统大小为 2,000 个扇区:成功
任务:设置分区 “/dev/kafka/kafka” 的物理结构:起始扇区:0,长度:2,000
命令:lvm lvresize --force --yes --extents 2000 /dev/kafka/kafka
设置分区 “/dev/kafka/kafka” 的物理结构:起始扇区:0,长度:2,000:成功
任务:检查分区 “/dev/kafka/kafka” 的文件系统
命令:e2fsck -f -y -v /dev/kafka/kafka
检查分区 “/dev/kafka/kafka” 的文件系统:成功
将分区 “/dev/kafka/kafka” 从 46.87 TiB 缩小为 7.81 GiB:成功

最後に、物理ディスク アレイのサイズを超える仮想ディスクが物理ボリューム グループから削除されていることを確認します
ここに画像の説明を挿入
この手順は重要です。そうしないと、LVM がストリップ モードで物理ディスクを使用する場合、グループ内のすべての物理ディスクが引き続き使用されるため、仮想マシンのディスクが増加する可能性があります。

3. Kafka をダウンロードして構成する

ここでは、公式 Web サイトを使用してクラスターをインストールおよび構成します。ネットワークセグメントをまたぐ問題に注意する必要があります。Kafka が仮想マシン NAT モードで複数のネットワーク カードを同時に使用する場合は、VMWare の NAT 構成に特に注意してください。

  1. VM DHCP が NAT 用にアクティブな IP アドレスを割り当てることを回避するには、静的 IP アドレスとゲートウェイを使用します。
  2. VMNat の設定後も接続できない場合は、再起動するよう注意してください。
  3. Windows ホストのファイアウォール ポート 2181、9092 などを開く必要があります。

4. パフォーマンスチューニング

ホスト サーバーの電力モードは「最大パフォーマンス」にする必要があり、BIOS、UEFI、Windows などの電源オプションを「省電力」または「バランス」に設定しないでください。そうしないと、VMWare などの仮想マシンが停止する可能性があります。その間、次のコマンドを使用します

bcdedit /set hypervisorlaunchtype off

Windows の Hyper-V を終了してください。終了しないと、仮想マシンのパフォーマンスが低下します。

このような調整を行った後、全体的なパフォーマンスは非常に良好になり、物理マシンのパフォーマンスとそれほど変わりません。

おすすめ

転載: blog.csdn.net/goldenhawking/article/details/130587750