Настройка BackBlaze S3 с BunnyCDN

Итак, я проверил BunnyCDN. Могу подтвердить, что резервные копии не проходили через CDN: трафик составил 0 КБ. URL CDN хоста отличается от URL загрузки, поэтому, похоже, Discourse его не использует. Однако я могу подтвердить, что резервные копии загружаются из Discourse в Backblaze B2.

1 лайк

Ах, отлично, спасибо за проверку. Это подтверждает мои подозрения. Возможно, @Bill должен обновить руководство OP?

1 лайк

Конечно! Не уверен, как это сформулировать. Может, просто указать, что нужна только одна зона выгрузки, а CDN не имеет доступа к приватному бакету?

1 лайк

Я бы удалил всё от «На вашей панели управления BunnyCDN вы должны создать вторую зону вытягивания» до абзаца, заканчивающегося фразой «стандартный уровень 10$/ТБ», которую я использовал для своего бакета загрузки.

Также, похоже, что вам действительно нужна вторая зона вытягивания CDN, но не для резервного копирования. Я запутался в этом и не мог настроить загрузку на удалённый сервер, пока не правильно настроил одну зону вытягивания для отправки загрузок в BackBlaze (как вы описали) и вторую зону вытягивания для извлечения ресурсов из BackBlaze. См. мой вопрос об этом и полученный мной ответ здесь для получения дополнительной информации.

Похоже, у меня больше нет прав на редактирование оригинальной темы в Discourse — возможно, они истекли по истечении определённого времени или я редактировал её слишком много раз. Я не могу попасть в область редактирования.

Ах, хорошо. Я полагаю, вам нужно будет спросить модератора. В любом случае, даже несмотря на сбой, я благодарен за вашу инструкцию!

1 лайк

Первый пост теперь является вики-страницой (так было, когда я его проверял, не уверен, успел ли кто-то до меня), поэтому любой пользователь с уровнем TL1 или выше может его редактировать.

2 лайка

Привет! Просто хотел сообщить, что Bunny теперь также в партнёрстве с Backblaze! Теперь передача данных из Backblaze в Bunny полностью бесплатна. Так что, помимо повышенной безопасности, вы можете просто перенести данные в Bunny, не проходя через Cloudflare!

2 лайка

Является ли этот шаг излишним? Возможно, более правильный вопрос звучит так… насколько значительны преимущества от этого дополнительного шага, если у вас уже настроено хранилище Backblaze и CDN Bunny? Любые комментарии по этому поводу были бы для меня очень полезны. :folded_hands:

Мне нужна помощь. Последние два дня я ушел в кроличью нору (простите за каламбур про кролика), пытаясь настроить отправку резервных копий и изображений в Backblaze.

Я использовал эту тему на форуме и другие материалы, чтобы попытаться настроить это. Теперь при создании резервных копий я постоянно получаю сообщение об ошибке (хотя загрузка файлов всё ещё не работает, но сначала нужно разобраться с резервными копиями).

Я создал бакеты в Backblaze, ключи доступа и pull-зоны.

Вот настройки в разделе «Все настройки сайта» для S3:

Вот настройки в разделе «Настройки резервного копирования»:

Вот мой файл app.yml — второй раздел, закомментированный, я возился с ним вчера, но из-за этого Discourse зависал на экране загрузки.

При запуске резервного копирования я вижу этот экран, полагаю, потому что у меня ещё не работает загрузка файлов. Возможно, это не имеет значения, но я решил добавить это.

Вот журнал ошибок резервного копирования:

А вот журнал ошибок:

Также хочу упомянуть, что я запускал задачи Rake с помощью:

rake uploads:migrate_to_s3
rake posts:rebake

У меня уже круги перед глазами после двух дней попыток заставить это работать. Не мог бы кто-нибудь помочь понять, где я ошибаюсь? Надеюсь, я предоставил всё необходимое для диагностики проблемы. :tired_face:

1 лайк

Если настройки указаны в вашем файле yml, они не будут отображаться в настройках системы.

Рекомендую следовать руководству Настройка провайдера объектного хранилища, совместимого с S3, для загрузки файлов.

Привет, спасибо за ответ. Я пробовал эту ссылку вчера, но она не сработала. Из-за неё сайт перестал загружаться.

Самое большее, чего я смог добиться, — это текущие настройки, которые у меня есть. Хотя, похоже, возникает ошибка из-за недопустимого региона, и я не уверен, какое именно настройку нужно изменить.

Это потому, что вы пропустили часть вверху, которая загружает ресурсы на S3.

Я добавил код с хуками и снова использовал конфигурацию из ссылки, которую вы опубликовали. Снова зависание.

Я снова закомментировал эту конфигурацию и вернул ту, которую использовал ранее. Я заметил, что мой параметр региона S3 содержал полный URL, поэтому я изменил его на ‘us-west-002’.

Теперь при запуске резервного копирования оно завершается ошибкой, и я получаю другое сообщение об ошибке: EXCEPTION: Unsupported header ‘x-amz-checksum-crc32’ received for this API call.

Кажется, я сдамся и просто буду вручную скачивать резервные копии каждый день.

Я продолжал пытаться заставить это работать, рискуя потерять рассудок :wink:

Последнюю ошибку контрольной суммы, которую я получил, я исправил с помощью этого решения: Can't rebuild due to AWS SDK gem bump and new AWS Data Integrity Protections - #28 by PatPatterson

Для этого я добавил следующее в секцию env в файле app.yml:

AWS_REQUEST_CHECKSUM_CALCULATION: WHEN_REQUIRED
AWS_RESPONSE_CHECKSUM_VALIDATION: WHEN_REQUIRED

А также закомментировал следующее в секции hooks файла app.yml:

after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
  #        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Остальные настройки env установлены следующим образом:

DISCOURSE_S3_ACCESS_KEY_ID: 'key'
DISCOURSE_S3_SECRET_ACCESS_KEY: 'key'
DISCOURSE_BACKUP_LOCATION: 's3'
DISCOURSE_ENABLE_S3_UPLOADS: true
DISCOURSE_S3_BACKUP_BUCKET: 'backupbucketonbackblaze'
DISCOURSE_S3_REGION: 'us-west-002'
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true

Я сделал резервную копию до включения параметра DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true.

И получил успешную резервную копию в Backblaze. УРА!!!

Когда я добавил строку в app.yml для включения загрузки файлов, резервное копирование завершилось ошибкой, которая выглядит так:

EXCEPTION: tar --append --file /var/www/discourse/public/backups/default/my-server-name-2025-04-17-222758-v20250417043438.tar uploads/default
Failed to append uploads to archive.
tar: uploads/default: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Я не понимаю, где должна находиться эта директория и как это исправить. Нужно ли создать эту директорию на сервере Discourse или в Backblaze? Или я упустил какую-то настройку в параметрах сайта или в файле app.yml?

Буду очень признателен за любую помощь.

1 лайк