我正在尝试设置sidekiq,以便从我的aws elastic beanstalk(amazonlinux2)示例连接到redis elasticache(支持传输加密)。我关注过这样的链接,但当我这样做时,会得到一个“redis::timeouterror:connection timeout”。因此,现在我不再部署运行“bundle exec sidekiq-e production”命令的脚本,而是以root权限在ec2示例的/var/app/current目录中运行该命令。不幸的是,这个错误仍然出现,我不知道为什么。我的安全组都配置正确,我可以确认端点是否正确。
奇怪的是,我可以通过运行以下命令连接到elasticache上的redis端点:openssl s\u client-quiet-connect my\u redis_endpoint:6379 and 它工作正常。但是sidekiq会启动,然后在我运行时超时。以下是输出:
[root@ip-10-0-2-138 当前]#bundle exec sidekiq-e production 2020-12-04t05:30:39.930z pid=2910 tid=2xygu info:booting sidekiq 6.0.0 with redis options{:url=>“redis://master.redisproductionelasticache.bmxvqz.use2.cache.amazonaws.com:6379/12“,:ssl=>true,:network\u timeout=>5,:id=>”sidekiq-server-pid-2910“}
2020-12-04t05:31:04.271z pid=2910 tid=1e7u1a class=messagebroadcastjob jid=82dd4217186de283e9d9bb70经过时间=10.251信息:失败
2020-12-04t06:10:30.391z pid=2910 tid=1e7wm6警告:{“context”:“job raised exception”,“job”:{“class”:“activejob::queueadapters::sidekiqadapter::jobwrapper”,“wrapped”:“messagebroadcastjob”,“queue”:“default”,“args”:[{“job\u class”:“messagebroadcastjob”,“job\u id”:“4d7d5195-7444-44c9-81c7-7f9a0c6b1f75”,“provider\u job id”:null,“queue\u name”:“default”,“priority”:null,“arguments”:[{“\u aj\u globalid”:gid://e-wagers/message/57bed09a-ef2d-4963-8288-65fe733347ba“}],“executions”:0,“locale”:“en”}],“retry”:true,“jid”:“a8f258e1feeecbf8c40a21a5”,“created\u at”:1607059284.1670992,“enqueued\u at”:1607062220.2854364,“error\u message”:“connection timeout”,“error\u class”:“redis::timeouterror”,“失败时间:1607059284.1989071”,重试次数:6,“重试时间:1607060724.9108222},“jobstr”:”
以下是我的配置文件:
# config/initializers/sidekiq.rb
require 'sidekiq'
require 'sidekiq/web'
rails_root = Rails.root || File.dirname(__FILE__) + '/../..'
rails_env = Rails.env || 'development'
redis_config = YAML.load_file(rails_root.to_s + '/config/redis.yml')
redis_config.merge! redis_config.fetch(Rails.env, {})
redis_config.symbolize_keys!
Sidekiq.configure_server do |config|
config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12", ssl: true, network_timeout: 5 }
end
Sidekiq.configure_client do |config|
config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12", ssl: true, network_timeout: 5 }
end
development:
host: 'localhost'
port: 6379
db: 5
production:
host: 'master.my_redis_endpoint.bmxvqz.use2.cache.amazonaws.com'
port: 6379
db: 5
# config/sidekiq.yml
:concurrency: 25
:queues:
- [mailers, 3]
- ["priority", 2]
- ["default", 1]
你知道这是什么原因吗?不幸的是,网上关于sidekiq和elasticache、elasticbeanstalk以及更新的amazonlinux2平台的资源并不多。
1条答案
按热度按时间smtd7mpg1#
你试过用吗
rediss://
而不是redis://