0

現在、elasticsearch-client を介して Elasticsearch と通信しているバックグラウンド ワーカーがファラデー内で 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

クライアント構成はこれです

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 エラーが発生します。

多分それは競合状態の問題だと思った。そのため、それぞれ 50 のスレッドを持つ約 10 のプロセスを生成し、内部で sidekiq perform メソッドを呼び出すスクリプトを実行しましたが、それでも再現できませんでした。

関連する場合は、管理された AWS 2.3 Elasticsearch を使用しています。

正しい方向へのヘルプやガイダンスをいただければ幸いです。必要なだけ多くの情報を添付していただければ幸いです。

4

1 に答える 1