[CentOS7][Systemd] CentOS7 環境でsystemdスクリプトを利用してネットワーク関連のサービスを実行すると起動時にエラーが出るときの対処方法。その2

    Related Posts Plugin for WordPress, Blogger...
    いつか、そのとき、あの場所で。 | [CentOS7][Systemd] CentOS7 環境でsystemdスクリプトを利用してネットワーク関連のサービスを実行すると起動時にエラーが出るときの対処方法。 /
    http://kometchtech.blog.fc2.com/blog-entry-1585.html

    先ほどは上記のような記事を書いたのですが、更に確認してみると確実にネットワークインターフェースが起動してから、サービス自体も起動してくるとは言えないものでした。お詫びいたします。
    というのも相変わらずinterface のアドレスにbindできないというエラーが発生していることを確認しました。

    で、さらに調査を続けてみたところ、これかなぁという部分を見つけたのでメモしておきます。


    ここに依存関係の項目があるのですが、最初は[Unit]セクションのAfterに以下の様な記述をしていました。
    After=syslog.target network.target sys-subsystem-net-devices-eth0.device

    このサービスの場合、起動前に、syslog.target network.target sys-subsystem-net-devices-eth0.deviceを必要としているという記述なのですが、まず問題になったのは、CentOS7ではsyslog.targetが存在しないという問題です。
    これについては調査してみたのですが、明確な記事が見当たらずRHEL7やFedora20ではどうなっているのか疑問です。
    逆にこのtargetファイルがあれば正常に起動するのでしょうが、残念ながらCentOS7にはありません。また含んでいるようなパッケージも見当たりませんでした。

    次にnetwork.targetですが、これは以下の記事が詳しいのですが、ネットワーク関連の機能を一括して管理しているファイルで、これは起動時にUnboundやNSD4が起動要求するので無いと困ると思っていました。

    NetworkTarget /
    http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

    次にsys-subsystem-net-devices-eth0.deviceですが、これは下記からの情報です。


    直接必要としているネットワークインターフェースデバイスを指定するものです。これを指定することでInterfaceが起動していることをサービスに知らせることが出来るかと思ったのですが、結果から言うとうまくいきませんでした。

    で、最初に戻ってsystemdのドキュメントを読むとRequiresという必ず必要、と読めるオプション句があったので、そちらを使って以下のように記述してみました。
    Requires=NetworkManager-wait-online.service

    何故これを選んだかというと、サービスの起動順を調べてみたところ、以下の様な感じで最後の方に呼ばれるサービスだったためです。
    systemd-analyze blame
    8.068s mackerel-agent.service
    5.175s NetworkManager-wait-online.service
    1.207s network.service
    <snip>

    で実践してみたのですが、やはり起動時にInterfaceにbindしてくれずに途方にくれていました。

    で、最後の手段として以下の様な記述に変更してみました。
    After=NetworkManager-wait-online.service

    こちらで起動時にサービスがネットワークインターフェースの起動後に起動してくるか確認したところ、正常に起動してくることを確認しました。
    またインターフェースをbindする必要があるNSD4やdibblerなどでも同様に、問題が解決することを確認しました。

    結果からすると正常に起動するようになったのですが、systemdの[Unit]セクションについては、まだ良くわからないところが多いです。
    今回も何故network.targetを指定していないのに、ネットワークインターフェースの起動後にサービスが正常に起動してくる因果関係が良く分かりません。

    この辺りは引き続き調査していこうと思います。


    Pagination

    Trackback

    Trackback URL

    http://kometchtech.blog.fc2.com/tb.php/1586-7e1a1025

    Comment

    Post Your Comment

    コメント登録フォーム
    公開設定

    Utility

    Profile

    kometch

    Author:kometch
    なんちゃってエンジニアです。
    2009年10月から業務都合により大阪勤務になりました。
    2010年1月、HYBRID W-ZERO3を購入しました。
    2010年11月、HTC Desire HDを購入しました。
    2012年2月、都内の会社に転職しました。
    2012年5月、HTC One Xを購入しました。
    2012年8月、事情により休職しました。
    2012年8月、SONY Xperia SXを購入しました。
    2013年1月、一身上の都合により退職しました。
    2014年3月、都内の会社に就職しました。
    2016年8月、HPC系の会社に転職しました。

    Amazonほしい物リスト
    何か問題などありましたら、こちらまで。 Twitter:@kometchtech follow us in feedly

    カレンダー

    07 | 2017/08 | 09
    - - 1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31 - -

    全記事(数)表示

    全タイトルを表示

    バロメーター

    カテゴリー

    カテゴリークラウド

    アーカイブ

    検索フォーム

    FC2カウンター

    現在の閲覧者数

    現在の閲覧者数:

    Amazon アフィリエイト

    スポンサードリンク

    Latvia Time

    IPv4/IPv6

    月間ページランキング

    ブログパーツ

    サイトランキング

    スポンサードリンク