The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Plack::Middleware::ServerStatus::Availability - manually set server status

SYNOPSIS

    use Plack::Builder;


    builder {
        enable 'ServerStatus::Availability', (
            path => {
                status  => '/server/avail',
                control => '/server/control/avail',
            },
            allow => [ '127.0.0.1', '192.168.0.0/16', '10.0.0.0/8' ],
            file => '/tmp/server-up',
        );
        $app;
    };

    $ curl http://server:port/server/avail
    503 Server is up but is under maintenance

    $ curl -X POST http://server:port/server/control/avail?action=up
    200 Done

    $ curl http://server:port/server/avail
    503 Server is up but is under maintenance

    $ curl http://server:port/server/avail
    200 OK

    $ curl -X POST http://server:port/server/control/avail?action=down
    200 Done

    $ curl http://server:port/server/avail
    503 Server is up but is under maintenance

DESCRIPTION

This middleware is intended to show a server status which is controllable by POST requests to the status control endpoint. This is useful when you want to manually make a server under maintenance and automatically detached from a load balancer.

CONFIGURATIONS

path
    path => {
        status  => $status,
        control => $control,
    }

$status is a location to display the server status. $control is a location to POST actions. An action is specified by action query parameter. Its value up and down makes the server status to 'available' and 'unavailable' respectively.

allow
    allow => '127.0.0.1'
    allow => [ '192.168.0.0/16', '10.0.0.0/8' ]

Host based access control of the server status and status control endpoints. Supports IPv6 address.

file
    file => $file

Specifies a file to remember the availability. The server is indicated to be available if the file exist.

SEE ALSO

Plack::Middleware::ServerStatus::Lite

ACKNOWLEDGMENT

This middleware is ported from Karasuma::Config::ServerStatus to Plack::Middleware.

LICENSE

Copyright (C) INA Lintaro

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

INA Lintaro <tarao.gnn@gmail.com>