Apache Ignite не может найти развернутую службу - PullRequest
0 голосов
/ 11 июня 2019

Я заметил странное поведение Apache Ignite, которое довольно надежно происходит в моем 5-узловом кластере Apache Ignite, но может реплицироваться даже с кластером из двух узлов.Я использую Apache Ignite 2.7 для Net в среде Linux, развернутой в кластере Kubernetes (каждый модуль содержит один узел).

Проблема заключается в следующем.Предположим, у нас есть кластер, который состоит из 2 узлов Apache Ignite, A и B. Оба узла запускаются и инициализируются.Пара сервисов Ignite развернута на каждом узле на этапе инициализации.Среди прочего, служба с именем QuoteService развернута на узле B.

Пока все хорошо.Кластер работает как положено.Затем узел B дает сбой или останавливается по какой-либо причине, а затем перезапускается.Все службы зажигания, размещенные на узле B, будут повторно развернуты.Узел повторно присоединяется к кластеру.

Однако, когда служба на узле A пытается вызвать службу QuoteService, ожидаемую доступную на узле B, возникает исключение со следующим сообщением: Не удалось найти развернутую службу: QuoteService.Это странно, так как строка, регистрирующая службу, работала во время перезапуска узла B:

services.DeployMultiple("QuoteGenerator", new Services.Ignite.QuoteGenerator(), 8, 2);

(развертывание службы как singleton не имеет значения)

Перезапуск любого изузел A или узел B отдельно не помогают.Проблема может быть решена только путем выключения всего кластера Ignite и перезапуска всех узлов.

Это условие может быть воспроизведено, даже если запущено 5 узлов.

Этот отчет об ошибке может показаться немного неопределенным, но сложно указать конкретные шаги воспроизведения, поскольку репликация включает в себя настройку как минимум двух узлов зажигания, а также их остановку и перезапуск в последовательности.Итак, позвольте мне сформулировать вопросы следующим образом: 1. Вы когда-нибудь замечали такое состояние или получали подобные отчеты от других пользователей?2. Если да, какие шаги вы можете порекомендовать для решения этой проблемы?3. Стоит ли ждать следующей версии Apache Ignite, когда я читаю, что механизм развертывания службы в настоящее время пересматривается?

UPD: возникает аналогичная проблема на работающем кластере, даже если я не останавливаюсь / не запускаюсьузлы.Я открою еще один вопрос о SA, и, похоже, он имеет другое происхождение.

1 Ответ

0 голосов
/ 01 июля 2019

Я выяснил, что вызвало описанное поведение (хотя я не понимаю, почему именно).

Я хотел убедиться, что служба Ignite развернута только на текущем узле, поэтому я использовал следующий код C # для развертывания службы:

var services = ignite.GetCluster().ForLocal().GetServices();
services.DeployMultiple("FlatFileService", new Services.Ignite.FlatFileService(), 8, 2);

Когда я изменил свой код, полагаясь только на NodeFilter, чтобы ограничить развертывание службы определенным набором узлов, и избавился от «GetCluster (). ForLocal ().», Ошибка исчезла. Окончательный код выглядит следующим образом:

var flatFileServiceCfg = new ServiceConfiguration
{
    Service = new Services.Ignite.FlatFileService(),
    Name = "FlatFileService",
    NodeFilter = new ProductServiceNodeFilter(),
    MaxPerNodeCount = 2,
    TotalCount = 8
};
var services = ignite.GetServices();
services.DeployAll(new[] { flatFileServiceCfg, ... other services... });

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

...