l'unité systemd activée ne démarre pas au démarrage

35

J'ai un systemd-unitsur mon système qui est activé. Le problème est qu'il ne redémarre pas après un redémarrage. Cela dépend de deux autres services qui sont tous deux démarrés comme prévu.

Le service est connu, activé et mort:

[centos@ansible-kube-4 ~]$ sudo systemctl status flanneld
flanneld.service - Flanneld overlay address etcd agent
   Loaded: loaded (/usr/lib/systemd/system/flanneld.service; enabled)
   Active: inactive (dead)

Le fichier d'unité:

[centos@ansible-kube-4 ~]$ cat /usr/lib/systemd/system/flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=etcd.service

[Service]
Type=notify
Restart=always
RestartSec=3

EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker

[Install]
WantedBy=multi-user.target

Mise à jour 1

Sortie de dmesg:

$ dmesg | grep systemd
[    1.312165] systemd[1]: systemd 208 running in system mode. (+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ)
[    1.317238] systemd[1]: Detected virtualization 'kvm'.
[    1.319597] systemd[1]: Running in initial RAM disk.
[    1.323489] systemd[1]: No hostname configured.
[    1.324874] systemd[1]: Set hostname to <localhost>.
[    1.327570] systemd[1]: Initializing machine ID from KVM UUID.
[    1.389047] systemd[1]: Expecting device dev-disk-by\x2duuid-a78bb152\x2de525\x2d4f0e\x2d961a\x2dbf6147ac7d3e.device...
[    1.394577] systemd[1]: Starting -.slice.
[    1.396820] systemd[1]: Created slice -.slice.
[    1.397990] systemd[1]: Starting System Slice.
[    1.400212] systemd[1]: Created slice System Slice.
[    1.401503] systemd[1]: Starting Slices.
[    1.403556] systemd[1]: Reached target Slices.
[    1.404756] systemd[1]: Starting Timers.
[    1.406834] systemd[1]: Reached target Timers.
[    1.408042] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[    1.410065] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    1.413402] systemd[1]: Starting Paths.
[    1.415399] systemd[1]: Reached target Paths.
[    1.416574] systemd[1]: Starting Journal Socket.
[    1.418894] systemd[1]: Listening on Journal Socket.
[    1.420242] systemd[1]: Started dracut ask for additional cmdline parameters.
[    1.422150] systemd[1]: Starting dracut cmdline hook...
[    1.424870] systemd[1]: Started Load Kernel Modules.
[    1.426124] systemd[1]: Starting Journal Service...
[    1.429731] systemd[1]: Started Journal Service.
[    1.692884] systemd-udevd[213]: starting version 208
[    2.621300] systemd-journald[90]: Received SIGTERM
[    2.968711] systemd[1]: Successfully loaded SELinux policy in 274.569ms.
[    3.023076] systemd[1]: Relabelled /dev and /run in 20.031ms.
[    3.365195] systemd-udevd[382]: starting version 208
[    3.482910] systemd-journald[377]: Received request to flush runtime journal from PID 1

Mise à jour 2

Sortie de chkconfig:

sudo chkconfig

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

Sortie de systemctl list-dependencies flanneld:

flanneld.service
├─system.slice
└─basic.target
  ├─microcode.service
  ├─rhel-autorelabel-mark.service
  ├─rhel-autorelabel.service
  ├─rhel-configure.service
  ├─rhel-dmesg.service
  ├─rhel-loadmodules.service
  ├─paths.target
  ├─slices.target
  │ ├─-.slice
  │ └─system.slice
  ├─sockets.target
  │ ├─dbus.socket
  │ ├─rpcbind.socket
  │ ├─systemd-initctl.socket
  │ ├─systemd-journald.socket
  │ ├─systemd-shutdownd.socket
  │ ├─systemd-udevd-control.socket
  │ └─systemd-udevd-kernel.socket
  ├─sysinit.target
  │ ├─dev-hugepages.mount
  │ ├─dev-mqueue.mount
  │ ├─kmod-static-nodes.service
  │ ├─proc-sys-fs-binfmt_misc.automount
  │ ├─sys-fs-fuse-connections.mount
  │ ├─sys-kernel-config.mount
  │ ├─sys-kernel-debug.mount
  │ ├─systemd-ask-password-console.path
  │ ├─systemd-binfmt.service
  │ ├─systemd-journal-flush.service
  │ ├─systemd-journald.service
  │ ├─systemd-modules-load.service
  │ ├─systemd-random-seed.service
  │ ├─systemd-sysctl.service
  │ ├─systemd-tmpfiles-setup-dev.service
  │ ├─systemd-tmpfiles-setup.service
  │ ├─systemd-udev-trigger.service
  │ ├─systemd-udevd.service
  │ ├─systemd-update-utmp.service
  │ ├─systemd-vconsole-setup.service
  │ ├─cryptsetup.target
  │ ├─local-fs.target
  │ │ ├─-.mount
  │ │ ├─rhel-import-state.service
  │ │ ├─rhel-readonly.service
  │ │ ├─systemd-fsck-root.service
  │ │ └─systemd-remount-fs.service
  │ └─swap.target
  └─timers.target
    └─systemd-tmpfiles-clean.timer
maklemenz
la source

Réponses:

32

Le fichier d'unité a été modifié:

Avant:

[Install]
RequiredBy=docker.service

Après:

[Install]
WantedBy=multi-user.target

Après cette modification, je n'ai pas réactivé l'unité. Il s'est avéré que cela est nécessaire pour que systemd reconfigure:

$ sudo systemctl reenable flanneld
rm '/etc/systemd/system/docker.service.requires/flanneld.service'
ln -s '/usr/lib/systemd/system/flanneld.service' '/etc/systemd/system/multi-user.target.wants/flanneld.service'
maklemenz
la source
2
Moi aussi, j'ai trouvé que cela aidait et je ne sais pas pourquoi. Peut-être reenablecorrigé quelque chose que je n'avais pas fait ou que j'avais bâclé et que je ne pouvais pas voir parce que je ne louchais pas assez fort. Quoi qu'il en soit, de deux hôtes identiques sur lesquels je configurais pour que mon service démarre après le redémarrage, l'un a fonctionné et l'autre pas avant que je ne le fasse.
Russ Bateman
1
Est-il possible qu'il ait été désactivé par une mise à niveau? J'ai eu un serveur suspect où il a été désactivé après une mise à niveau ... sudo systemctl reenable rails-puma.service a résolu le problème
Dave Collins
1
peut-être pertinent: unix.stackexchange.com/questions/193714/…
ThorSummoner
9

Je ne trouve aucune preuve dans votre configuration que ce service doit être démarré au démarrage. systemdpermet deux façons d'activer un service afin qu'il soit démarré au démarrage:

chkconfig flanneld on

Ou:

systemctl enable flanneld

En fait, le premier est une manière héritée d'appeler le second, et je ne sais pas si le chkconfigpackage est installé par défaut, mais vous pouvez l'installer à l'aide de apt-getou yum.

nKn
la source
Le service est activé. J'avais l'habitude sudo systemctl enable flanneldde l'activer.
maklemenz
Après l'avoir exécuté, il ne démarre toujours pas au démarrage?
nKn
Je dois démarrer le service manuellement après chaque redémarrage. Il démarre du premier coup et sans aucun message d'erreur ou avertissement.
maklemenz
1
Il doit y avoir autre chose qui échoue. Officiellement, la façon d'activer un service au démarrage dans systemd est systemctl enable servicename. La plupart des exemples incluent également la .serviceterminaison dans la commande, mais je ne suis pas sûr que cela devrait faire la différence.
nKn
Le suffixe .service est automatiquement ajouté lorsqu'il est omis par l'utilisateur.
mrg2k8