异常 ALPN 配置不正确
Posted
技术标签:
【中文标题】异常 ALPN 配置不正确【英文标题】:Exception ALPN is not configured properly 【发布时间】:2019-03-26 22:10:22 【问题描述】:我正在尝试使用 scio 和 apache Beam 从 scala 创建一些云指标来执行数据流任务。 我收到以下错误:
java.lang.IllegalArgumentException: ALPN is not configured properly. See https://github.com/grpc/grpc-java/blob/master/SECURITY.md#troubleshooting for more information.
我按照该 URL 上的步骤添加了一个 JVM 参数:
-Djavaagent=/Users/user/Downloads/jetty-alpn-agent-2.0.6.jar
我也有环境变量:GOOGLE_APPLICATION_CREDENTIALS=/etc/recsys/recsys-dev.json
代码:
val pathToCredsFile = "/etc/recsys/recsys-dev.json"
val credentials = GoogleCredentials.fromStream(new FileInputStream(pathToCredsFile)).createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"))
val settings = MetricServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.build()
val metricServiceClient = MetricServiceClient.create(settings) <-throws ex whether or not I use settings
我能得到一些帮助吗?
【问题讨论】:
github.com/grpc/grpc-java/blob/master/… 是的,我认为我应该使用 Djavaagent,但没有成功。 【参考方案1】:尝试查看Google Cloud Java Troubleshooting 文档,特别是compatibility checker。提供其输出将有助于调试。
jetty-alpn-agent-2.0.6 不支持 JRE 版本 1.8.0u161 及更高版本。升级到 2.0.7 或 2.0.9 可能会更好。但是不鼓励使用 jetty-alpn。如果您使用的是受支持的平台,则 tcnative 或 Conscrypt 是更好的选择。
还应该有一些 INFO 日志,其中包含有关 Jetty ALPN/tcnative/Conscrypt 出了什么问题的其他详细信息(查找“netty-tcnative 不可用(这可能是正常的)”;每个 ALPN 将有一个日志语句提供者,带有回溯)。
【讨论】:
【参考方案2】:您可以在build()之前添加usePaneText()方法来解决ALPN未配置的问题,如下:
val settings = MetricServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.userPlainText()
.build()
这将禁用 SSL 以进行测试或开发环境。
注意:不推荐用于产品环境。
【讨论】:
以上是关于异常 ALPN 配置不正确的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.IllegalArgumentException:Jetty ALPN/NPN 未正确配置
google Cloud spanner java.lang.IllegalArgumentException:Jetty ALPN/NPN 未正确配置
谷歌扳手| java.lang.IllegalArgumentException:尚未正确配置Jetty ALPN / NPN
如何为无 ALPN 客户端配置 Nginx 仅支持 HTTP2