|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Привет друзья! Это мой последний топик в уходящем году. Мои вопросы. 1. Кто из вас использует децентрализованные одноранговые вычислительные системы и как вы выбираете мастера? 2. Используете-ли подмножество протколов Paxos(Raft). 3. Бывают-ли у вас непрерывные процессы голосования? 4. Бывают-ли у вас ситуации split-brain? 5. Используете-ли zookeeper? Как обеспечиваете его надёжность? 6. Используете-ли Apache Cassandra? 7. Используете-ли Apache Ignite? Вопросы телезрителей. 1. Один из мемберов интересовался причиной выпиливания zookeeper из Кафки. Прошу прокомментировать кто вкурсе. Как возникла эта тема Тема возникла когда я начал читать книгу по Apache Cassandra. Это интересная DBMS. У нее очень слабый SQL. И в классификации Брюера система сидит где-то в группе AP (Avaliabilty + Partition tolerance). Вобщем ее можно рассматривать как сет ин-мемори таблиц в сети которые консистентны только сами с собой но для внешнего соединения - могут обещать только eventual consistancy. Само собой никакой JOIN в кассандре не работает. Но у нее есть интересное свойство которое просто завораживает. Кассандра полностью децентрализована. Ровно как и ее клиентский драйвер. Тоесть нету единого управляющего центра всей инфраструктуры который бы мониторил здоровье узлов и принимал решения о переключении реплик. Вобщем в этой же книге я вычитал о том что под капотом кассандра использует paxos как способ решения задачи выбора мастера для таблиц. Вообще ее архитектура предполагает бесконечное число таблиц с копиями разбросанными по всему миру. Тема была подогрета изучением и использованием децентрализованного кеша Apache Ignite. О себе Я не использовал подобные технологии и поэтому в топике буду больше задавать вопросы. И все прочие - тоже прошу задавать ваши вопросы. Не стесняйтесь. Мои знания в использовании подобных систем остались в 2000х годах. Где были *.ini файлы и список ip адресов в конфигах. Что мы НЕ будем обсуждать. - восстановление баз данных или мессенджинговых систем после сбоя. - старый и статичные конфигурации на базе иерархического старшинства узлов вычислительной сети . - покупка лицензий на коммерческие системы. Ссылки по теме - толстая бумажка из Стендфорского Университета которая описывает принципы Raft https://raft.github.io/raft.pdf - просто визуализация работы Raft https://raft.github.io/ - теоретические основы Paxos https://www.cs.rutgers.edu/~pxk/417/notes/paxos.html Ссылки на вики вы найдете сами. Go-go читать и отвечать. Поздравляю вас с наступающим 2021 периодом планеты Земля. Желаю вам всем здоровья и побольше крупных денежных банкнот. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 20:24 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
ИМХО Тут конкретную задачу надо. У меня была задача сделать несколько серверов авторизации, список открытых сессий синхронизировался между всеми, но иногда возникали конфликты, для разрешения конфликтов я сделал просто - чей IP больше (как число), тот главнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 21:14 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Как у тебя клиенты узнавали куда ходить? И какого уровня согласованность требовалась. Просто если это DNS то там вообще пофиг куда ходить. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2020, 01:36 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
А вобщем об изменении в кластере должны знать сразу все участники. У тебя мастер с адресом 192.168.1.1 упал. Его по рангу подхватил следующий. 192.168.1.2. К нему идут клиенты. Далее - ты починил мастер и он снова поднялся. Как узнают клиенты что они должны переключиться? А как третий slave с адресом 192.168.1.3 узнает откуда ему тянуть свежие данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2020, 13:34 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
mayton Кто из вас использует децентрализованные одноранговые вычислительные системы и как вы выбираете мастера? У меня мультимастер. Клиенты коннектятся сразу ко всем им известным нодам. Кто первый ответил - тот и папка. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2020, 15:26 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov mayton Кто из вас использует децентрализованные одноранговые вычислительные системы и как вы выбираете мастера? У меня мультимастер. Клиенты коннектятся сразу ко всем им известным нодам. Кто первый ответил - тот и папка. А где лежат данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2020, 18:04 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Везде. Shared nothing с полной репликацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2021, 14:41 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Везде. Shared nothing с полной репликацией. Ну... если у тебя так всё хорошо - тогда тебе и мастер не нужен. И этот топик вобщем тоже не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2021, 15:23 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
mayton Как у тебя клиенты узнавали куда ходить? И какого уровня согласованность требовалась. Просто если это DNS то там вообще пофиг куда ходить. По сути - DNS, идут везде, где быстрей ответят там и мастер для конкретного клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2021, 16:40 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Dima T mayton Как у тебя клиенты узнавали куда ходить? И какого уровня согласованность требовалась. Просто если это DNS то там вообще пофиг куда ходить. По сути - DNS, идут везде, где быстрей ответят там и мастер для конкретного клиента. DNS - это система с ослабненной консистентностью. Тоесть она работает просто потому что таковы ее слабые требования. А если вы попробуете шаблон DNS натянуть на классическую реляционку то вариант - кто первый ответил тот и прав - не работает. Или вам надо будет рассказать как решать спорные ситуации когда сделаны конкурирующие UPDATES на двух мастерах. DNS в силу своей иерархичности решает эти проблемы по другому. И TTL и невысокая скорость ротации информации позволяют DNS долго находится разным уровням в изоляции друг от друга и не испытывать особых проблем. Вобщем в данном топике DNS - плохой пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2021, 16:07 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Детализирую 4 вопрос 4. Бывают-ли у вас ситуации split-brain? Изначально Raft-кластер обладает сведениями о количестве нод и их сетевых ендпоинтах. В данном примере 5-узловой кластер работает в условиях когда все ноды видят всех. Допустим ноды S1,S2 стоят в Los-Angelos, Chicago, а S3,S4,S5 - Лондон, Париж, Франкфурт. При пропадении сети межу США и Европой возможна ситуация когда S1,S2 и S3,S4,S5 образуют свои собственные мастер узлы и таким образом в кластере наступает шизофрения. Клиенты - в простейшей ситуации - ведомые. Тоесть они не принимают решения а просто следуют редиректу в мастер если им требуется запись, или просто работают с тем узлом который доступен но сам узел маршрутизирует мастер-трафика на мастер и читающий трафик как есть. Разумеется я придумал гипотетическую ситуацию. Между США и Европой сеть вряд-ли пропадет. Там существуют резервные каналы и даже наверное с избыточностью. Но мой вопрос в основном пока теоретический. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 01:23 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
mayton Или вам надо будет рассказать как решать спорные ситуации когда сделаны конкурирующие UPDATES на двух мастерах. Нет, это таки вам надо будет рассказать на каком основании на двух мастерах были проведены конкурирующие UPDATEs. При нормальной работе бизнеса и правильно спроектированной БД их возникать не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 14:55 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
По поводу этого вопроса 3. Бывают-ли у вас непрерывные процессы голосования? В документе от стенфорда описывают фазу неудачных выборов. Хотелось-бы узнать условие стабильности. Тоесть возможны ли такие мои конфигурации или условия в сети при которых выборы идут бесконечно? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 15:36 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov mayton Или вам надо будет рассказать как решать спорные ситуации когда сделаны конкурирующие UPDATES на двух мастерах. Нет, это таки вам надо будет рассказать на каком основании на двух мастерах были проведены конкурирующие UPDATEs. При нормальной работе бизнеса и правильно спроектированной БД их возникать не должно. Я не очень хотел уходить в детали реализации бизнесовых систем. Все таки тема топика - выбор мастера. А остальное - идет как дополнительные вопросы. Хорошо. Приведу пример. Вы строите систему наподобие NoSQL (key-value) хранилища. В типовых конфигурациях нам обычно предлагают схему Master-Slave или схему 1-Мастер и несколько Slaves для обеспечения масштаба. Наивное предположение о том что будет больше читающих транзакций. Ну да ладно. Пускай. Мастер - пишет транзакции и позволяет чтение. Слейвы - просто реплицируют измерения с мастера и предлагают услугу доступа в режиме R/O для отчотов или каких-то других транзакций которым этого режима достаточно. Ситуация аварий. Либо работает арбитр. Это некий третий сервер который "видит всё" и принимает решение о том что пора переключаться с умершего мастера на любого из слейвов. Либо просто админ или девопс видя ситуацию по мониторам аварий - принимает решение о переключении. Последнюю схему я встречал чаще всего. И обычно она либо не работала по разным причинам. Либо переключение занимало слишком много времени (тут был человеческий фактор в основном). Либо резервная конфигурация была слабее (типично для гос-предприятий 2000х) и ее вобщем никто на нагрузку не тестировал. Просто она существовала как "на всякий пожарный случай". Модель одноранговая - мне нравится. С автоматическим выбором мастера. Вот почему я и поднял этот топик. Ситуацию конкурирующих UPDATES можно себе представить когда из 5 например PostgresQL баз с 1 мастером после сплита мозга - стартовало по 1 мастеру в Америке и Европе. И клиенты успели напихать в оба мастера бизнес операций которые могут друг друга взаимно отменять. (Это всё моё видение проблемы. Если я не прав или вы видите не так - то прошу рассказать) P.S. В этих протоколах выбора мастера я пока еще не разбираюсь поэтому мне простительно делать ошибки именно в предположениях и контрактах относительно ИХ РАБОТЫ и ИХ РОЛИ в управлении кластерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 15:47 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
mayton Хорошо. Приведу пример. Вы строите систему наподобие NoSQL (key-value) хранилища. В типовых конфигурациях нам обычно предлагают схему Master-Slave или схему 1-Мастер и несколько Slaves для обеспечения масштаба. Наивное предположение о том что будет больше читающих транзакций. Ну да ладно. Пускай. Мастер - пишет транзакции и позволяет чтение. Слейвы - просто реплицируют измерения с мастера и предлагают услугу доступа в режиме R/O для отчотов или каких-то других транзакций которым этого режима достаточно. Ситуация аварий. Либо работает арбитр. Это некий третий сервер который "видит всё" и принимает решение о том что пора переключаться с умершего мастера на любого из слейвов. Либо просто админ или девопс видя ситуацию по мониторам аварий - принимает решение о переключении. Последнюю схему я встречал чаще всего. И обычно она либо не работала по разным причинам. Либо переключение занимало слишком много времени (тут был человеческий фактор в основном). Либо резервная конфигурация была слабее (типично для гос-предприятий 2000х) и ее вобщем никто на нагрузку не тестировал. Просто она существовала как "на всякий пожарный случай". Модель одноранговая - мне нравится. С автоматическим выбором мастера. Вот почему я и поднял этот топик. я с такой nosql встречался, причем она достаточно близка к привычным sql. называется cloudera kudu , работает в связке с impala на hadoop. там один мастер и несколько (минимум 2) read only слейва. мастер выбирает raft. на узлах кстати есть redo и undo структуры, напоминнающие оракловые. так вот, обычные сбои, когда действительно пропадают ноды или куски кластера оно отрабатывает вполне неплохо, основная засада у нас в нагрузке. на узел с куду сваливается нагрузка, процы заняты под 100%, менеджмент процесс начинает с задержками отвечать другим. соседняя нода замечает перебои и начинает процесс выбора нового мастера. другая нода сбоя не замечала, говорит что не согласна, но через пару секунд сама инициирует процесс выбора. я вот такое наблюдал. но если бой реальный, отключилась нода - то работает вполне не плохо. оставшиеся выбирают нового мастера и раскидывают копии таблетов с пропавшей ноды по другим узлам кластера. правда мне кажется если меньше 3х реплик таблет становится недоступным для записи. сплит тоже разок случился, мне кажется тогда руками конфликт разруливали. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 16:30 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
На базе Consul от HashiCorp можно реализовать Leader election. В документации у них всё хорошо расписано. Да и не только у них. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 16:52 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
mayton Допустим ноды S1,S2 стоят в Los-Angelos, Chicago, а S3,S4,S5 - Лондон, Париж, Франкфурт. При пропадении сети межу США и Европой возможна ситуация когда S1,S2 и S3,S4,S5 образуют свои собственные мастер узлы и таким образом в кластере наступает шизофрения. По-хорошему каждая нода должна знать что их всего пятеро, т.е. работать можно если в живых не менее трех. В таком случае S1 и S2 видя только друг-друга должны самоустраниться. PS тут возникает более сложная ситуация: допустим мастер был S1 и успел какое-то время поработать пока не сообразил что S3,S4,S5 отпали. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 18:32 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
hck2, спасибо. Добавлю Apache Cudu к списку. Я трекаю пока набор просто названий чтоб хотя-бы понять что есть что терминологически. Тоесть где какая аббревиатура что значит. И какой алгоритм или протокол использует софт. Пока вот что нарисовал. NameUses or depends onApache IgniteTCP/IP discovery(?), ZooKeeper DiscoveryInfinispan2PC ?Apache CassandraPaxos ?, Gossip protocol, Phi Accural Failure DetectionHazelcastRaft ?Apache StormNimbus ?ZooKeeperZABApache CuduRaft ?ConsulPGPoolLogical Clocktwo-phase commit protocol (2PC)three-phase commit protocol (3PC)ZAB (ZooKeeper Atomic Broadcast protocol) Еще у Apache Ignite была топология наподобие Token Ring. Забыл как она у них называлась. Наверное надо найти и вписать. И есть еще целый пласт Hadoop технологий у которых тоже есть свой алгоритм определения мастера. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 19:28 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Dima T mayton Допустим ноды S1,S2 стоят в Los-Angelos, Chicago, а S3,S4,S5 - Лондон, Париж, Франкфурт. При пропадении сети межу США и Европой возможна ситуация когда S1,S2 и S3,S4,S5 образуют свои собственные мастер узлы и таким образом в кластере наступает шизофрения. По-хорошему каждая нода должна знать что их всего пятеро, т.е. работать можно если в живых не менее трех. В таком случае S1 и S2 видя только друг-друга должны самоустраниться. PS тут возникает более сложная ситуация: допустим мастер был S1 и успел какое-то время поработать пока не сообразил что S3,S4,S5 отпали. Тогда получается что если в кластере 4 узла и происходит split поровну - то с такой квотой Raft не смог-бы создать кластер вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 19:29 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
skyANA На базе Consul от HashiCorp можно реализовать Leader election. В документации у них всё хорошо расписано. Да и не только у них. Спасибо. Добавил в список. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 19:30 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
mayton Dima T пропущено... По-хорошему каждая нода должна знать что их всего пятеро, т.е. работать можно если в живых не менее трех. В таком случае S1 и S2 видя только друг-друга должны самоустраниться. PS тут возникает более сложная ситуация: допустим мастер был S1 и успел какое-то время поработать пока не сообразил что S3,S4,S5 отпали. Тогда получается что если в кластере 4 узла и происходит split поровну - то с такой квотой Raft не смог-бы создать кластер вообще. Верно. Мастер где был, там и остался. ИМХО Ты паранойизируешь задачу. Она решает отказ одного узла, а ты хочешь чтобы решался отказ любого количества узлов. В нормальной системе узлы пачками не отпадают. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 19:42 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Еще с презентаций по отказоустойчивому Postgres я вспомнил про такой менеджер выборов как Patroni. Тоже добавлю его к сравнению. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 19:43 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
Dima T mayton пропущено... Тогда получается что если в кластере 4 узла и происходит split поровну - то с такой квотой Raft не смог-бы создать кластер вообще. Верно. Мастер где был, там и остался. ИМХО Ты паранойизируешь задачу. Она решает отказ одного узла, а ты хочешь чтобы решался отказ любого количества узлов. В нормальной системе узлы пачками не отпадают. Я думаю да. В моём вопросе есть как-бы отсылка к задачам парадоксам наподобие "задачу двух генералов". Теоретически такая ситуация возможна. Но на практике скорее всего падения половины узлов не будет. Тоесть грубо говоря. Я предполагаю что Raft и Paxos и им подобные имеют недоказуемую теоретически но практически рабочую идею. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 19:46 |
|
Предновогодний протокол выбора мастера в сети (Paxos, Raft)
|
|||
---|---|---|---|
#18+
MongoDb и ее коробочный вариант отказоустойчивого кластера. Я чет непонял. В книге "Mongo in Action пишут" что минимальная рекомендуемая конфигурация содержит 3 узла. 1 мастер и 1 реплики и 1 арбитр. Этот арбитр внушает недоверие. Непонятна рекомендация по его место-расположению. Пускай знающие монго-воды прокомментируют. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 23:10 |
|
|
start [/forum/topic.php?fid=16&msg=40033359&tid=1339635]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 441ms |
0 / 0 |