首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch的Faraday::SSLError

Elasticsearch的Faraday::SSLError
EN

Stack Overflow用户
提问于 2016-08-10 07:39:47
回答 1查看 546关注 0票数 0

目前遇到了一个问题,我的后台工作人员通过elasticsearch-client与elasticsearch通信时,在Faraday中遇到了SSL错误。

错误是这样的:

SSL_connect returned=1 errno=0 state=SSLv3 read server hello A: sslv3 alert handshake failure

配置在某些时候工作得很好(大约50%),在控制台会话中对我来说从未失败过。

该命令的跟踪如下:curl -X GET 'https://<host>/_alias/models_write?pretty

客户端配置如下

代码语言:javascript
复制
Thread.current[:chewy_client] ||= begin
  client_configuration[:reload_on_failure] = true
  client_configuration[:reload_connections] = 30
  client_configuration[:sniffer_timeout] = 0.5
  client_configuration[:transport_options] ||= {}
  client_configuration[:transport_options][:ssl] = { :version => :TLSv1_2 }
  client_configuration[:transport_options][:headers] = { content_type: 'application/json' }
  client_configuration[:trace] = true
  client_configuration[:logger] = Rails.logger
  ::Elasticsearch::Client.new(client_configuration) do |f|
    f.request :aws_signers_v4,
              credentials: AWS::Core::CredentialProviders::DefaultProvider.new,
              service_name: 'es',
              region: ENV['ES_REGION'] || 'us-west-2'
  end
end

正如您所看到的,我显式地将ssl版本设置为TSLv1_2,但是仍然得到一个SSLv3错误。

我想可能是种族状况的问题。因此,运行了一个脚本,生成了大约10个进程,每个进程有50个线程,并在内部调用sidekiq执行方法,但仍然无法重现。

我使用的是托管AWS 2.3 Elasticsearch,如果这是相关的话。

任何帮助或指导在正确的方向将非常感谢,我将很高兴附加更多的信息,如有需要。

EN

回答 1

Stack Overflow用户

发布于 2016-08-10 10:47:59

我想通了。问题是elasticsearch-ruby gem自动加载到http适配器中,如果没有指定适配器,它会检测到该适配器。在我的控制台中使用的不是自动加载到sidekiq中的那个。

sidekiq作业正在使用HTTPClient适配器,该适配器不支持sidekiq选项。因此,我得到了这个错误。在显式定义了faraday适配器之后,它就可以工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38862093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档