Обновление маршрутизаторов 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
?