【问题标题】:chef-server-ctl backup not honoring --timeoutchef-server-ctl 备份不遵守 --timeout
【发布时间】:2017-06-14 05:06:53
【问题描述】:

尝试设置我们的厨师服务器的自动备份,但它在 tar 阶段超时。我手动运行了 tar,它似乎需要 20 多分钟,但默认超时是 10 分钟。我尝试使用 --timeout 并将其设置为 6000 之类的高值,但在 600 秒后仍然超时。

输出:

root@chef-server:/opt/opscode/embedded/lib/ruby/gems/2.1.0/gems/chef_backup-0.0.1# /usr/bin/chef-server-ctl backup --yes --timeout 60000                                                                                                                                   
Locating rsync..
/usr/bin/rsync
Starting Chef Server backup 
Bringing down the Chef Server
ok: down: bookshelf: 1s, normally up
ok: down: nginx: 1s, normally up
ok: down: oc_bifrost: 0s, normally up
ok: down: oc_id: 0s, normally up
ok: down: opscode-chef-mover: 1s, normally up
ok: down: opscode-erchef: 0s, normally up
ok: down: opscode-expander: 0s, normally up
ok: down: opscode-solr4: 0s, normally up
ok: down: rabbitmq: 0s, normally up
ok: down: redis_lb: 0s, normally up
Dumping Postgresql database to /tmp/chef_backup20170613-7603-1hsvyr5/chef_backup-2017-06-13-16-55-10.sql
could not change directory to "/tmp/d20170613-7603-xpkmet"
ok: down: postgresql: 0s, normally up
Writing backup manifest
Creating backup tarball
/opt/opscode/embedded/lib/ruby/gems/2.1.0/gems/mixlib-shellout-2.2.6/lib/mixlib/shellout/unix.rb:183: warning: conflicting chdir during another chdir block
tar: Removing leading `/' from member names
ERROR: Something wen't terribly wrong, aborting backup
ERROR: Command timed out after 600s:
Command exceeded allowed execution time, process terminated
---- Begin output of tar -czf /tmp/chef_backup20170613-7603-1hsvyr5/chef-backup-2017-06-13-16-55-10.tgz /var/opt/opscode/rabbitmq/db /var/opt/opscode/opscode-solr4/data /var/opt/opscode/redis_lb/data /var/opt/opscode/postgresql/9.2/data /var/opt/opscode/bookshelf/data /v
ar/opt/opscode/upgrades /etc/opscode /etc/opscode-manage /etc/opscode-reporting /etc/opscode-push-jobs-server /etc/opscode-analytics manifest.json chef_backup-2017-06-13-16-55-10.sql ----
STDOUT: 
STDERR: /opt/opscode/embedded/lib/ruby/gems/2.1.0/gems/mixlib-shellout-2.2.6/lib/mixlib/shellout/unix.rb:183: warning: conflicting chdir during another chdir block
tar: Removing leading `/' from member names
---- End output of tar -czf /tmp/chef_backup20170613-7603-1hsvyr5/chef-backup-2017-06-13-16-55-10.tgz /var/opt/opscode/rabbitmq/db /var/opt/opscode/opscode-solr4/data /var/opt/opscode/redis_lb/data /var/opt/opscode/postgresql/9.2/data /var/opt/opscode/bookshelf/data /var
/opt/opscode/upgrades /etc/opscode /etc/opscode-manage /etc/opscode-reporting /etc/opscode-push-jobs-server /etc/opscode-analytics manifest.json chef_backup-2017-06-13-16-55-10.sql ----
Ran tar -czf /tmp/chef_backup20170613-7603-1hsvyr5/chef-backup-2017-06-13-16-55-10.tgz /var/opt/opscode/rabbitmq/db /var/opt/opscode/opscode-solr4/data /var/opt/opscode/redis_lb/data /var/opt/opscode/postgresql/9.2/data /var/opt/opscode/bookshelf/data /var/opt/opscode/up
grades /etc/opscode /etc/opscode-manage /etc/opscode-reporting /etc/opscode-push-jobs-server /etc/opscode-analytics manifest.json chef_backup-2017-06-13-16-55-10.sql returned 

有什么想法吗?

编辑:

这是我认为创建 tar 的代码:

  def create_tarball
    log 'Creating backup tarball'
    cmd = [
      "tar -czf #{tmp_dir}/#{export_filename}",
      data_map.services.map { |_, v| v['data_dir'] }.compact.join(' '),
      data_map.configs.map { |_, v| v['data_dir'] }.compact.join(' '),
      Dir["#{tmp_dir}/*"].map { |f| File.basename(f) }.join(' ')
    ].join(' ').strip

    res = shell_out(cmd, cwd: tmp_dir)
    res
  end

来自 /opt/opscode/embedded/lib/ruby/gems/2.1.0/gems/chef_backup-0.0.1/lib/chef_backup/strategy/backup/tar.rb 文件

【问题讨论】:

  • 您能否包含执行tar 操作的相关执行语句/代码?
  • 我必须深入研究厨师代码才能找到它。请耐心等待,我会看看我能不能找到它.. 更新原帖

标签: chef-infra backup


【解决方案1】:

看起来 chef_backup/master/lib/chef_backup/helpers.rb 文件中的 shell_out 函数在 12.6.0 中已过时,并且未在 --timeout 设置中合并。我将文件替换为:https://raw.githubusercontent.com/chef/chef_backup/master/lib/chef_backup/helpers.rb,并且能够覆盖默认超时并允许完成备份。

感谢主厨 Slack 频道帮助我解决这个问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2017-04-24
    • 2016-06-07
    • 2016-08-29
    • 2023-03-13
    • 2022-10-20
    相关资源
    最近更新 更多