ホスト側が VM を別のホストに移動すると、ローカル時間がずれてしまいます (最大 3 秒)。Chrony はこれを修正できますが、認識するまでにかなりの時間がかかります。この間、時間差 (最大 0.5 秒まで許容) のため、データベース ノード (CockroachDB) がシャットダウンします。その後、systemd スクリプトがそれを再起動します。
今、私はsystemdスクリプトが最初に確実に時間を更新するようにしたいので、これを私の コックローチ脚本:
ExecStartPre=-/usr/bin/chronyc -a makestep
しかし、私の systemd スクリプトはユーザー「cockroach」として実行され、chrony デーモンはユーザー root または chrony (UDP) からのメッセージのみを受け入れるため、エラー 501 (認証がありません) が発生します。
今、行き詰まっています。chrony が cockroach ユーザーからのメッセージも受信できるようにする方法はありますか? または、今すぐ時間を同期するための他のオプションはありますか (chrony は実行中なので、手動更新はできません)。
答え1
解決策は「+」構文です実行開始前パラメータ。以下はクロニクルート権限で実行可能 (+) であり、この呼び出しで発生する可能性のあるエラーは無視されます (-):
ExecStartPre=-+/usr/bin/chronyc -a makestep
これは私にとってはうまくいきました。
これらのプレフィックスに関するドキュメントは、systemdのドキュメントに記載されています。実行開始パラメータはこちら:https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=