监视keepalived状态,如果服务器获取主角色,则运行start.sh;如果服务器获取从角色,则运行stop.sh。

keepserver的Python项目详细描述


监视keepalived状态,如果服务器获取主角色,则运行start.sh;如果服务器获取从角色,则运行stop.sh。

安装

pip install keepstart

示例配置

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

配置以使用分离的logging.conf

  1. 配置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

将logging设置为config.yaml中的配置文件,并创建logging.conf文件。

  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

您必须添加logger_xxx,其中xxx是要激活以进行日志记录的模块。

配置项说明

  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-正在运行

    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).

服务器命令

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

命令帮助

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$

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用于读取OBS写入的java打开文件   java使用XFire通过ssl使用Web服务   java如何查看幸存者空间中的对象   不使用ActionListener从按钮执行java代码   java仅当用户执行某个操作时,如何清除应用程序的历史记录?   json无法反序列化'java'的实例。lang.Long`out-of-START\u对象标记;在弹簧靴柱上   JavaPOJO到OpenApi定义   java时间戳格式不显示不同的值   java Android:如何从片段切换到主要活动?   用于步进计数器/健身应用程序的java循环进度条   java Log4j更改特定记录器实例的记录器级别   JAVA中实现连接的数据结构   java Mockito静态函数mock   未找到java辅助技术:org。侏儒。可访问性。阿特克拉珀   java仅当列表中没有类似项时才向ArrayList添加项   java如何使用docx4j在word中添加合并字段?