我们经常看到来自 Cassandra 客户端日志的警告消息
[s0-io-8] DEBUG kerberosAuthProvider@KerberosAuthenticator Loggin in login configuration entry named CassandraJavaClient.
[s0-admin-1] WARN [s0/<IP ADDRESS : PORT>] **Error while opening new channel (ConnectionInitException:** [s0|id: 0xa9cfaf9e, l:/10.255.85.44:60362
- R:<CASSANDRA SERVER NODE IP: PORT>] Protocol initialization request, step 1 (STARTUP {CQL_VERSION=3.0.0, COMPRESSION=snappy, DRIVER_NAME=DataStax Java driver for Apache Cassandra(R), DRIVER_VERSION=4.6.1, CLIENT_ID = <CLIEN_ID>}): unexpected exception (java.lang.RuntimeException: **Failed to establishe a login ))**
虽然我们能够连接到集群并且有时能够运行cql。但是这些警告消息非常频繁(大约 2k/24 小时)。警告消息似乎来自管理员连接。
有时我们在执行查询时会遇到异常。在这些事件中,我们需要重新启动 (PCF) spring boot 应用程序。同样在重新启动后,这些警告消息也不会出现。几天后,这些警告再次出现。有时重新启动也不会清除警告。 无法理解问题。 使用简单的用户名/密码而不是 Kerberos 身份验证器时不会出现此问题。
我们正在使用 Kerberos 进行连接。所有必需的属性都已正确设置。
我们在我们的应用程序中使用以下软件/jars/工具
CassandraJavaClient { com.sun.security.auth.module.krb5LoginModule 需要 不要提示=真 调试=真 refreshKrb5Config=true useTicketCache=true };
CqlSession session = CqlSession.builder().addContactPoints(cpoints)
.withAuthProvider(authProvider)
.withConfigLoader(getConfigLoaders())
.withSslContext(SSLContext.getDefault())
.withKeyspace(keyspace)
.withLocalDatacenter(localdc)
.build();
return session;
@Bean
protected AuthProvider getKerberosAuthProvider() {
return KerberosAuthProvider.builder()
.withSaslProtocol("caas")
.withServerNameResolver(new CustomServerNameResolver())
.build();
}
我们还能做些什么来解决这个问题?此外,任何解决此问题的建议都会有所帮助。