Sidekiqが起動していません。Sidekiqのハートビートテストに失敗したため、再起動中

この問題を Redis のフラッシュまたは更新で解決できるか知りたいです。Redis は過去 8 ヶ月以上ほとんど触られていません。私自身はこれまで Redis を扱ったことがありませんが、当社の Tests-Pass Discourse インスタンスは、現在このフォーラムで推奨されている Discourse Docker ではなく、local_discourse を使ってセットアップされました。現在直面している問題は、ユーザーへのメール送信が行われないことです。ご支援やご提案をいただければ幸いです!

Sidekiq が実行されていません。メール送信など多くのタスクは Sidekiq によって非同期に実行されます。少なくとも 1 つの Sidekiq プロセスが実行されていることを確認してください。

Sidekiq のハートビートテストに失敗したため、再起動します

config/unicorn.conf.rb:147:in `check_sidekiq_heartbeat
config/unicorn.conf.rb:164:in `master_sleep'
unicorn-5.5.4/lib/unicorn/http_server.rb:296:in `join'
unicorn-5.5.4/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

移行が妥当であれば、ご提案を歓迎します。

現在のインストールのバックアップを取得し、Discourse 公式の標準インストール に従って新規インストールを作成することをお勧めします。

「いいね!」 5

その推奨事項は少なくとも過去4年間続いています。

Rafael の提案に賛成です。

「いいね!」 1

redisコンテナを再構築または再起動するために、launcherを使用すると役に立ちますか?

使用方法: launcher コマンド 設定 [–skip-prereqs] [–docker-args STRING]
コマンド:
start: コンテナの起動/初期化
stop: 実行中のコンテナの停止
restart: コンテナの再起動
destroy: コンテナの停止と削除
enter: コンテナ内でコマンドを実行するためのシェルを開く
logs: コンテナのDockerログを表示
bootstrap: テンプレートに基づき設定用のコンテナをブートストラップ
run: 最後のブートストラップされたイメージのコンテキストで、指定されたコマンドを実行
rebuild: コンテナの再構築(古いものを削除、ブートストラップ、新しいものを起動)
cleanup: 24時間以上停止しているすべてのコンテナを削除
start-cmd: コンテナ起動に使用されるDockerコマンドを生成

オプション:
–skip-prereqs launcherの前提条件を確認しない
–docker-args docker実行時に渡す追加引数
–skip-mac-address MACアドレスを割り当てない
–run-image コンテナ実行時に使用するイメージを上書き

Discourse 公式の標準インストール ガイドに従ってインストールしましたか、それとも別の方法でしたか?標準インストールの場合、./launcher rebuild appを実行すれば、おそらく問題が解決するはずです。

まだですが、移行のタイミングを設定しています。Discourse はほぼ 3 年間稼働しており、不必要なダウンタイムを追加したくないと考えています。:slight_smile: 当インスタンスは完全にボランティアによって維持されているため、過去 1 ヶ月間は自分自身で維持管理の方法を学んでいます。もし素早い Redis の修正が役立つのであれば(そのコンテナは 1 年間手つかずで稼働しています)、適用したいと考えています。

最初から標準インストールを行わなかった場合、現在の問題を解決する方法は誰にもわかりません。

新しい VM をセットアップして、そこでテストインストールを行い、動作確認を行うことをお勧めします。移行時には、古いフォーラムを読み取り専用モードにし、バックアップを取得して新しい VM に復元し、DNS を変更することで、ほぼダウンタイムを伴わずに切り替えることができます(実際には、DNS 変更後に Let’s Encrypt の証明書を取得してインストールするために再構築が必要になるため、わずかなダウンタイムが発生します)。

「いいね!」 1

ありがとうございます。Let’s Encrypt は、単純な nginx リバースプロキシの設定変更で済むため、実際にはかなり簡単に行えるはずです。ご承知の通り、多少の停止時間は発生します。これを業務時間外にスケジュールするだけです。

公式イメージへのバックアップの移行とリストアを直前に控えています。Sidekiq などが正常に動作し始めた際にユーザーにスパムメールが送信されてしまうような、バックアップされたメールの削除などについて、注意すべき点はありますか?よろしくお願いいたします。

Sidekiq のジョブキューが移行されないため、多くのメールが破棄されますが、ダイジェストは通常通り送信を再開します。

「いいね!」 3

公式の Discourse Docker イメージのインストールに関するドキュメントに従おうとしたところ、問題が発生しました。以前 Docker で使用していた redis コンテナ、mail-receiver コンテナ、data コンテナが不足していることがわかりました。

以前のインストールには以下のファイルが含まれていたようです:
app.yml
data.yml
mail-receiver.yml
redis.yml

このマルチコンテナ構成は、基本的なインストール手順とは異なります。参考用に、古い /var/discourse のバックアップは持っています。

FAILED                                                                                                                                                        │················································································································
--------------------                                                                                                                                          │················································································································
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 645 exit 1>                 │················································································································
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'                                                                                            │················································································································
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}                                   │················································································································
bbf0e57ac69f1febe2a5f149aa7e6e12541c3c23aaf199188fdf19d507254b58                                                                                              │················································································································
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.                                                   │················································································································
./discourse-doctor may help diagnose the problem.

ステップ ./launcher bootstrap data および ./launcher start redis を見落としたようです。

[Mon 11 May 2020 12:53:20 AM UTC] Run reload cmd: sv reload nginx                                                                                             │················································································································
fail: nginx: runsv not running                                                                                                                                │················································································································
[Mon 11 May 2020 12:53:20 AM UTC] Reload error for :                                                                                                          │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Domains not changed.                                                                                                        │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Skip, Next renewal time is: Thu 09 Jul 2020 11:33:04 PM UTC                                                                 │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Add '--force' to force to renew.                                                                                            │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Installing key to:/shared/ssl/discuss.noisebridge.info_ecc.key                                                              │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Installing full chain to:/shared/ssl/discuss.noisebridge.info_ecc.cer                                                       │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Run reload cmd: sv reload nginx                                                                                             │················································································································
fail: nginx: runsv not running                                                                                                                                │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Reload error for :                                                                                                          │················································································································
run-parts: executing /etc/runit/1.d/remove-old-socket                                                                                                         │················································································································
Started runsvdir, PID is 626                                                                                                                                  │················································································································
ok: run: redis: (pid 636) 0s                                                                                                                                  │················································································································
chgrp: invalid group: 'syslog'                                                                                                                                │················································································································
ok: run: postgres: (pid 639) 0s                                                                                                                               │················································································································
rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.                                                                               │················································································································
rsyslogd: activation of module imklog failed [v8.1901.0 try https://www.rsyslog.com/e/2145 ]                                                                  │················································································································
supervisor pid: 640 unicorn pid: 667
「いいね!」 1

おかげさまで、以前の Discourse インスタンスの復元に成功しました!現在は以下が表示されています:

管理者によってすべての送信メールがグローバルに無効化されています。どのようなメール通知も送信されません。

その通りです。インポーターがその設定を行い、移行後に 50,000 通ものメールが送信されないようにしています。サイト設定でメール機能を慎重に有効にしてください。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.