使用主管监控尼古拉斯masterha_manager进程

  

我们在用尼古拉斯自带的masterha_manager脚本做mysql主库故障自动切换时,需要考虑如何让masterha_manager监控进程一直处于正常运行的状态,而主管可以很好地解决这个问题,它可以将一个普通的命令行进程变为后台守护进程,并监控进程状态,异常退出时能自动重启。

这里列一下部署要点和管理命令

sudo pip安装主管

<强>

mkdir - p/etc/supervisor/conf.d/

生成配置文件

# echo_supervisord_conf比;/etc/supervisor/supervisord。参看

这一步可能会遇到以下报错

Traceback  (most  recent  call 最后):   File 才能“/usr/bin/echo_supervisord_conf",, line  5,拷贝& lt; module>   ,才能得到pkg_resources  import  load_entry_point   File 才能“/usr/lib/python2.6/网站/pkg_resources.py",, line  2655年,拷贝& lt; module>   ,,,working_set.require (__requires__)   File 才能“/usr/lib/python2.6/网站/pkg_resources.py",, line  648年,需要拷贝   ,,,needed =, self.resolve (parse_requirements(需求)   File 才能“/usr/lib/python2.6/网站/pkg_resources.py",, line  546年,拷贝的决心   ,,,raise  DistributionNotFound(要求)   pkg_resources.DistributionNotFound: meld3>=0.6.5

在网上查了一下原因,大概和python或者pip版本相关,通过源码安装一次meld3好了,简单三步搞定:

git  clone  https://github.com/Supervisor/meld3   cd  meld3   python  setup.py 安装


查看配置文件

猫/etc/supervisor/supervisord。参看

[unix_http_server]=
文件/tmp/主管。袜子;套接字文件的路径

[supervisord]
日志文件=/tmp/supervisord。日志;主日志文件;默认的$/supervisord慢性消耗性疾病。日志
logfile_maxbytes=50 mb;马克思主日志文件字节b4旋转;默认50 mb
logfile_backups=10;#主日志文件备份;0表示没有,默认10
loglevel=信息;日志级别;默认的信息;其他:调试、警告、微量
pidfile=/tmp/supervisord。pid;supervisord pidfile;默认supervisord。pid
nodaemon=false;开始在前台如果正确;默认的错误
minfds=1024;分钟效果启动文件描述符;默认1024
minprocs=200;分钟效果过程描述符;默认200
,;默认是当前用户,如果需要根

[rpcinterface主管):
主管。rpcinterface_factory=主管。rpcinterface: make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ;使用unix://URL unix socket



1,其它的配置将可以使用生成的默认配置,但是用户需要改成做免密码登陆的用户,比如这里的dbadmin,不然masterha_manager启动会出错,因为尼古拉斯的免密码登陆全部是用的dbadmin的帐号
2,管理进程的配置可以直接放在主管的主配置文件中的计划:xxx段,但是最好每个进程准备一个配置文件,以方便管理,通过(包括)段的文件配置指定配置文件目录。

三,以masterha_manager监控测试为例来看上司的操作

1,准备masterha_manager监控测试的配置文件

猫/etc/supervisor/conf.d/masterha_manager_test。参看
[计划:masterha_manager_test]
命令配置==masterha_manager——/etc/尼古拉斯test.cnf——ignore_last_failover;启动命令
stdout_logfile=/tmp/经理。日志;stdout日志输出位置
stderr_logfile=/tmp/经理。日志;stderr日志输出位置
自动运行=true;在supervisord启动的时候自动启动
autorestart=true;程序异常退出后自动重启
startsecs=10;启动10秒后没有异常退出,就当作已经正常启动

2,启动supervisord进程

# supervisord -c 
# ps ef | grep超级
dbadmin 11892 1 0 02:56吗?就是/usr/bin/python/usr/bin/supervisord
根13340 31610 0 02:56分/0就是grep超级

3,查看监控的进程状态

# supervisorctl地位masterha_manager_test pid 11912运行,正常运行时间0:03:08

# ps ef | grep大师
根1343 31610 0 02:59分/0就是grep大师
3228 1 0 2016根?00:01:33/usr/libexec/postfix/master
dbadmin 11912 11892 0 02:56 ?就是perl/usr/local/bin/masterha_manager - conf=/etc/尼古拉斯/test.cnf——ignore_last_failover
可以看到masterha_manager已经启起来了


4,测试

直接杀掉masterha_manager进程模拟masterha_manager异常退出:
# ps ef | grep大师
根1343 31610 0 02:59分/0就是grep大师
3228 1 0 2016根?00:01:33/usr/libexec/postfix/master
dbadmin 11912 11892 0 02:56 ?就是perl/usr/local/bin/masterha_manager - conf=/etc/尼古拉斯/test.cnf——ignore_last_failover

使用主管监控尼古拉斯masterha_manager进程