Инженеры на месте: быстро развертывайте кластеры Kafka на Windows Server с помощью томов VMware+LVM.

В последнее время было много сложных локальных проблем, на этот раз возникла проблема с развертыванием кластеров Kafka на 4 серверах Windows Server. Это относительно редкая операция, потому что некоторые зависимые драйверы плохо поддерживают виртуализацию и могут работать только на физических машинах Win.

Первоначальный бизнес верхнего уровня был разработан и управлялся командой B. Теперь команда B работает самостоятельно и должна перенести бизнес-поток команды B на эти 4 сервера Windows. Из-за введения Лао Дина я руководил миграцией на месте, но она не была гладкой, поэтому я записываю это.

1. Windows Kafka присутствует ОШИБКА

Для первой миграции, учитывая, что пропускная способность Kafka может быть большой, если вы не наступили на яму, вы можете подготовиться к использованию java + kafka напрямую, чтобы собрать его под windows. Ведь кафка, скачанная с официального сайта, имеет папку windows.

В этом подходе есть большие ямы. Когда экземпляр kafka под Windows удалит журнал с истекшим сроком действия, он столкнется с исключением перезапуска, вызванным невозможностью удалить файл. Такое исключение часто возникает после того, как очередь сообщений входит в окно скользящего удаления.

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. Дней журнала (или предполагаемый размер) S байтов, которые kafka собирается зарезервировать на виртуальной машине.

Для обеспечения:

  1. 0.9P >= Q. Будьте очень бдительны. Даже если R << P, но Q > P, после того, как система проработает некоторое время, она зависнет. Это связано с тем, что дисковый файл виртуальной машины будет продолжать расти. ОС в виртуальной машине рассматривает файл vmdk с «размером» Q как физический диск, и когда ОС виртуальной машины использует диск, во избежание фрагментации она будет постоянно помещать новые файлы ближе к концу. В результате, даже если диск виртуальной машины все время не заполнен, после частых добавлений и удалений размер файла диска виртуальной машины (*.vmdk) достигает верхнего предела.

Как показано на рисунке ниже, хотя старый журнал Kafka удаляется в более поздний момент, новый журнал не заполняет начало файла, а продолжает расти в прямом направлении. Это привело к тому, что файл VMDK стал больше. Если так называемый файл vmdk объемом 1 ТБ будет размещен на физическом диске объемом 100 ГБ, даже если журнал Kafka будет храниться всего 1 час, физический диск будет постепенно перегружен.

вставьте сюда описание изображения2. 0.9R >= S. Это означает, что квота виртуальной машины kafka не может быть установлена ​​слишком жестко. Например, если лог нужно разделить на 10 ГБ или 80 ГБ в день, то лучше не устанавливать его удаление через 7 дней, а лучше установить на 5 дней. Потому что какая-то бизнес-логика или пиковые заказы могут внезапно генерировать много тематических данных.

2.2 Добавление массива виртуальных дисков к виртуальной машине

Диск виртуальной машины VMWare поддерживает максимальный объем 8 ТБ. Раньше было достаточно обычных узлов. Но сейчас многие серверы начинаются с 32 ТБ. Кроме того, для подобных приложений, которые хотят использовать Kafka в качестве полудолговременного пула хранения, существуют конфигурации объемом более 64 ТБ. Таким образом, если вы хотите использовать дисковый массив каждой виртуальной машины, вы можете только учитывать, сколько групп дисков выделено для каждой виртуальной машины в соответствии с соответствующей емкостью и ограничениями, указанными в предыдущем разделе.

При этом для удобства нам нужно равномерно настроить количество дисков по размеру самого большого физического дискового массива, а затем разрезать их на блоки по 8 ТБ на машине с малым дисковым массивом. Тома 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 操作系统。

Во второй раз измените способ запроса и подробно проверьте команду, чтобы подтвердить ее еще раз.

我有三块新硬盘,插在了计算机上,被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下。

После завершения на виртуальной машине есть виртуальный диск LVM объемом 24 ТБ.

2.3 Используйте графические инструменты LVM для настройки машина за машиной

Мы все еще надеемся иметь графический интерфейс, потому что в будущем нам нужно будет кадрировать по запросу на каждом сервере. Какой использовать? Раньше я использовал менеджер разделов KDE, который очень прост в использовании:

$ sudo pacman -S partitionmanager

После его установки это действительно не удобно:
Менеджер разделов KDEобратите внимание, что вы должны щелкнуть правой кнопкой мыши перед настройкой и сначала удалить (эквивалентно umount) смонтированный раздел 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 хочет использовать несколько сетевых карт одновременно и в режиме NAT виртуальной машины, обратите особое внимание на настройку NAT в VMWare.

  1. Используйте статический IP-адрес + шлюз, чтобы DHCP виртуальной машины не назначал активный IP-адрес для NAT.
  2. После настройки VMNat, если он по-прежнему не может подключиться, обратите внимание на его перезапуск.
  3. Порты брандмауэра узла Windows 2181, 9092 и т. д. должны быть открыты.

4. Настройка производительности

Режим питания хост-сервера должен быть «максимальная производительность», а параметры питания, включая BIOS, UEFI и Windows, не должны быть установлены на «энергосбережение» или «сбалансированный». Иначе могут полежать виртуальные машины типа VMWare. При этом используйте команду

bcdedit /set hypervisorlaunchtype off

Закройте Hyper-V Windows, иначе это приведет к ухудшению производительности виртуальной машины.

После таких корректировок общая производительность очень хорошая, мало чем отличается от физической машины.

рекомендация

отblog.csdn.net/goldenhawking/article/details/130587750