Apache Ignite:在日志中添加了数千条警告“无法在超时内执行握手”

问题描述 投票:1回答:1

最近我已将运行在.Net Core 3.1应用程序中的Apache Ignite从2.7.5更新为2.8.1,今天我在日志中注意到了成千上万的类似警告

Jun 03 18:26:54 quote-service-us-deployment-5d874d8546-psbcs org.apache.ignite.internal.processors.odbc.ClientListenerNioListener: Site: WARN - Unable to perform handshake within timeout [timeout=10000, remoteAddr=/10.250.0.4:57941]
Jun 03 18:26:59 quote-service-uk-deployment-d644cbc86-7xcvw org.apache.ignite.internal.processors.odbc.ClientListenerNioListener: Site: WARN - Unable to perform handshake within timeout [timeout=10000, remoteAddr=/10.250.0.4:57982]
Jun 03 18:26:59 quote-service-us-deployment-5d874d8546-psbcs org.apache.ignite.internal.processors.odbc.ClientListenerNioListener: Site: WARN - Unable to perform handshake within timeout [timeout=10000, remoteAddr=/10.250.0.4:57985]
Jun 03 18:27:04 quote-service-uk-deployment-d644cbc86-7xcvw org.apache.ignite.internal.processors.odbc.ClientListenerNioListener: Site: WARN - Unable to perform handshake within timeout [timeout=10000, remoteAddr=/10.250.0.4:58050]
Jun 03 18:27:04 quote-service-us-deployment-5d874d8546-psbcs org.apache.ignite.internal.processors.odbc.ClientListenerNioListener: Site: WARN - Unable to perform handshake within timeout [timeout=10000, remoteAddr=/10.250.0.4:58051]
Jun 03 18:27:09 quote-service-uk-deployment-d644cbc86-7xcvw org.apache.ignite.internal.processors.odbc.ClientListenerNioListener: Site: WARN - Unable to perform handshake within timeout [timeout=10000, remoteAddr=/10.250.0.4:58114]
Jun 03 18:27:09 quote-service-us-deployment-5d874d8546-psbcs org.apache.ignite.internal.processors.odbc.ClientListenerNioListener: Site: WARN - Unable to perform handshake within timeout [timeout=10000, remoteAddr=/10.250.0.4:58118] 

我不直接在我的应用程序中使用ODBC或JDBC,并且该应用程序在虚拟网络的Kubernetes集群中运行。 有趣的是,在所有情况下,连接另一端的IP(在这种情况下为10.250.0.4)都属于kube-proxy pod。我对此有些困惑。

UPD:据报告,相同的IP地址也属于以下Pod:azure-ip-masq-agent和azure-cni-networkmonitor(我猜那些属于我用来运行K8s群集的Azure Kubernetes服务)

因此,网络监视器可能正在尝试访问ODBC端口(只是猜测)。是否有任何机会抑制该警告或完全禁用ODBC连接?我不使用ODBC,但由于我偶尔使用DBeaver连接到Ignite实例,所以我希望保持JDBC连接启用。谢谢!

ignite
1个回答
0
投票

如果您已定义服务并打开端口10800,则K8将通过kube-proxy执行运行状况检查。这将导致Ignite在该端口日志上收到不完整的握手消息“无法执行握手”消息。

ClientListenerNioListener:站点:WARN-无法在超时内执行握手[timeout = 10000,remoteAddr = / 10.250.0.4:58050]

这里客户端连接器侦听器(ClientListenerNioListener)表示它无法在10秒内与remoteAddr = / 10.250.0.4:58050建立成功的握手

配置客户端连接器:https://apacheignite.readme.io/docs/binary-client-protocol#connectivity客户端连接器握手:https://apacheignite.readme.io/docs/binary-client-protocol#connection-handshake

打开端口10800的服务示例:

kind: Service
metadata: 
  # The name must be equal to TcpDiscoveryKubernetesIpFinder.serviceName
  name: ignite
  # The name must be equal to TcpDiscoveryKubernetesIpFinder.namespaceName
  namespace: ignite
spec:
  type: LoadBalancer
  ports:
    - name: rest
      port: 8080
      targetPort: 8080
    - name: sql
      port: 10800
      targetPort: 10800

您可以重新定义服务以不打开端口或将服务定义更新为使用不同的端口进行运行状况检查:https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip

service.spec.healthCheckNodePort-指定服务的运行状况检查节点端口(数字端口号)。如果未指定healthCheckNodePort,则服务控制器将从群集的NodePort范围分配端口。您可以通过设置API服务器命令行选项--service-node-port-range来配置该范围。如果客户端指定,它将使用用户指定的healthCheckNodePort值。仅当将类型设置为LoadBalancer并将externalTrafficPolicy设置为Local时,此选项才有效。

© www.soinside.com 2019 - 2024. All rights reserved.