Обнаружение Hazelcast в Openshift: предупреждения о сбросе соединения для IP-адресов маршрутизаторов - PullRequest
0 голосов
/ 23 октября 2019

Обновление маршрутизаторов Openshift с версии 3.7 до версии 3.9 вызвало сотни предупреждений в журналах Openshift:

[timestamp] [hz._hzInstance_1_dev.IO.thread-in-2] WARN com.hazelcast.nio.tcp.TcpIpConnection - [x.x.19.150]:5701 [dev] [3.11.4] Connection[id=157132, /x.x.19.150:5701->/x.x.25.1:50370, endpoint=null, alive=false, type=NONE] closed. Reason: Exception in Connection[id=157132, /x.x.19.150:5701->/x.x.25.1:50370, endpoint=null, alive=true, type=NONE], thread=hz._hzInstance_1_dev.IO.thread-in-2 java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
[timestamp] [hz._hzInstance_1_dev.IO.thread-in-0] WARN  com.hazelcast.nio.tcp.TcpIpConnection - [x.x.31.153]:5701 [dev] [3.11.4] Connection[id=156553, /x.x.31.153:5701->/x.x.9.1:48700, endpoint=null, alive=false, type=NONE] closed. Reason: Exception in Connection[id=156553, /x.x.31.153:5701->/x.x.9.1:48700, endpoint=null, alive=true, type=NONE], thread=hz._hzInstance_1_dev.IO.thread-in-0\njava.io.IOException: Connection reset by peer\n at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
[timestamp] [hz._hzInstance_1_dev.IO.thread-in-2] WARN  com.hazelcast.nio.tcp.TcpIpConnection - [x.x.3.34]:5701 [dev] [3.11.4] Connection[id=157179, /x.x.3.34:5701->/x.x.25.1:60596, endpoint=null, alive=false, type=NONE] closed. Reason: Exception in Connection[id=157179, /x.x.3.34:5701->/x.x.25.1:60596, endpoint=null, alive=true, type=NONE]
[timestamp] [hz._hzInstance_1_dev.IO.thread-in-1] WARN  com.hazelcast.nio.tcp.TcpIpConnection - [x.x.10.75]:5701 [dev] [3.11.4] Connection[id=157171, /x.x.10.75:5701->/x.x.25.1:33826, endpoint=null, alive=false, type=NONE] closed. Reason: Exception in Connection[id=157171, /x.x.10.75:5701->/x.x.25.1:33826, endpoint=null, alive=true, type=NONE]
[timestamp] [hz._hzInstance_1_dev.IO.thread-in-1] WARN  com.hazelcast.nio.tcp.TcpIpConnection - [x.x.27.206]:5701 [dev] [3.11.4] Connection[id=157157, /x.x.27.206:5701->/x.x.25.1:49578, endpoint=null, alive=false, type=NONE] closed. Reason: Exception in Connection[id=157157, /x.x.27.206:5701->/x.x.25.1:49578, endpoint=null, alive=true, type=NONE]
[timestamp] [hz._hzInstance_1_dev.IO.thread-in-1] WARN  com.hazelcast.nio.tcp.TcpIpConnection - [x.x.31.153]:5701 [dev] [3.11.4] Connection[id=157127, /x.x.31.153:5701->/x.x.25.1:42506, endpoint=null, alive=false, type=NONE] closed. Reason: Exception in Connection[id=157127, /x.x.31.153:5701->/x.x.25.1:42506, endpoint=null, alive=true, type=NONE]

Проблема была временно «решена» при откате до версии 3.7: в журналах Hazelcast больше нет предупреждений.

Текущие результаты:

  • Все исключения содержат IP-адреса, заканчивающиеся на xxx1. Это IP-адреса маршрутизаторов Openshift.
  • Целевые порты: 50370, 48700, 60596, 39840, 35046, 59900 и т. Д.

hazelcast.xml:

...
<properties>
    <property name="hazelcast.discovery.enabled">true</property>
    <property name="hazelcast.logging.type">slf4j</property>
</properties>
<network>
    <port port-count="1" auto-increment="false">5701</port>
    <reuse-address>true</reuse-address>
    <join>
        <multicast enabled="false"/>
        <kubernetes enabled="true">
            <namespace>project-name</namespace>
            <service-name>hazelcast-discovery</service-name>
        </kubernetes>
    </join>
</network>

Сведения о версии:

  • Версия Hazelcast: 3.11.4
  • Мастер OpenShift: v3.9.68 (Мастер Kubernetes: v1.9.1+ a0ce1bc657), маршрутизаторы версии 3.9

Разное:

  • Проблема не воспроизводится другим кластером (Openshift 3.11, маршрутизатор 3.9, Hazelcast 3.11).4)
  • Проблема была воспроизведена в том же кластере с версией Hazelcast 3.10.

Вопросы:

  • Что такоеосновная причина этих предупреждений?
  • Можем ли мы настроить нашу конфигурацию, чтобы избежать таких соединений?

Поможет ли это?

  • удалить <property name="hazelcast.discovery.enabled">true</property>
  • add <tcp-ip enabled="false"></tcp-ip> (Я не нашел в документации hazelcast, какое значение по умолчанию для tcp-ip. Официальный пример hazelcast.xml явно установил tcp-ip в false. )

Редактировать 24.10.2019 . Детали развертывания:

  • Приложение и Hazelcast находятся в одном проекте. Приложение подключается к hazelcast по имени службы: hazelcast: 5701
  • Мы используем пользовательские livenessProbe / readinessProbe, которые запускают сценарий bash каждые 10 секунд. См. Ниже.
  • У нас также есть маршрут для Hazelcast. Конечная точка / hazelcast / rest / cluster показала правильное количество членов.
  • Вот полная конфигурация hazelcast: https://gitlab.com/snippets/1907166 Правильны ли настройки нашего сервиса?

Сценарий bash для зондов:

#!/bin/bash
URL="http://127.0.0.1:5701/hazelcast/health/node-state"
HTTP_RESPONSE=$(curl -m 5 -sS $URL | head -1)
if [ "_${HTTP_RESPONSE}" != "_ACTIVE" ]; then
  echo "failure on ${URL}, response: ${HTTP_RESPONSE}"
  exit 1
fi
exit 0

Изменить 25.10.2019 :

$ oc describe svc hazelcast-discovery
Name:              hazelcast-discovery
Namespace:         [project-name]
Labels:            app=hazelcast
                   template=hazelcast-statefulset-template
Annotations:       service.alpha.kubernetes.io/tolerate-unready-endpoints=true

Selector:          name=hazelcast-node-cluster
Type:              ClusterIP
IP:                None
Port:              5701-tcp  5701/TCP
TargetPort:        5701/TCP
Endpoints:         x.x.1.45:5701,x.x.12.144:5701,x.x.13.251:5701 and more...
Session Affinity:  None
Events:            <none>

После перезапуска стручки были перезапущены, поэтому IP-адреса могут отличаться от журналов. Может ли он быть подключен к tolerate-unready-endpoints=true?

...