Настройка сетевого взаимодействия.
Ignite поддерживает протоколы IPv4 и IPv6 для работы по сети. Но все мы понимаем, что IPv6 никто не использует в промышленных масштабах.
Поэтому правильным решением будет ограничить Ignite IPv4, установив параметр -Djava.net.preferIPv4Stack=true JVM.
Процесс механизма обнаружения нод кластера.
Все сетевые настройки описываются для процесса работы механизма обнаружения нод кластера описываются в классе TcpDiscoverySpi
По умолчанию введённые настройки позволяют нормально функционировать кластеру, но мы в этой статье попытаемся с вами разобраться с возможными параметрами. Как их использовать и на что они влияют.
localAddress - IP-адрес локального хоста, используемый для обнаружения.
localPort - Порт, к которому привязывается узел. Если установлено значение, отличное от значения по умолчанию, другие узлы кластера должны иметь сетевой доступ по этому порту. Заранее проверьте свои фаерволы или сетевые устройства, которые могут закрывать порты. По умолчанию используется порт: 47500
localPortRange -Если локальный порт занят, узел кластера будет пытаться выполнить соединение к следующему порту (увеличенному на 1) и продолжает этот процесс, пока не найдет свободный порт. Свойство localPortRange определяет количество портов, которые будет пробовать узел (начиная с LocalPort). По умолчанию 100.
reconnectCount - Количество попыток узла (повторно) установить соединение с другим узлом. По умолчанию 10.
networkTimeout - Максимальное время ожидания сети в миллисекундах для сетевых операций. По умолчанию 5000 мс.
socketTimeout - Время ожидания операций сокета. Этот тайм-аут используется для ограничения времени подключения и времени записи в сокет. По умолчанию 5000 мс.
Сокет - это промежуточный уровень абстракции программного обеспечения для связи между прикладным уровнем и семейством протоколов TCP / IP, представляющий собой набор интерфейсов.
ackTimeout - Время ожидания подтверждения для сообщений об обнаружении узла кластера. Если подтверждение не получено в течение этого времени ожидания, механизм обнаружения узла кластера попытается повторно отправить сообщение. По умолчанию 5000 мс.
joinTimeout - Время ожидания соединения определяет, сколько времени узел ожидает присоединения к кластеру. Если узлу не удается подключиться к какому-либо адресу из IP-finder, узел продолжает пытаться подключиться в течение этого времени ожидания. Если установлен параметр 0 означает бесконечное ожидание узла для поиска кластера. По умолчанию установлен 0.
statisticsPrintFrequency - Определяет, как часто узел выводит в лог инфу об обнаружении кластера. Если установлен порт 0 значит в лог нечего писаться не будет. Если значение больше 0, тогда в логах(уровень INFO) будет периодически писаться информация о работе процесса механизма обнаружения.
Процесс коммуникации внутри кластера.
После того, как ноды обнаруживают друг друга и формируется кластер, они обмениваются сообщениями через SPI (механизм обнаружения) связи. Сообщения представляют собой распределенные кластерные операции, такие как выполнение задач, операции изменения данных, запросы и т.д. Реализация SPI связи по умолчанию использует протокол TCP/IP для обмена сообщениями (tcpcommunicationspi).
В этом разделе описываются свойства TcpCommunicationSpi.
idleConnectionTimeout - Максимальное время ожидания соединения в режиме ожидания (в миллисекундах), после которого соединение закрывается. По умолчанию 600000.
usePairedConnections - Следует ли применять двойное соединение между узлами. Если установлено значение true, между соединяющимися узлами будут установлены два отдельных соединения: одно для исходящих сообщений и одно для входящих сообщений. Если установлено значение false, для обоих направлений будет использоваться одно TCP-соединение. Эта настройка полезна в некоторых операционных системах, когда доставка сообщений занимает слишком много времени(из за объема сообщений или по другим причинам). По умолчанию false.
socketReceiveBuffer - размер буфера для сокетов входящих соединений. Если установлено значение 0, используется значение операционной системы по умолчанию. По умолчанию 0.
socketSendBuffer - размер буфера для исходящих сокетов. Если установлено значение 0, используется значение операционной системы по умолчанию. По умолчанию 0.
Время ожидания тайм-аутов соединений
Существует несколько настроек, определяющих время ожидания соединения:
IgniteConfiguration.failureDetectionTimeout - Время ожидания для основных сетевых операций для серверных узлов. По умолчанию 10000 мс.
IgniteConfiguration.clientFailureDetectionTimeout - Время ожидания для основных сетевых операций для клиентских узлов. По умолчанию 30000 мс.
Советую вам перепроверить ваши конфиги на проде, тесте и других ландшафтах. А на тесте можете даже поиграть с настройками.
Другие публикации канала
Apache Ignite. Создание кластера