我们在用尼古拉斯自带的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