2016-08-09 29 views
0

現在、elasticsearch-client経由でelasticsearchと通信しているバックグラウンドワーカーがファラデー内でSSLエラーに遭遇している問題が発生しています。Faraday :: SSLError for Elasticsearch

エラーはこれです:

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

設定が細かい(〜50%程度)の時間の一部を動作し、それがコンソールセッションの内側に私のために失敗したことがありません。

コマンドのトレースがこれです:あなたは、私が明示的にTSLv1_2へのSSLバージョンを設定し、まだのSSLv3エラーを取得して見ることができるように curl -X GET 'https://<host>/_alias/models_write?pretty

クライアントの設定は、この

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 

です。

競合状態の問題かもしれません。そこで、それぞれ50個のスレッドで約10個のプロセスを生成し、sidekiqメソッドを内部で実行しても、再現できないようにするスクリプトを実行しました。

すべての関連性がある場合は、管理対象のAWS 2.3 Elasticsearchを使用しています。

正しい方向への助けや指導をいただければ幸いです。私は必要に応じて多くの情報を添付することができます。

答えて

0

問題は、elasticsearch-ruby gemがhttpアダプタで自動ロードされ、指定されていない場合に検出されるということでした。私のコンソールで使用されていたものは、sidekiqに自動ロードされたものではありませんでした。

sidekiqジョブが、SSLバージョンオプションを尊重していないHTTPClientアダプタを使用していました。したがって、私はこのエラーを受けていました。ファラデーアダプタを明示的に定義した後、それは機能しました。

関連する問題