В сети hyperledger fabric
для каждой организации определяется лидер ( Leader ).
Выборы лидера
Механизм выбора лидера используется для выбора одного peer
для каждой организации, который будет связываться с orderer
для получения блоков и инициировать распределение вновь прибывших блоков между другими пирами
своей организации. Введение лидера оптимизирует общий процесс, так как запросы от orderer
отправляется только лидеру каждой организации, а лидер - другим партнерам в этой организации. Определение лидера начинает работать только когда пиры
вступили в какой-либо channel
.
Существует 2 типа выбора лидера:
- Статический ( Static ) - администратор вручную настраивает
peer
в организации как лидера - Динамический ( Dynamic ) -
узлы ( peers )
выполняют процедуру выбора лидера, чтобы выбрать одногоpeer
в организации, который станет лидером.
В примере first network настроено на автоматический выбор.
Статические выборы лидера
Статические выборы лидера позволяют вручную определить одного или нескольких пиров ( peers )
в организации в качестве лидеров.
Пример конфигурации для статического выбора:
peer1:
- CORE_PEER_GOSSIP_USELEADERELECTION=false
- CORE_PEER_GOSSIP_ORGLEADER=true
peer2:
- CORE_PEER_GOSSIP_USELEADERELECTION=false
- CORE_PEER_GOSSIP_ORGLEADER=false
peer3:
- CORE_PEER_GOSSIP_USELEADERELECTION=false
- CORE_PEER_GOSSIP_ORGLEADER=false
Если выставить значения CORE_PEER_GOSSIP_USELEADERELECTION и CORE_PEER_GOSSIP_ORGLEADER в true это приведёт к ошибке.
Нужно также позаботиться о доступности лидера.
Динамические выборы лидера
Выбор лидера осуществляется автоматически.
Динамически избранный лидер отправляет сообщения с проверкой доступности ( ping ) остальным пирам в качестве доказательства жизнеспособности. Если один или несколько пиров не получат пакетов в течение установленного периода времени, они выберут нового лидера. Т.е может получится что в сети с большим количеством пиров будет несколько лидеров. Но после исправления проблем с доступностью всех пиров
в лидерах останется только один.
По умолчанию время жизни лидера равно 10 секундам. Для того, чтобы исправить правим файл core.yaml
:
peer:
gossip:
election:
leaderAliveThreshold: 20s
Пример конфигурации для динамического выбора:
peer1:
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
peer2:
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
peer3:
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
Screenshots
peer2 стал лидером
peer1 не смог стать лидером
после отключения peer2 лидером стал peer1
Комментарии