[Nut-upsuser] Perform synchronous task before shutdown routine
Manuel Wolfshant
wolfy at nobugconsulting.ro
Sun Jun 13 16:44:56 BST 2021
On 6/13/21 6:29 PM, Arnaldo Viegas de Lima wrote:
> Hi and thanks for the reply!
>
> The “real” scenario is a bit more complex. There is more than one file
> server and they must be shutdown only after the VM’s are down. And
> there are 2 VMWare servers...
>
> UPS can be connected using USB cable or SNMP. All involved machines
> and network switches are connected the same UPS. A simplified scenario is:
>
> 1-Server “A” runs VMWare and has a USB connection to the UPS (3KVA APC)
> 2-Server “B” also runs VMWare
> 3-Servers “C”. And “D” are file servers
(Linux based) providing iSCSI
> disks to the VMWare servers
> 4-All machines are connected to one switch that is also connected to
> the UPS
> 5-All VMs running on servers “A” and “B”
have their disks coming from
> servers “C” and “D”, except from the NUT VM
> 6-VM running NUT runs from the local filesystem on server “A” (or
> “B”). This allow for the fileservers to be shutdown independently.
>
> The requirement is that before servers “C” and “D” can shutdown, all
> VM’s running on servers “A” and “B” must be properly shutdown.
> I have a script that shutdown (or power down) all VMs on both VMWare
> servers, except for the NUT VM. Also shutdown is performed in a
> particular sequence to allow for dependencies, multiple machines at
> the same time (accounting for disk and CPU bottlenecks) and for VM’s
> without VMWare/Open VMTools. The script uses VMWare remote API (much
> like their Web based management). This part is great and works very nice.
>
> I also have a script, that fired from the NUT VM that commands a
> delayed shutdown of the host VMWare system (that should have no VM’s
> running except the NUT one) and shuts itself down (ahead of the host
> VMWare). It will also command the UPS off.
> This is the shutdown command for the master upsmon.
>
> Those 2 pieces work fine, if tested independently.
>
> My problem is that after shutdown all VMs and before shutting down the
> NUT VM and associated VMWAre host, I must shutdown the fileservers “C”
> and “D”. I can do that running upsmon in slave mode. But I must ensure
> that it will not happen before all VMs are properly down. So there are
> 3 synchronous steps, after OB+LB:
>
> 1-Shutdown all VMs (except NUT’s)
> 2-Shutdown fileservers
> 3-Command VMWare and UPS delayed off and shutdown NUT VM.
>
> Since 3 is a script, I can have it wait for 2 to complete (time or use
> a network based test). My main problem is to delay “2” until the end
> of “1”.
have step 2 wait for a semaphore set immediately before exit by the
script that implements step 1. brute force approach would be a wrapper
around if(ping) ( ping returns "1" if target is unreachable and "0" in
case of success ) but smarter methods can be imagined
More information about the Nut-upsuser
mailing list