Всем привет Есть у кого опыт использования MirrorMaker2 с переливом оффетов? Я

делаю сейчас на своих кластерах и он чушь какую-то переливает.

40 ответов

83 просмотра

в чем суть чуши?

Сергей- Автор вопроса
Tetra
в чем суть чуши?

Никакие оффсеты не совпадают. Конфиг вроде беру с документации. Может есть какие-то подводные камни?

убогое решение, берите спарк либу и учите приложение писать в 2 кластера

Сергей- Автор вопроса
Tetra
а должны?

https://kafka.apache.org/documentation/#georeplication-flow-configure Судя по доке - да.

Сергей
Никакие оффсеты не совпадают. Конфиг вроде беру с ...

если у вас нет всей истории с нулевого оффсета по всем топикам, то оффсеты не сохранятся

даже если есть, это всё равно плохое решение, пусть учат приложение работать с 2 кластерами сразу

Сергей
https://kafka.apache.org/documentation/#georeplica...

там ни одной строчки про оффсеты нет, может вы спутали с сохранением порядка, что не равно сохранению номеров оффсетов

Сергей- Автор вопроса
Tetra
там ни одной строчки про оффсеты нет, может вы спу...

sync.group.offsets.enabled: whether to periodically write the translated offsets of replicated consumer groups (in the source cluster) to __consumer_offsets topic in target cluster, as long as no active consumers in that group are connected to the target cluster (default: false) А как это тогда понять? Я думал что это параметр включает трансляцию оффсетов.

Сергей
Никакие оффсеты не совпадают. Конфиг вроде беру с ...

берёте спарк либу для кафки, обнуляете оба кластера, и пишете через либу в 2 кластера, с сохранением индексов офсетов в бд(сцилла\рокс)

Старый Хрыч
даже если есть, это всё равно плохое решение, пуст...

ну плохое это ж относительно, зато быстро и чуток помучавшись можно заставить работать в режиме лишь бы работало. А потом уже заняться реализацией того чего реально надо

Сергей
sync.group.offsets.enabled: whether to periodicall...

это про ситуацию, когда опять же вы мирор настроили на переливку всех данных с начала времен, т.е. с нулевого оффсета и синкаются закоммиченные оффсеты консумеров, а не оффсеты записей. Как любит говорить Хрыч - дока у кафки говно) Тут короч надо между строк много чего читать

Сергей- Автор вопроса
Tetra
это про ситуацию, когда опять же вы мирор настроил...

Ну у меня так и есть в принципе. Пытаюсь все перелить и переключить пользаков чтобы они не читали тоже все два раза.

Сергей
Ну у меня так и есть в принципе. Пытаюсь все перел...

тем более толоько вариант с запиисью в 2 кластера с сохранением индекса офсетов в бд

Сергей
Ну у меня так и есть в принципе. Пытаюсь все перел...

а вам действительно нужен второй кластер не размазанный один большой?

Tetra
а вам действительно нужен второй кластер не размаз...

зукипер в 7 хостов? рафт пока вообще от задержк дохнет

Сергей- Автор вопроса
Tetra
а вам действительно нужен второй кластер не размаз...

У меня есть 2 геораспределенных кластера. Новый и старый. Вот хотел все из старого мигрировать в новый без каких либо отклонений.

от с этого и надо было начинать) сразу ясно что за проблема и почему вы пытаетесь решить ее криво

Сергей
И почему же криво?

Хрыч вышел написал как действовать, сохранение оффсетов не нужно, новые ид группы выдаете и летите дальше на новой кафке

Сергей- Автор вопроса
Tetra
Хрыч вышел написал как действовать, сохранение офф...

А что делать если нужны данные из топика перенести? По факту там есть топик с очень длинным хранением данных. Перенести можно, только вот опять вопрос с оффсетами.

Сергей
А что делать если нужны данные из топика перенести...

"топик с очень длинным хранением данных" - вот и кривость подъехала, оно подразумевалось но теперь хотя бы это в открытую сказано. Процесс тот же - ставим кафку новую, настраиваем консумеры из нее, включаем переливку. Обрабатываем все данные по новой. Если по какойто несуразности у вас не идемпотентная обработка на перечитывании, то вам поможет только ручное разгребание с участием базы и ручным сопоставлением оффсетов.

Сергей
А в чем кривость?

ну вы же не смогли взять стандартную тулзу и решить свою задачу - значит чтото криво. Ну а вообще это специфический антипаттерн при работе с кафкой с хранением всей истории и с ним надо опять же специфически работать раз уж вы обоснованно его выбрали и понимаете его минусы (в которые как раз вляпались) - а раз вляпались, то либо такой паттерн выбран бездумно, либо не проработали, либо реализован частично, либо не хватает квалификации понять что все это надо было проработать. Возможно просто люди ушли которые это все проектировали, а после себя ничего не оставили - тут конечно "криво" не подходит, тут уже управленческий проеб

Tetra
ну вы же не смогли взять стандартную тулзу и решит...

у меня есть топики которые храняться по пол года. но мы реализовывали потому внешние индексы, пишем сразу в 2 кафки, и приложение ориентируется на номер офсета в бд а не кафке

Старый Хрыч
у меня есть топики которые храняться по пол года....

сдается мне что тут такой подход обдуман и не просто так применен) ну и вокруг обвязочка тоже чувствуется неспроста появилась

Tetra
сдается мне что тут такой подход обдуман и не прос...

так потому что зачастую релиз стриминга с багом и потом надо всё перечитывать и переделывать батч

На проде мм2 ещё не запускал, но тесты гонял. По доке: у мм2 именно трансляция оффсетов, а не копирование. Т.е. На кластереА у тебя приходят сообщения 101,102,103. На кластерБ они могут быть среплицированы как 11,12,14 (дубль, например, пришел между или кто записал откуда-то). ММ2 скидывает маппинг консьюмер групп, т.е. 101->11, 102->12, 103->14. Время от времени на кластереБ происходит применение этих записей к консьюмер группам на кластереБ. Если у тебя клиенты опираются на консьюмер группа только - должно работать. Если оффсеты хранятся во внешнем хранилище - ММ2 (по крайней мере без кастомного кода не поможет). Слышал, что есть пара аналогов и вроде у конфлюента репликатор копирует 1в1 за счёт копирования в кластерБ как в реплику, но сам не пробовал

Sergey Andreyev
На проде мм2 ещё не запускал, но тесты гонял. По д...

да там очередная попытка переехать с кластера на кластер без "работы от разработчиков"

Сергей- Автор вопроса
Sergey Andreyev
На проде мм2 ещё не запускал, но тесты гонял. По д...

Конфиг можешь скинуть если не жалко? А то такое ощущение что я криво просто настраиваю у себя

Сергей
Конфиг можешь скинуть если не жалко? А то такое ощ...

Я из KIP и апачевской доки собирал. Попозже постараюсь скинуть

Сергей
Конфиг можешь скинуть если не жалко? А то такое ощ...

В заметках у меня такой конфиг остался (это в одну сторону, с префиксом топиков): ### DEFAULT PROPERTIES: replication.factor=3 replication.policy.separator=___ ### CONNECTORS: clusterA->clusterB.enabled=True clusterA->clusterB.sync.group.offsets.enabled=True clusterA->clusterB.sync.topic.configs.enabled=True clusterA->clusterB.emit.checkpoints.enabled=True clusterA->clusterB.topics=.* clusterA->clusterB.groups=.* Ещё нашёл заметки по такому списку конфигов (больше всяких), плюс здесь политика без добавления префикса топиов. По каждому конфигу можно погуглить что он значит. В КИПах описание некоторых было, по-моему ещё в доках стримзи неплохое описание было. clusterA->clusterB.enabled: true clusterA->clusterB.topics: test-topic clusterA->clusterB.replication.policy.class: org.apache.kafka.connect.mirror.IdentityReplicationPolicy clusterA->clusterB.refresh.topics.enabled: true clusterA->clusterB.sync.group.offsets.enabled: true clusterA->clusterB.sync.topic.configs.enabled: true clusterA->clusterB.refresh.groups.enabled: true clusterA->clusterB.emit.heartbeats.enabled: true clusterA->clusterB.sync.topic.acls.enabled: true clusterA->clusterB.emit.checkpoints.enabled: true

Sergey Andreyev
В заметках у меня такой конфиг остался (это в одну...

Сергей, у тебя получалось настроить копирование оффсетов? У меня идет страшный и неустранимый во времени рассинхрон, и я не могу найти причину. Или это действительно гиблая затея?

Alexander Fedyukov
Сергей, у тебя получалось настроить копирование оф...

На всякий случай: что ты имеешь ввиду под оффсетами? Мм2 копирует сообщения и консьюмер группы с новыми, соответствующими сообщениям, оффсетами. Т.е. оффсеты будут новые: сообщение Х на старом кластере имело оффсет 100, а на новом это будет, например, оффсет 33. Да, копировать сообщения и консьюмер группы получалось, для этого там используется чуть меньше десятка внутренних топиков (смотрите логи авторизации или мм2, если запрещено создание топиков автоматически, как это должно быть)

Sergey Andreyev
На всякий случай: что ты имеешь ввиду под оффсетам...

У меня получается вот так: 0. Есть два кластера А и Б. Б - резервный (требование заказчика). На Б происходит перекючение, когда в основном контуре что-то сильно идет не так. 1. В кластер А мы пишем транзакционно, т.о. оффсеты сдвигаюся еще и на служебные транзакционные сообщения. 2. Кластер Б копирует оффсеты "отставая" по количеству от А как раз на число этих служебных сообщений. Т.е. в итоге часть сообщений из А остается необработанными при переходе рабты в Б. И вот кто тут неправ - непонятно. Возможно я что-то делаю неверно, но понять бы - что.

Так вам важны консьюмер группы или оффсеты сообщений (если вы эти оффсеты храните во внешнем хранилище и используете их для каких-то целей)? В случае консьюмер групп - оно настраивается. В случае именно использования оффсетов - они точно будут различаться и мм2 здесь не поможет

Sergey Andreyev
Так вам важны консьюмер группы или оффсеты сообщен...

Наверное одно без другого в случае репликации оффсетов невозможно. Надеюсь только на MM2. Но вот что-то идет не так

Sergey Andreyev
На проде мм2 ещё не запускал, но тесты гонял. По д...

Перечитайте это сообщение ещё раз о том, как работает мм2 и как он реплицирует консьюмер группы. Если этого не хватает, почитайте ещё раз документацию о том, что гарантирует мм2, а что нет. По точное соответствие оффсетов там ничего нет, только консьюмер группы с другими оффсетами, соответствующими тем же сообщениям на новом кластере

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта