systemdサービスの依存関係と順序付け
systemdの依存関係ディレクティブをマスター:After、Before、Requires、Wants、BindsTo、PartOf。順序付け依存関係と要件依存関係の違いを理解します。
Operational Guides
詳細な説明
サービスの起動順序を制御する
systemdは2つの別々のメカニズムでサービス依存関係を管理します:順序付け(いつ起動するか)と要件(何が実行されている必要があるか)。
順序付けと要件
| ディレクティブ | タイプ | 効果 |
|---|---|---|
After= |
順序付け | リストされたユニットの後にこのサービスを起動 |
Before= |
順序付け | リストされたユニットの前にこのサービスを起動 |
Requires= |
要件 | リストされたユニットが実行中でなければならない |
Wants= |
要件 | リストされたユニットを起動すべきだが、失敗は許容 |
BindsTo= |
要件 | Requiresより強い;リストされたユニットが停止するとこれも停止 |
よくある間違い:RequiresなしのAfter
# 間違い:要件なしの順序付け
After=postgresql.service
これはPostgreSQLが起動される場合に、サービスがその後に起動することのみを保証します。通常は両方が必要です:
# 正しい:順序付けと要件
After=postgresql.service
Requires=postgresql.service
ユースケース
WebフロントエンドがAPIサーバーに依存し、APIサーバーがデータベースとオプションでキャッシュに依存するマルチサービスアプリケーションを設計し、適切な起動順序と障害伝播を行う場合に使用します。