<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,sans-serif"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 22, 2020 at 4:58 PM Ken Gaillot <<a href="mailto:kgaillot@redhat.com">kgaillot@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, 2020-07-22 at 10:59 +0300, Хиль  Эдуард wrote:<br>
> Hi there! I have 2 nodes with Pacemaker 2.0.3, corosync 3.0.3 on<br>
> ubuntu 20 + 1 qdevice. I want to define new resource as systemd<br>
> unit dummy.service :<br>
>  <br>
> [Unit]<br>
> Description=Dummy<br>
> [Service]<br>
> Restart=on-failure<br>
> StartLimitInterval=20<br>
> StartLimitBurst=5<br>
> TimeoutStartSec=0<br>
> RestartSec=5<br>
> Environment="HOME=/root"<br>
> SyslogIdentifier=dummy<br>
> ExecStart=/usr/local/sbin/dummy.sh<br>
> [Install]<br>
> WantedBy=multi-user.target<br>
>  <br>
> and /usr/local/sbin/dummy.sh :<br>
>  <br>
> #!/bin/bash<br>
> CNT=0<br>
> while true; do<br>
>   let CNT++<br>
>   echo "hello world $CNT"<br>
>   sleep 5<br>
> done<br>
>  <br>
> and then i try to define it with: pcs resource create dummy.service<br>
> systemd:dummy op monitor interval="10s" timeout="15s"<br>
> after 2 seconds node2 reboot. In logs i see pacemaker in 2 seconds<br>
> tried to start this unit, and it started, but pacemaker somehow think<br>
> he is «Timed Out» . What i am doing wrong? Logs below.<br>
<br>
The start is timing out because the ExecStart script never returns.<br>
<br></blockquote><div><br></div><div><div style="font-family:arial,sans-serif" class="gmail_default">Type=simple does not expect script to go into background. Quite the contrary - systemd expects ExecStart command to remain, going into background would be interpreted as "service terminated".</div><div style="font-family:arial,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,sans-serif" class="gmail_default">To quote systemd: "the service manager
            will consider the unit started immediately after the main service process has been forked off. It is
            expected that the process configured with <code class="gmail-varname">ExecStart=</code> is the main process of the
            service".</div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
systemd starts processes but it doesn't daemonize them -- the script is<br>
responsible for doing that itself. </blockquote><div><br></div><div><div style="font-family:arial,sans-serif" class="gmail_default">Only for Type=forking</div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">You can search online for more<br>
details about daemonization, but most importantly you want to run your<br>
daemon as a subprocess in the background and have your main process<br>
return as soon as the daemon is ready for service.<br>
<br>
<br>
> Jul 21 15:53:41 node2.local pacemaker-controld[1813]:  notice: Result<br>
> of probe operation for dummy.service on node2.local: 7 (not running) <br>
> Jul 21 15:53:41 node2.local systemd[1]: Reloading.<br>
> Jul 21 15:53:42 node2.local systemd[1]:<br>
> /lib/systemd/system/dbus.socket:5: ListenStream= references a path<br>
> below legacy directory /var/run/, updating<br>
> /var/run/dbus/system_bus_socket → /run/dbus/system_bus_socket; please<br>
> update the unit file accordingly.<br>
> Jul 21 15:53:42 node2.local systemd[1]:<br>
> /lib/systemd/system/docker.socket:6: ListenStream= references a path<br>
> below legacy directory /var/run/, updating /var/run/docker.sock →<br>
> /run/docker.sock; please update the unit file accordingly.<br>
> Jul 21 15:53:42 node2.local pacemaker-execd[1808]:  notice: Giving up<br>
> on dummy.service start (rc=0): timeout (elapsed=259719ms, remaining=-<br>
> 159719ms)<br>
> Jul 21 15:53:42 node2.local pacemaker-controld[1813]:  error: Result<br>
> of start operation for dummy.service on node2.local: Timed Out <br>
> Jul 21 15:53:42 node2.local systemd[1]: Started Cluster Controlled<br>
> dummy.<br>
> Jul 21 15:53:42 node2.local dummy[9330]: hello world 1<br>
> Jul 21 15:53:42 node2.local systemd-udevd[922]: Network interface<br>
> NamePolicy= disabled on kernel command line, ignoring.<br>
> Jul 21 15:53:42 node2.local pacemaker-attrd[1809]:  notice: Setting<br>
> fail-count-dummy.service#start_0[node2.local]: (unset) -> INFINITY <br>
> Jul 21 15:53:42 node2.local pacemaker-attrd[1809]:  notice: Setting<br>
> last-failure-dummy.service#start_0[node2.local]: (unset) -><br>
> 1595336022 <br>
> Jul 21 15:53:42 node2.local systemd[1]: Reloading.<br>
> Jul 21 15:53:42 node2.local systemd[1]:<br>
> /lib/systemd/system/dbus.socket:5: ListenStream= references a path<br>
> below legacy directory /var/run/, updating<br>
> /var/run/dbus/system_bus_socket → /run/dbus/system_bus_socket; please<br>
> update the unit file accordingly.<br>
> Jul 21 15:53:42 node2.local systemd[1]:<br>
> /lib/systemd/system/docker.socket:6: ListenStream= references a path<br>
> below legacy directory /var/run/, updating /var/run/docker.sock →<br>
> /run/docker.sock; please update the unit file accordingly.<br>
> Jul 21 15:53:42 node2.local pacemaker-execd[1808]:  notice: Giving up<br>
> on dummy.service stop (rc=0): timeout (elapsed=317181ms, remaining=-<br>
> 217181ms)<br>
> Jul 21 15:53:42 node2.local pacemaker-controld[1813]:  error: Result<br>
> of stop operation for dummy.service on node2.local: Timed Out <br>
> Jul 21 15:53:42 node2.local systemd[1]: Stopping Daemon for dummy...<br>
> Jul 21 15:53:42 node2.local pacemaker-attrd[1809]:  notice: Setting<br>
> fail-count-dummy.service#stop_0[node2.local]: (unset) -> INFINITY <br>
> Jul 21 15:53:42 node2.local pacemaker-attrd[1809]:  notice: Setting<br>
> last-failure-dummy.service#stop_0[node2.local]: (unset) -><br>
> 1595336022 <br>
> Jul 21 15:53:42 node2.local systemd[1]: dummy.service: Succeeded.<br>
> Jul 21 15:53:42 node2.local systemd[1]: Stopped Daemon for dummy.<br>
> ... lost connection (node rebooting)<br>
>  <br>
>  <br>
> _______________________________________________<br>
> Manage your subscription:<br>
> <a href="https://lists.clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">https://lists.clusterlabs.org/mailman/listinfo/users</a><br>
> <br>
> ClusterLabs home: <a href="https://www.clusterlabs.org/" rel="noreferrer" target="_blank">https://www.clusterlabs.org/</a><br>
-- <br>
Ken Gaillot <<a href="mailto:kgaillot@redhat.com" target="_blank">kgaillot@redhat.com</a>><br>
<br>
_______________________________________________<br>
Manage your subscription:<br>
<a href="https://lists.clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">https://lists.clusterlabs.org/mailman/listinfo/users</a><br>
<br>
ClusterLabs home: <a href="https://www.clusterlabs.org/" rel="noreferrer" target="_blank">https://www.clusterlabs.org/</a><br>
</blockquote></div></div>