hirasawa3
Forum Replies Created
-
AuthorPosts
-
hideishiさん
ご提示いただいた手順で、9.11.4-1を導入しました。
しばらく様子を見ます。ご対応いただき誠にありがとうございました。
hideishiさん
アップデートして正常を確認しました。
ご対応いただきありがとうございました。hideishiさん
ご回答ありがとうございます。
複数profile環境で同様の問題をご認識されていること、また共有サービス全体をrestartする設計上の理由と、Monitでの運用上の限界について理解しました。
今回の調査では、499を契機としたrestart後に他profileの502/503からrestartが連鎖し、最終的にsystemdのstart-limit-hitに到達していたことまで確認できましたので、当面はMonitをoffにした状態で運用し、必要に応じて監視方法を検討したいと思います。
また、最初の499/5xxについても、引き続きログを確認してみます。
詳しくご説明いただき、ありがとうございました。
ご回答ありがとうございます。
Monitの設定について、環境に応じて調整する想定であること、承知しました。
for 5 cycles then restartを10や20へ増やすことや、if 5 restarts within 5 cycles then unmonitorのrestart回数を減らすことも検討してみます。一点、今回の現象について確認させてください。
今回のログを見る限り、1つのprofileが短時間に何度もrestartを繰り返したというより、
1. あるprofileで499/5xxを検出
2. Monitからkusanagi restart
3. nginx/httpdの再起動中に別profileで502/503が発生
4. そのprofileのMonitから再度kusanagi restart
5. さらに別profileで502/503が発生という形で、複数profileからrestartが連鎖しているように見えました。
各profileのMonit設定では、
restart program = "/opt/kusanagi/bin/kusanagi restart"となっているため、各profileの監視に対するrestartであっても、実際には共有しているnginx/httpd等が再起動されます。
また、この環境ではnginx/httpdともに、
StartLimitIntervalUSec=10s
StartLimitBurst=5となっており、実際に短時間のrestart後、
Start request repeated too quickly.
Failed with result 'start-limit-hit'.となっていました。
このため、例えば複数のprofileがそれぞれ1回ずつrestartを要求した場合、各profileでは
if 3 restarts within 5 cycles then unmonitorのような条件にまだ達していなくても、共有nginx/httpd側では合計5回を超えてrestartされ、systemdのStartLimitに到達する可能性があるように思います。
for 5 cyclesを10や20に増やせば最初のrestart自体は発生しにくくなると思いますが、一度restartが発生した際のprofile間の502/503によるrestart連鎖についても、この調整で防止できるという理解でよいでしょうか。あるいは、複数profileを収容している環境では、各profileのMonitから共有サービス全体の
kusanagi restartを実行しないようにするなど、推奨される設定方法がありますでしょうか。現在は再発を避けるため、引き続き
kusanagi monit offとしています。よろしくお願いいたします。
hideishiさん
ご確認いただき、ありがとうございました。
ご対応をよろしくお願いいたします。hideishiさん
ご回答ありがとうございます。
確認したところ、/etc/opt/kusanagi/httpd/httpd-with_nginx.conf には
SetEnvIf X-Forwarded-Proto "^https$" HTTPS
の記述があり、setenvif_module もロードされています。ただし、問題発生時の設定でApache:8000へ直接
X-Forwarded-Proto: https
を付与してアクセスしても、RewriteCond %{HTTPS} off によりApache自身からHTTPSへの301が返ることを確認しています。Apache公式ドキュメントでは、%{HTTPS} は環境変数ではなくmod_sslを直接参照し、TLSをreverse proxyで終端している場合はbackendで常にoffとなるため、%{HTTP:X-Forwarded-Proto} を確認するよう記載されています。
SetEnvIf で設定した環境変数をmod_rewriteから参照する場合は %{ENV:HTTPS} になる認識ですが、KUSANAGI側では SetEnvIf ... HTTPS が %{HTTPS} に反映される独自の仕組み等がありますでしょうか。
念のためご確認いただけますと幸いです。
-
AuthorPosts