keepserver

Monitor keepalived status, run start.sh if server get MASTER role, and run stop.sh if server get SLAVE role.


Keywords
keepserver
License
MIT
Install
pip install keepserver==0.2.0

Documentation

keepstart

Monitor keepalived status, run start.sh if server get MASTER role, and run stop.sh if server get SLAVE role.

Install

pip install keepstart

Example Config

application:
    daemon: true
    workspace: /opt/ssh-proxy-server
    pidfile: ssh-proxy-server.pid

keepstart:
    nic: lo
    vip: 127.0.0.1
    start: /opt/ssh-proxy-server/start.sh
    stop: /opt/ssh-proxy-server/stop.sh
    is-running: /opt/ssh-proxy-server/is-running.sh
    sleep: 2
    running-report-cycle: 3600
    force-test-cycle: 60

logging:
    version: 1
    disable_existing_loggers: false
    formatters:
        simple:
            format: "%(asctime)-15s\t%(levelname)s\t%(message)s"
    handlers:
        console:
            class: logging.StreamHandler
            level: DEBUG
            formatter: simple
        file:
            class: logging.handlers.TimedRotatingFileHandler
            level: DEBUG
            formatter: simple
            filename: /opt/ssh-proxy-server/server.log
            backupCount: 30
            when: D
            interval: 1
            encoding: utf-8
    loggers:
        keepstart:
            level: INFO
            handlers:
                - file
                - console
            propagate: no
    root:
        level: INFO
        handlers:
            - file
            - console

Config to use separated logging.conf

  1. config.yaml
application:
    daemon: true
    workspace: /opt/ssh-proxy-server
    pidfile: ssh-proxy-server.pid

keepstart:
    nic: lo
    vip: 127.0.0.1
    start: /opt/ssh-proxy-server/start.sh
    stop: /opt/ssh-proxy-server/stop.sh
    is-running: /opt/ssh-proxy-server/is-running.sh
    sleep: 2
    running-report-cycle: 3600
    force-test-cycle: 60

logging: logging.conf

set logging to the config file in config.yaml, and create logging.conf file.

  1. logging.conf
[loggers]
keys=root,keepserver,appserver

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler

[logger_keepserver]
level=DEBUG
handlers=consoleHandler,fileHandler
qualname=keepserver
propagate=0

[logger_appserver]
level=DEBUG
handlers=consoleHandler,fileHandler
qualname=appserver
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('logFile.log', 'D', 1, 30, 'utf-8')

[formatter_simpleFormatter]
format=%(asctime)s %(levelname)5s %(message)s

You must add logger_xxx which xxx is the module to be actived for logging.

Config item description

  1. keepstart.nic

    Which nic to be monitored.

  1. keepstart.vip

    Which vip will be used on the given nic. If vip is set, the server got MASTER role, if vip is not set, the server got SLAVE role.

  1. keepstart.start & keepstart.stop & keepstart.is-running

    Scripts to do start, stop and is-running test. All scripts must NOT blocked.

  1. keepstart.sleep

    How long time to wait to do role test.

  1. keepstart.running-report-cycle

    How long time to wait to write alive report to log.

  1. keepstart.force-test-cycle

    How many time to wait to do a force is-running check(time = sleep * force-test-cycle).

Server command

keepserver -c config.yaml start
keepserver -c config.yaml stop
keepserver -c config.yaml reload

Command help

zencoreDeMacPro:keepstart zencore$ keepserver --help
Usage: keepserver [OPTIONS] COMMAND [ARGS]...

Options:
-c, --config FILENAME  Config file path, use yaml format. Default to
                        config.yaml.
--help                 Show this message and exit.

Commands:
reload  Reload application server.
start   Start application server.
stop    Stop application server.
zencoreDeMacPro:keepstart zencore$